トラブルシューティング
ここでは、よくある問題とその解決策を探ります。
以下の解決策を試す前に、以下を確認してください。
- 以下のコマンドを実行して、最新のRVMバージョンを使用していることを確認してください。
rvm get stable
または、より冒険好きなら、rvm get head
- RVMファイルのソース読み込みが、シェル設定ファイル(.bash_profile //.zshrc)の*最後*に行われていることを確認してください。特に、$PATH、関数、エイリアスのカスタマイズの後です。
- ファイルに"&& return"が含まれていないことを確認してください。
- BashまたはZshのどちらかを使用していることを確認してください。RVMは他のシェルでは、せいぜいテストされていない程度です。
マルチユーザーインストール - sudoコマンドの使用
インストールプロセスはどちらのインストール方法でも似ていますが、マルチユーザー
構成をインストールする場合、'root'アカウントとして/からインストーラーを直接実行しないでください!必ず、権限のないユーザーアカウントからsudoコマンドを使用してください。これは、rootの環境とユーザーの環境の間で異なる変数があり、EUIDの変更の影響を受けないためです。また、インストール自体のコードチェックも関係しています。さらに、sudoを使用すると、現在のインストール用に存在する/etc/profile.d/rvm.shがロードされず、RVMがロードされません。これを自分で証明するには、以下を実行してください。sudo printenv | grep -i rvm
また、sudoコマンドはインストールプロセス中にのみ使用します。マルチユーザー構成では、sudoアクセスを必要とする操作は、RVM環境を保持し、それをsudoに渡すrvmsudoコマンドを使用する必要があります。ただし、コアインストールが完了すると、rvmsudoがまったく必要なくなるケースは非常に少ないことに注意してください!RVM自体の更新もその一つではありません。rvmグループのどのユーザーでも、RVM、Ruby、gemsetを更新できます。インストール後にsudoを使用する理由は絶対にありません。
'rvm'グループに追加されたユーザーがログアウトしてから再度ログインしてrvmグループのメンバーシップを取得すると、以下を実行できるようになります。
rvm get headまたは
rvm get stableRVM自体を更新します。また、にリストされているRubyをインストールすることもできます。
rvm list known既存のRubyのアップグレードやgemsetの作成も同様です。rvmグループにいないユーザーは、RVMを使用することしかできず、変更することはできません。これには、プロジェクトの.rvmrcファイルに対する「信頼」の追加や変更も含まれます。
注:グループメンバーシップは最初のログイン時にオペレーティングシステムによってのみ評価されるため、ユーザーはrvmグループのメンバーシップを取得するために、必ずログアウトして再度ログインする必要があります。
ruby-debugとruby 1.9
ruby-debug19のインストールに問題がある場合は、次のコマンドでインストールしてみてください。
$ rvm reinstall 1.9.3 --patch debug --force-autoconf $ gem install ruby-debug19 -- --with-ruby-include="${MY_RUBY_HOME/rubies/src}"
Ruby 1.8.7でcallback.funcエラーが発生し続ける。
これは通常、プレリリースのコンパイラを使用していることが原因です。この場合、通常はgcc-4.6で発生します。この問題はgcc-4.5では発生しません。gcc-4.5をインストールし、次の変数を追加することをお勧めします。
CC=/usr/bin/gcc-4.5
$rvm_path/environments/[ruby_version_string]ファイルに。ほとんどの人は、ArchLinuxを使用しているときにこの問題に遭遇するでしょう。注:いかなる種類のプレリリースコンパイラもサポートしていません。
i386(32ビット)
Ruby Xをi386(32ビット)としてコンパイルする必要があります。
CFLAGS='-m32' CXXFLAGS='-m32' LDFLAGS='-m32' rvm install X
また、OSXでは以下を使用するだけで十分です。
rvm install X --32
Bus Error / Segfault
実行しようとしたコマンドでセグメンテーションフォルトが発生した場合、おそらく以下のようなものです。
[BUG] cross-thread violation on rb_gc()
これまで私が確認したすべてのケースで、結局、C拡張機能を持つRuby gem/ライブラリが、ロードしようとしているRubyおよび/またはアーキテクチャとは異なるものに対してコンパイルされていたことが原因でした。アプリケーションで使用しているC拡張機能を持つgemをアンインストール&再インストールして、このバグを見つけ出してください。
MySQL
Ruby用のMySQL gemのインストールに問題がある場合は、MySQLページを参照してください。
OSXで.bash_profileがロードされない。
OSXで.bash_profileが正しくロードされない場合は、次の3つのうちいずれかを行う必要があります。
- ~/.bash_profileという名前のファイルを作成し、そこにRVMのソース行を追加します。
- ~/.profileにRVMのソース行を追加します。
- ターミナルの設定で、シェルをデフォルトの/usr/bin/loginから/bin/bashに変更します。
Passenger
RVMでインストールされたRubyでPassengerを実行するのに問題がある場合は、おそらくPassengerページの'.bin/[ruby string]'というコメントを見逃しています。
Readline
readlineに関連するコンパイル時にエラーが発生した場合は、readlineページを参照してください。
require "iconv" # => false ?!
Ruby/irbでiconvが利用できない問題がある場合は、iconvページを参照してください。
curlが失敗する、「curl is」?!
もし、これが出力される場合
++ curl is /opt/local/bin/curl -O -L -s -C - ftp://ftp.ruby-lang.org/pub/ruby/1.8/ruby-1.8.6-p383.tar.gz curl: Remote file name has no length! curl: try 'curl --help' or 'curl --manual' for more information
これは、'which'コマンドに'type'コマンドをエイリアスまたはシンボリックリンクしている可能性があります。これを元に戻すと、RVMが機能するはずです。
pg gemをインストールできないようです。
pg_configファイルの場所を含むPATHの変数代入を先頭に付加します。例:
PATH=/usr/local/bdsm/pkg/postgresql/active/bin:$PATH gem install pg --no-rdoc --no-ri
Bashでcdのタブ補完(およびおそらく$CDPATH)に問題があります。
RVMは、'.rvmrc'ファイルのディレクトリごとのチェックを実行するためにcdにフックします。ディレクトリのタブ補完は引き続き機能するはずですが、一部の人々は問題を報告しています。RVMをインストールする前にタブ補完が機能していて、現在は機能していない場合は、RVM自体の中からcd補完を有効にすることができます。
以下を~/.bash_profileまたは~/.profileに必要に応じて追加します。
export rvm_cd_complete_flag=1
この問題が発生した場合は、オペレーティングシステム、$BASH_VERSION、使用しているbash_completionのバージョンなどの詳細をFreenodeの#rvmまたはGithubで報告してください。正直なところ、bash_completionのcdのタブ補完は、RVMのcd関数にあるコードよりもはるかに堅牢であり、RVMでも引き続き機能するはずです。(実際、OSX 10.6のBash 3.2とBash 4、OpenBSD 4.7のBash 4、Debian 5.0.6のBash 3.2ではすべて動作します。これらはすべて、最新のbash-completionでテストされました。もしそれがない場合は、試してみることをお勧めします。)それにもかかわらず、一部の人々は問題を報告しており、RVM内のcd補完が役に立っています。
インタープリターのビルドがRDOC関連のエラーで失敗する。
ビルドプロセスがパス内にある既存のrdocをピックアップするためにビルドが失敗することがあります。これが発生した場合は、インストール中にドキュメントがビルドされないようにする構成オプションを追加できます。
rvm install--disable-install-doc
または、現在の環境に新しいバージョンのrdocをインストールしてみてください。そうすれば、新しいrdocは、インストールしているより新しいバージョンのRubyからのドキュメントを処理できるようになるはずです。
システム全体のインストールを含め、システムからRVMのすべての痕跡を完全に消去するにはどうすればよいですか?
これが「cleanout-rvm」と名付けたカスタムスクリプトです。通常のユーザーとして「rvm implode」を使用するか、システム全体のインストールで「rvmsudo rvm implode」を使用することもできますが、このスクリプトはRVMの外部に完全にステップアウトし、RVM自体を使用せずにRVMを消去するため、痕跡を残さないため便利です。
#!/bin/bash /usr/bin/sudo rm -rf $HOME/.rvm $HOME/.rvmrc /etc/rvmrc /etc/profile.d/rvm.sh /usr/local/rvm /usr/local/bin/rvm /usr/bin/sudo /usr/sbin/groupdel rvm /bin/echo "RVM is removed. Please check all .bashrc|.bash_profile|.profile|.zshrc for RVM source lines and delete or comment out if this was a Per-User installation."
zsh+oh-my-zshを使用していますが、rubygemsにシステムのRubyを使用しようとし続けます。
oh-my-zshでbundlerプラグインが有効になっているかどうかを確認してください。
set -x ; cd $some_project ; set -x Look in the output for 'within-bundled-project'. If you see that edit your .zshrc and remove the bundler plugin from the 'plugins=()' line, then log out of the shell and back in. Should all work now. The bundler plugin in oh-my-zsh overrides RVM's settings related to RubyGems for some reason.