web-dev-qa-db-ja.com

Ubuntuでgemを使用するにはどうすればよいですか?

私は最近Ubuntu 9.04にアップグレードしましたが、gemsの使用に問題があります。 Ruby、Rubygems、およびRailsをapt-getを使用してインストールしました。Railsコマンドは機能します。

次に、カピストラーノと、herokuなどの他の宝石をインストールしました。そのために、次のコマンドを使用しました。

Sudo gem install XXX

capコマンドを使用する場合、機能しません。

bash: cap: command not found

他のgemコマンドと同じです。

Gemコマンドが機能するために何か特別なことはありますか?

76
Arthur

私の宝石はどこですか?

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が私のパスにあるため、これによりcapmerbRailsなどを実行できます。

PATHを更新する

何らかの理由で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/Rubylib/Ruby1.9に変更した原因を正確に説明するのは難しいですが、開発者は複数のRubyバージョン。簡単なmvまたはlnは問題を解決します。

複数のRuby=バージョンを使用する必要がある場合は、実際に rvm を使用する必要があります。

138
Chris McCauley

@Chrisが述べたように、gems環境をパスに追加する必要があります。これを行うには:

echo 'export PATH=$PATH:/var/lib/gems/1.8/bin' | tee --append ~/.bashrc
5
Adam Greenhall

Gemがstoredであるフォルダーは、PATH上にある必要があります。たとえば、私のフォルダーは次のとおりです。

/home/victor/.gem/Ruby/1.8/bin

入力してパスを確認します

echo $PATH
3
victor hugo

現在、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! =]

1
Rafael Souza

mkmfはRuby1.9.1-devパッケージの一部です。このパッケージには、Ruby 1.9.1。の拡張ライブラリに必要なヘッダーファイルが含まれています。Ruby1.9.1-devパッケージをインストールする必要があります。

Sudo apt-get install Ruby1.9.1-dev

0
Sohan