web-dev-qa-db-ja.com

拡張機能が構築されていないためGEMを無視する

職場のコンピューターと自宅のコンピューターの両方で、最近Ruby-installを使用してRubyを2.3.1にアップグレードしました。 chrubyをRubyスイッチャーとして使用します。

私は自分の端末でこの警告を見始めました:

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が見つからなかったので、gem install GEMを実行しましたが、それで解決しました。

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

常識やその他のさまざまなStackの質問から、私が試したもの:

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

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

...それで、gems were installed-chrubyでアクティブに設定したものとは異なるRuby(2.2.3対2.3.1)が判明しました。

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

126
sevenseacat

私はこの問題にぶつかり、上記と同じコマンドをすべて実行しました。以前にインストールしたRubyバージョンをすべて削除することもありました。ただし、エラーは持続しました。

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

15
opes

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

何がそれを正確に引き起こしたのかは完全にはわかりませんが、複数のRubyバージョンOR multiple Rubyがあるので、それはと考えていますバージョンマネージャーinstalledそしてそれらは互いに上書きし、そうでなければgemへのパスを台無しにします。

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/bernsie/rbenv-clean 、次に

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

再インストール

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

rbenv rehash
7
Simon Somlai

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

  • xcode-select --install
  • rubyを再インストールする
  • すべての宝石を再インストールする
  • gem pristine --all

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

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

4
Sebastian Kim

RVMをインストールしている場合、異なるバージョンをインストールしているため、エラーをキャッチしている可能性があります。

無駄なバージョンを確認して削除しますが、これは良くないアプローチだと思います。とにかくエラーがなくなりました。

rvm list
rvm use Ruby-version
rvm remove Ruby-useless-version

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

gem uninstall cocoapods
gem install cocoapods

おそらくpod COMMANDminitest gemに関するエラーをスローするので、– gem install minitest

3
dimpiax

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

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

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

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

2
user246672

新しい端末セッションを開始するというLibbyの提案(Sebastian Kimの答えについてコメントしました)は、私にとってはうまくいきました。他のどの製品よりもずっと速いので、答えをもっと見やすくするために答えにしたかったのです。

0
jim

これは古いスレッドですが、自分でこの問題に出くわしました。

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

rehash

マニュアルページから: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.

0
yacc

ここに独自のフレーバーを追加します。 Homebrewを介してインストールされたrbenvを使用し、これらの「無視...ビルドされていない拡張機能」メッセージのうち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

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

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

この時点で、Sudo gem pristine --allを試しましたが、システムのGemsディレクトリに対するアクセス許可が拒否されました。

だから私は通り抜けて、それぞれの宝石を手つかずに走らせました。

Sudo gem pristine bcrypt --version 3.1.12(など)

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

0
wrydere

同じ問題があり、rbenvを使用しています。何らかの理由で、私のグローバルrbenv設定が失われました。この問題を解決するために、グローバルバージョンをrbenvバージョンの1つに設定します...例えば:

rbenv global 2.5.1

0
Eric Jones

これは、Macで開発してからDockerイメージを構築するときにも問題になります。 https://forums.aws.Amazon.com/thread.jspa?messageID=879802&tstart=

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

0
Nathan Pierce

Vagrantのアンインストールと再インストールも機能します。インストーラーの.dmgイメージには、Vagrantを削除するunistall.tool bashスクリプトが含まれています。

ここでこのソリューションを見つけました: ビルトインではないVagrantおよびGemの拡張機能の更新

0
Jeff Wigal