13

ffi gem をインストールしようとすると、エラーが発生します。

~ - 16:54>gem i ffi
Building native extensions.  This could take a while...
ERROR:  Error installing ffi:
        ERROR: Failed to build gem native extension.

        rake RUBYARCHDIR=/home/mdemare/.rvm/gems/ruby-1.9.2-p136/gems/ffi-1.0.6/lib RUBYLIBDIR=/home/mdemare/.rvm/gems/ruby-1.9.2-p136/gems/ffi-1.0.6/lib
/home/mdemare/.rvm/rubies/ruby-1.9.2-p136/lib/ruby/site_ruby/1.9.1/rubygems.rb:370:in `bin_path': can't find gem rake ([">= 0"]) with executable rake (Gem::GemNotFoundException)
        from /home/mdemare/.rvm/gems/ruby-1.9.2-p136/bin/rake:19:in `<main>'

Gem files will remain installed in /home/mdemare/.rvm/gems/ruby-1.9.2-p136/gems/ffi-1.0.6 for inspection.
Results logged to /home/mdemare/.rvm/gems/ruby-1.9.2-p136/gems/ffi-1.0.6/gen/gem_make.out

ネイティブ拡張機能を使用して gem をインストールしているときに、あらゆる種類のエラーが頻繁に発生するため、Ubuntu のインストールに何か問題があると思いますが、何が原因かわかりません。問題の診断に必要な情報を投稿します。

編集: ffi gem (最後の 2 行目) に移動し、6 行目の rake 行を実行すると、「RubyGem rake-compiler が見つかりませんでした」というメッセージが表示されます。

gem i rake-compiler を実行し、再度 rake を実行すると、次のようになります。

configure: error: source directory already configured; run "make distclean" there first
make: *** [/home/mdemare/.rvm/gems/ruby-1.9.2-p136/gems/ffi-1.0.6/build/x86_64-linux/ffi_c/1.9.2/libffi/.libs/libffi_convenience.a] Error 1
rake aborted!
Command failed with status (2): [make...]

アップデート:

これらは私のレーキgemspecです:

~ - 10:59>find ~/.rvm/ -name 'rake-0.8.7.gemspec'
~/.rvm/gems/ruby-1.9.2-p136/specifications/rake-0.8.7.gemspec
~/.rvm/gems/ruby-1.9.2-p136@global/specifications/rake-0.8.7.gemspec
~/.rvm/rubies/ruby-1.9.2-p136/lib/ruby/gems/1.9.1/specifications/rake-0.8.7.gemspec

最後のものは gem が見える場所ですが、その gemspec は最初のものとは異なり、実行可能ファイルは含まれていません。ただし、長いものをコピーしても問題は完全には解決されません-rake実行可能ファイルが見つからないファイルが表示されます。

4

5 に答える 5

13

これにより、ボストンハックデーでVagrant(FFIが依存関係になっている)をインストールしようとしたときに、かなりの悪化を引き起こしました。結局、多くの時間を無駄にして、問題を回避するためにマシンを切り替えました。

事後、私はうまくいくハックを見つけました(より良い解決策があると確信していますが)。エラーメッセージが文句を言っているファイル

~/.rvm/gems/ruby-1.9.2-p180/bin/rake

他の同様のコピーとは異なり、先頭にパス設定のものがないため、これらの行を含むファイルの1つからこれらの行をコピーしました。

[以下の@danvの回答に従って一般化されています。改善してくれてありがとう!]

ENV['GEM_HOME']=ENV['GEM_HOME'] || '~/.rvm/gems/ruby-1.9.2-p180'
ENV['GEM_PATH']=ENV['GEM_PATH'] || '~/.rvm/gems/ruby-1.9.2-p180:~/.rvm/gems/ruby-1.9.2-p180@global'
ENV['PATH']='~/.rvm/gems/ruby-1.9.2-p180/bin:~/.rvm/gems/ruby-1.9.2-p180@global/bin:~/.rvm/rubies/ruby-1.9.2-p180/bin:' + ENV['PATH']

それは私のためにそれを修正しました。これは新しいUbuntu10.10のインストールであり、デフォルトのRubyインストール(問題の一部である可能性があります)がなく、RVMを使用してRuby1.9.2がインストールされています。ネイティブコンパイルを必要とするものを含め、他の多くのgemが正常にインストールされているため、問題はFFIに固有のものです。

于 2011-03-01T20:16:28.597 に答える
3

@Tom Morris - あなたの方法を試してみましたが、うまくいきました。

~/.rvm/gems/ruby-1.9.2-p180/bin/rake の 12 行目以降にパス仕様 (変更済み - 以下を参照) を挿入しました。

パスの仕様を変更し~て、ユーザーのホームに使用する一般的なものにしました。

ENV['GEM_HOME']=ENV['GEM_HOME'] || "~/.rvm/gems/ruby-1.9.2-p180"
ENV['GEM_PATH']=ENV['GEM_PATH'] || "~/.rvm/gems/ruby-1.9.2-p180:~/.rvm/gems/ruby-1.9.2-p180@global"
ENV['PATH']="~/.rvm/gems/ruby-1.9.2-p180/bin:~/.rvm/gems/ruby-1.9.2-p180@global/bin:~/.rvm/rubies/ruby-1.9.2-p180/bin:"+ ENV['PATH']

この修正を見つけてくれてありがとう!

于 2011-04-09T21:47:38.067 に答える
2

@Tim Morris と @danv に感謝します。回答やコメントが役立ちました。スーパーユーザー環境に基づいたセットアップに合わせて調整しました。これは私のサーバーで /usr/local/rvm/gems/ruby-1.9.2-p180/bin/rake がどのように見えるかです:

require 'rubygems'

version = ">= 0"
ENV['GEM_HOME']=ENV['GEM_HOME'] || "/usr/local/rvm/gems/ruby-1.9.2-p180"
ENV['GEM_PATH']=ENV['GEM_PATH'] || "/usr/local/rvm/gems/ruby-1.9.2-p180:/usr/local/rvm/gems/ruby-1.9.2-p180@global"

if ARGV.first =~ /^_(.*)_$/ and Gem::Version.correct? $1 then
  version = $1
  ARGV.shift
end

gem 'rake', version
load Gem.bin_path('rake', 'rake', version)
于 2011-04-12T17:03:50.443 に答える
0

インストーラーは rake を実行しようとしますが、見つからない場合は失敗します。

can't find gem rake ([">= 0"]) with executable rake (Gem::GemNotFoundException)

rake gem: をインストールする必要がありますgem install rake

于 2011-02-26T17:12:38.760 に答える