私は最近Ubuntu 9.04にアップグレードしましたが、gemsの使用に問題があります。 Ruby、Rubygems、およびRailsをapt-getを使用してインストールしました。Rails
コマンドは機能します。
次に、カピストラーノと、herokuなどの他の宝石をインストールしました。そのために、次のコマンドを使用しました。
Sudo gem install XXX
cap
コマンドを使用する場合、機能しません。
bash: cap: command not found
他のgemコマンドと同じです。
Gemコマンドが機能するために何か特別なことはありますか?
gem environment
コマンドを使用して、gemが保存されている場所を見つけることができます。例えば:
chris@chris-laptop:~$ gem environment
RubyGems Environment:
- RUBYGEMS VERSION: 1.3.2
- Ruby VERSION: 1.8.7 (2008-08-11 patchlevel 72) [i486-linux]
- INSTALLATION DIRECTORY: /usr/lib/Ruby/gems/1.8
- Ruby EXECUTABLE: /usr/bin/Ruby1.8
- EXECUTABLE DIRECTORY: /usr/bin
- RUBYGEMS PLATFORMS:
- Ruby
- x86-linux
- GEM PATHS:
- /usr/lib/Ruby/gems/1.8
- /home/chris/.gem/Ruby/1.8
- GEM CONFIGURATION:
- :update_sources => true
- :verbose => true
- :benchmark => false
- :backtrace => false
- :bulk_threshold => 1000
- REMOTE SOURCES:
「GEM PATHS:」セクションを見ると、gemがラップトップの2つの場所に保管されていることがわかります。/usr/lib/Ruby/gems/1.8
またはホームディレクトリの.gem
ディレクトリです。
また、実行可能ファイルがEXECUTABLE DIRECTORY(この場合は/usr/bin
)に保存されていることもわかります。
/usr/bin
が私のパスにあるため、これによりcap
、merb
、Rails
などを実行できます。
何らかの理由でEXECUTABLE DIRECTORYがパス上にない場合(たとえば/var/lib/gems/1.8/binの場合)、PATH変数を更新する必要があります。
Bashシェルを使用していると仮定します。シェルプロンプトで次のように入力すると、現在のセッションでこれをすばやく行うことができます。 /var/lib/gems/1.8/bin
をパスに追加するふりをしましょう:
export PATH=$PATH:/var/lib/gems/1.8/bin
そしてリターンを押します。これにより、現在のパスの最後に新しいディレクトリが追加されます。 $PATH
と/var/lib/gems/1.8/bin
の間のコロンに注意してください
すべてのセッションの値を設定するには、.profile
または.bashrc
ファイルのいずれかを編集し、ファイルの最後に同じ行を追加する必要があります。私はいつも.bashrc
ファイルを編集しますが、それは私がいつもしてきたこと以外の理由はありません。終了したら、ファイルを保存し、次のように入力して環境を更新します。
bash
シェルプロンプトで。これにより、.bashrc
が再読み取りされます。
次のように入力することにより、$PATH
の現在の値をいつでも確認できます。
echo $PATH
シェルプロンプトで。
これは自分のサーバーの1つのサンプルです。ユーザー名は「chris」で、マシン名は「chris-laptop」です。
chris@chris-laptop:~$
chris@chris-laptop:~$ echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games
chris@chris-laptop:~$
chris@chris-laptop:~$ export PATH=$PATH:/var/lib/gems/1.8/bin
chris@chris-laptop:~$
chris@chris-laptop:~$ echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/var/lib/gems/1.8/bin
chris@chris-laptop:~$
" Ruby gemはインストールされていてもロードされません "は、複数の異なるバージョンのRubyを使用する一般的な問題を強調しています。 Gem環境とGemパスが同期しなくなる場合があります。
rb(main):003:0> Gem.path
=> ["/opt/Ruby1.9/lib/Ruby1.9/gems/1.9.1"]
irb(main):004:0> exit
ここでの任意のRubyプロセスは、宝石を1か所でのみ探しています。
:~/$ gem env
RubyGems Environment:
- RUBYGEMS VERSION: 1.3.7
- Ruby VERSION: 1.9.1 (2009-05-12 patchlevel 129) [x86_64-linux]
- INSTALLATION DIRECTORY: /opt/Ruby1.9/lib/Ruby/gems/1.9.1
- Ruby EXECUTABLE: /opt/Ruby1.9/bin/Ruby1.9
- EXECUTABLE DIRECTORY: /opt/Ruby1.9/bin
- RUBYGEMS PLATFORMS:
- Ruby
- x86_64-linux
- GEM PATHS:
- /opt/Ruby1.9/lib/Ruby/gems/1.9.1
- /home/mark/.gem/Ruby/1.9.1
- GEM CONFIGURATION:
- :update_sources => true
- :verbose => true
- :benchmark => false
- :backtrace => false
- :bulk_threshold => 1000
- REMOTE SOURCES:
- http://rubygems.org/
Gem環境の出力を注意深く見てください:
- GEM PATHS:
- /opt/Ruby1.9/lib/Ruby/gems/1.9.1
これは、Gem.pathによって返されるパスとは異なります。
["/opt/Ruby1.9/lib/Ruby1.9/gems/1.9.1"]
lib/Ruby
をlib/Ruby1.9
に変更した原因を正確に説明するのは難しいですが、開発者は複数のRubyバージョン。簡単なmv
またはln
は問題を解決します。
複数のRuby=バージョンを使用する必要がある場合は、実際に rvm を使用する必要があります。
@Chrisが述べたように、gems環境をパスに追加する必要があります。これを行うには:
echo 'export PATH=$PATH:/var/lib/gems/1.8/bin' | tee --append ~/.bashrc
Gemがstoredであるフォルダーは、PATH上にある必要があります。たとえば、私のフォルダーは次のとおりです。
/home/victor/.gem/Ruby/1.8/bin
入力してパスを確認します
echo $PATH
現在、ubuntu 9.04でrubygemsをインストールすると、この問題が発生することがわかりました。 「gem環境」では、実行可能ディレクトリが「/ usr/bin」ではなく「/var/lib/gems/1.8/bin」であることに気付きました...これはrubygemsまたはubuntu 9.04の問題ですか?
私が遭遇した解決策は、これを行う$ PATHに「/var/lib/gems/1.8/bin」を追加することです。export PATH = $ PATH:/var/lib/gems/1.8/binしかし、保存されません...どうすればパスを保存できますか?
ありがとう...
解決策:coloquei o export PATH = $ PATH:/var/lib/gems/1.8/bin no〜/ .bashrc! =]
mkmfはRuby1.9.1-devパッケージの一部です。このパッケージには、Ruby 1.9.1。の拡張ライブラリに必要なヘッダーファイルが含まれています。Ruby1.9.1-devパッケージをインストールする必要があります。
Sudo apt-get install Ruby1.9.1-dev