77

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

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

sudo gem install XXX

コマンドを使用したい場合、cap機能しません:

bash: cap: command not found

他のgemコマンドも同様です。

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

4

5 に答える 5

139

私の宝石はどこにありますか?

コマンドを使用して、宝石が保存されている場所を見つけることができますgem environment。例えば:

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

シェルプロンプトで。

これは、私のユーザー名が「chris」で、マシン名が「chris-laptop」である、私自身のサーバーの 1 つのサンプルです。

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:~$ 

Gem が読み込まれません。

Ruby gems will not load even even without installed」は、複数の異なるバージョンの 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 プロセスは、その Gem を 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を使用する必要があります。

于 2009-05-26T10:23:38.997 に答える
5

@Chris が指摘したように、gems 環境をパスに追加する必要があります。これは次の方法で実行できます。

echo 'export PATH=$PATH:/var/lib/gems/1.8/bin' | tee --append ~/.bashrc
于 2011-08-08T20:09:33.100 に答える
3

gem が保存されているフォルダーはPATH にある必要があります。たとえば、私の場合は次のとおりです。

/home/victor/.gem/ruby/1.8/bin

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

echo $PATH
于 2009-05-26T09:07:20.650 に答える
0

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

sudo apt-get install ruby​​1.9.1-dev

于 2013-04-02T11:36:20.517 に答える