拡張機能がビルドされていないためGEMを無視します


133

仕事用と家庭用の両方のコンピューターで、最近Rubyを2.3.1にアップグレードしましたruby-installchrubyRubyスイッチャーとして使用しています。

私の端末でこの警告が表示され始めました:

Ignoring bcrypt-3.1.11 because its extensions are not built.  Try: gem pristine bcrypt --version 3.1.11
Ignoring bcrypt-3.1.10 because its extensions are not built.  Try: gem pristine bcrypt --version 3.1.10
Ignoring binding_of_caller-0.7.2 because its extensions are not built.  Try: gem pristine binding_of_caller --version 0.7.2
Ignoring byebug-9.0.5 because its extensions are not built.  Try: gem pristine byebug --version 9.0.5
Ignoring byebug-5.0.0 because its extensions are not built.  Try: gem pristine byebug --version 5.0.0
Ignoring concurrent-ruby-ext-1.0.2 because its extensions are not built.  Try: gem pristine concurrent-ruby-ext --version 1.0.2
Ignoring debug_inspector-0.0.2 because its extensions are not built.  Try: gem pristine debug_inspector --version 0.0.2

私の仕事、コンピューターでは、リストははるかに長くなりましたが、解決は簡単でした。私が提案したものを試したgem pristine GEMところ、宝石が見つからないことがわかりましたので、私は走りましたgem install GEM、そしてそれはそれを解決しました。

自宅では何も機能していません。

常識と他のさまざまなスタックの質問から、私が試したもの:

  • gem pristine GEM
  • gem pristine --all
  • 宝石のアンインストールと再インストール
  • gem update
  • gem update --system
  • bundle update
  • アンインストールと再インストール bundler
  • アンインストールと再インストールrails(ただし、Rails固有の問題ではありません。)
  • 削除する ~/.bundle/
  • XCodeいくつかの拡張機能を開いてインストールできるようにする必要はありましたが、何も修正されませんでした。)
  • brew doctorすべての小さな問題を実行して解決し、brew updateそしてbrew upgrade
  • gem install curb (私はこの宝石がこの問題と何をしているのか想像できませんが、2人の異なる人が同じ警告に対する修正の最後のステップとしてそれを挙げました。)

1
gemがインストールされていない場合にも同じ警告が表示されます。アンインストールbcryptしても、2つの警告が表示されました。
Phillip Longman

1
バンドラーを更新しましたか?アンインストールして再インストールすると、Gemfile.lockの内容が使用されます。Bundlerは拡張機能を作成する人です。また、出力には複数のバージョンのgemがリストされているので、これがそのバージョンのrubyのシステム全体であることを知っておく必要があります(つまり、再構築する複数のgemがあることになります)。
アンソニー

Railsプロジェクトではなくホームフォルダーにいたため、Gemfileはありませんでした。
Phillip Longman

同じ問題が私にも起こりました(rvmを使用)。gem pristine --all動作しませんでした。バンドラーを含むすべての宝石を削除することで解決しました。次にgem install bundlerbundle install
David Watson

私の場合、それはvim拡張によって引き起こされました。それを回避するために、vim = "rvm use system do vim"というエイリアスを作成しました。しかし、私はvimを終了したときに警告を表示しただけなので、他の状況で表示されている場合、これはおそらく当てはまりません。
Brian Deterling

回答:


179

私は今日この正確な問題に遭遇しました-インストールされていない宝石に対してこのような警告が出ます!

...まあ、それは宝石インストールされたことがわかります-私がchrubyでアクティブに設定したものとは異なるルビー(2.2.3 vs 2.3.1)の場合。

すべての異なるルビーに切り替えてgem pristine --all、それらのすべてで実行すると、問題が解決しました。


3
これは、現在のルビ(rvmを使用)でのみこれを行うために機能しました。多分これはあまりにも多くのクリーンアップをやってから誰かを防ぐ;)
サンドロ・L

1
時にはgem pristine --all役に立たないことがあります。詳細については、別の質問この回答を参照してください。
GDP2

gem pristine --all権限の問題がある場合は、を確認する必要がありますwhich rubybrew link --overwrite ruby && source ~/.bash_profileそして走るgem pristine --allことが役立つかもしれない
Chris Yim

これらの解決策のどれも私のために働いていません、そして私はこれと同じ問題を抱えています。
Alex Cohen

19

私はこの問題に遭遇し、以前にインストールしたすべてのRubyバージョンを削除するまで、上記と同じコマンドをすべて実行しました。ただし、エラーは解決しませんでした。

結局のところ、のさまざまな(以前にアンインストールされた)バージョンには、残った宝石がいくつかありました~/.gem/ruby/。使用しなくなったフォルダを削除すると、エラーが消えました。


2
これでうまくいきました。rm -rf。私は以前、すべての宝石を手付かずに初期状態でインストールしようとしましたが、役に立ちませんでした。
StevenNunez 16

10

今日もこの問題があり、エディター全体がエラーメッセージで赤く点滅したため、入力できなかったためにイライラしました。

正確に何が原因であるかは完全にはわかりませんが、複数のルビーバージョンまたは複数のルビーバージョンマネージャーが インストールされていて、それらが互いに上書きし、そうでなければ宝石へのパスをめちゃくちゃにするためです。

このgemコマンドは、rbenvとrvmがある場合にも上書きされます。

入力して、インストールしたものを確認します。

which rvm
which rbenv
which chruby

それらのいずれかがインストールされている場合は、パスを返します。次に、それらを削除し、すべてのディレクトリを完全にクリーンアップして、クリーンインストールから始めます。


削除する

これが私がrvmに対して行ったことです。

rvm implode
gem uninstall rvm
rm -rf ~/.rvm
rm -rf ~/.rvmrc

これが私がrbenvにしたことです

最初にhttps://github.com/meowsus/rbenv-cleanをインストールし、次に

rbenv clean
sudo apt-get remove rbenv
rm -rf ~/.rbenv

再インストール

次に、作業するためのクリーンなホームディレクトリがあります。Ubuntu 14.04にRuby 2.1.4をインストールする方法で rbenvを再インストールしました。そして最後に;

rbenv rehash

RVM関連のものを削除するだけで、macOSでこの問題が修正されました
neu242 '23

6

私は上記を含むすべてを行いました

  • xcode-select --install
  • ルビーを再インストール
  • すべての宝石を再インストールする
  • 原始的な宝石-すべて

しかし、問題は私にとって同じでした。最後の希望としてMacを再起動したところ、警告メッセージが消えました。

奇妙ですが、StackOverflowですべてを試した後でこの問題に苦労している人がいる場合は、マシンを再起動してみてください。


4
再起動のヒントを共有していただきありがとうございます。Macでも同じ問題があり、新しいターミナルセッションを開始するだけで解決できました。
リビー

3

RVMをインストールした場合、別のバージョンをインストールしたためにエラーが発生する可能性があります。

役に立たないバージョンをチェックして削除しますが、これは良い方法ではないと思います。とにかくエラーはなくなりました。

rvm list
rvm use ruby-version
rvm remove ruby-useless-version

ココアポッドを更新した後、.rvm GEM_HOMEに注入する必要があります

gem uninstall cocoapods
gem install cocoapods

おそらく、gem pod COMMANDに関するエラーをスローします。minitestgem install minitest


2

TL; DR-Rubyの宝石は、シンボリックリンクから実行したり、組み込まれた場所から移動した(埋め込まれたシバンのため)ルビーは好きではありません

Rubyディレクトリが呼び出されるか、環境変数がシンボリックリンクされたディレクトリを指すか、コピーまたは名前が変更された場合、このメッセージが表示される可能性があります。私はchrubyを使用しており、シンボリックリンク/opt/rubies/-> でした/usr/local/ruby/が、Rubyの動的ライブラリ検索ロジックはこれではうまく機能しません。

私の場合の解決策は、シンボリックリンクを実際のルビーに置き換えて、各Rubyで/opt/rubies/実行gem pristine --allすることでした。RVMまたはRbenvを使用している他のユーザーは、最初からやり直さずに頑張ってください。

これは正確な問題ではないかもしれませんが、うまくいけば役に立ちます。


1
gem pristine --allそれらすべての部分で実行されていることが判明しました。この死んだ質問を復活させてくれてありがとう。私はそれをすべて燃やして最初からやり直すことに近かった。
Phillip Longman、2016年

2

ここに自分の味を追加します。私はrbenvHomebrewを介してインストールされたものを使用し、これらの4つの「無視...拡張機能がビルドされていません」というメッセージを受け取りました。具体的には:

Ignoring bcrypt-3.1.12 because its extensions are not built.  Try: gem pristine bcrypt --version 3.1.12
Ignoring bindex-0.5.0 because its extensions are not built.  Try: gem pristine bindex --version 0.5.0
Ignoring bootsnap-1.3.2 because its extensions are not built.  Try: gem pristine bootsnap --version 1.3.2
Ignoring byebug-10.0.2 because its extensions are not built.  Try: gem pristine byebug --version 10.0.2

私はこのスレッドで運のないことをたくさん試しました。最後に私の場合、私はしました:

  • brew uninstall rbenv
  • rm -rf ~/.rbenv
  • brew install rbenv

この時点ではまだエラーが発生していましたが、今は対処できるRubyバージョンが1つしかありませんでした。

$ rbenv versions
* system (set by /Users/will/.rbenv/version)

この時点で試してみましsudo gem pristine --allたが、システムのGemsディレクトリに対する権限が拒否されました。

だから私は通り抜けて、それぞれの宝石を原始的に走りました、

sudo gem pristine bcrypt --version 3.1.12 (等)

そして最後に、エラーはなくなりました。


1

これは古いスレッドですが、私はこの問題を自分で見つけました。

マシンを再起動する必要はありません。環境を更新する必要があるだけです。これを行うには、rehashコマンドを使用します。

rehash

manページから: rehash command re-computes the internal hash table of the contents of directories listed in the path environmental variable to account for new commands added.


1
どのOSについて話しているのですか?
rbanffy

rehashまたはhash -rbashは* nixで使用できるシェルコマンドです。Cシェルが起動すると、パス内のすべてのコマンド(各コマンド名とその絶対パス名)のハッシュテーブルが作成されます。したがって、cshの実行を開始した後、パスに沿ったディレクトリに新しいプログラムが追加された場合は、シェルのrehashコマンドを使用してハッシュテーブルを再構築する必要があります。(cf:docstore.mik.ua/orelly/unix3/upt/ch27_06.htm
yacc

1

私はこの問題を抱えていましたが、をtmux使用してセッションを開始したときだけでしたtmuxinator

それは、を使用tmuxinatorしてbrewインストールする代わりにから使用しているためですgem install。多分chruby同時に使用することも問題に貢献した。

p / s:未使用のルビーも削除しました~/.gem/rubyが、これがこの問題を解決した理由です。


1

gem pristine --all最初は実行しても効果がありませんでしたが、次に気づきました。実行しているスクリプトは次の行で始まりました。

#!/usr/bin/ruby

私のmacOSシステム(Catalinaですが、重要ではないと思います)では、これはRVMによってインストールされたものではなく、システムに付属しているRubyを指します。実行gem pristine --allするとRVMのインストールが修正されましたが、私のスクリプトは別のバージョンのRubyを呼び出していました。

私の修正envは、現在のシェルので指定されているRubyを呼び出すコマンドを使用することでしたPATH。スクリプトの先頭行をこれに変更すると、次のように修正されます。

#!/usr/bin/env ruby


ちょうど私に起こった–ありがとう!これはbundle install、RVM Rubyスイッチャーを介して選択されたルビのgem(およびそのネイティブ拡張)をインストールしたことを意味します。この場合、システムRubyを参照するスクリプトはそれらを見つけることができません。あなたのソリューションは、Rubyスクリプトとgemをユーザーがインストールしたルビーで動作させるための標準的な方法です(を参照)。
tanius

これは私を正しい軌道に乗せました!私の場合、tmuxinatorをutil(特定のプロジェクトのバンドルされたdepではない)にしたかったので、Ubuntuにインストールしました。そうしてapt purge tmuxinator、それを機能gem install tmuxinatorさせました。非プロジェクトrubyバージョンをアップグレードするときはいつでもgemをインストールする必要があるでしょうが、私はこれの方が好きです。ありがとう!
迷宮

1

Mac OS Catalina、brew、およびrbenvの実行...

今日この正確な問題に遭遇し、ここですべての答えを調べた後、私は最終的にこのエラーの別の理由に遭遇しました。

Ignoring nokogiri 1.10.7 because its extensions are not built. Try: gem pristine nokogiri --version 1.10.7

そしてもちろん、原始的な宝石は何もしませんでした。

私の問題は、rbenvをオーバーライドするハードコードされたGEM_HOMEおよびGEM_PATH環境変数でした。

したがって、〜/ .zshrcにGEM_PATHとGEM_HOMEを設定していないことを確認してください



0

同じ問題があり、rbenvを使用しています。何らかの理由で、グローバルrbenv設定が失われました。この問題を修正するには、グローバルバージョンをrbenvバージョンの1つに設定します...たとえば、次のようにします。

rbenvグローバル2.5.1


0

これは、Macで開発してDockerイメージをビルドする場合の問題でもあります。https//forums.aws.amazon.com/thread.jspa? messageID = 879802&tstart = 0

"bundle install --deployment"を実行すると、bundleはgemを含むベンダーディレクトリを作成します。これにはgemがローカルフォルダーに含まれますが、プラットフォームのネイティブ拡張のみが含まれることに注意してください。macOSを使用している場合、これはダーウィンになります。64ビットx86 linux環境でこのプロセスを繰り返す必要があります。


0

新しいターミナルセッションを開始するというリビーの提案(彼女がキムのセバスチャンの回答にコメントした)は私にはうまくいきました。他のどれよりもはるかに速いので、私はそれを答えにしたかったので、それがより目に見えるようになりました。


0

私の場合、実行しようとしていましたpristine --allが、次のようになりました:

Ignoring ffi-1.11.1 because its extensions are not built.  Try: gem pristine ffi --version 1.11.1
Ignoring jaro_winkler-1.5.3 because its extensions are not built.  Try: gem pristine jaro_winkler --version 1.5.3
Ignoring psych-3.1.0 because its extensions are not built.  Try: gem pristine psych --version 3.1.0
/.rbenv/versions/2.3.1/lib/ruby/2.3.0/rubygems/core_ext/kernel_require.rb:55:in `require': incompatible library version - /.gem/gems/psych-3.1.0/lib/psych.bundle (fatal) 

次に、Users/{{user.name}}⁩/⁨.gem⁩実行する必要があるためbundle install --force、その時点でコンテンツを削除し、すべてを再インストールし、コマンドpristine --allは期待どおりに機能しました


0

RubyMine IntelliJの場合、このソリューションは私にとってうまくいきました

私は2つの異なる端末が使用されRVMていましたruby<Version>

解決:

エラーを解消するには、RVMバージョンに切り替える必要がありました。 Preferences>Languages&Frameworks>Ruby SDK

エラー:

Ignoring executable-hooks-1.6.0 because its extensions are not built. Try: gem pristine executable-hooks --version 1.6.0 rubymine

Ignoring gem-wrappers-1.4.0 because its extensions are not built. Try: gem pristine gem-wrappers --version 1.4.0

ここに画像の説明を入力してください

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.