エラー:Rubocopをダウンロードしようとしたときにgem native extensionのビルドに失敗しました


13

「sudo gem install rubocop」を試してみると...

Building native extensions.  This could take a while...
ERROR:  Error installing rubocop:
    ERROR: Failed to build gem native extension.

    current directory: /var/lib/gems/2.3.0/gems/rainbow-2.2.1/ext
/usr/bin/ruby2.3 mkrf_conf.rb

current directory: /var/lib/gems/2.3.0/gems/rainbow-2.2.1/ext
/usr/bin/ruby2.3 -rubygems /usr/share/rubygems-integration/all/gems/rake-10.5.0/bin/rake RUBYARCHDIR=/var/lib/gems/2.3.0/extensions/x86_64-linux/2.3.0/rainbow-2.2.1 RUBYLIBDIR=/var/lib/gems/2.3.0/extensions/x86_64-linux/2.3.0/rainbow-2.2.1
/usr/bin/ruby2.3: No such file or directory -- /usr/share/rubygems-integration/all/gems/rake-10.5.0/bin/rake (LoadError)

rake failed, exit code 1

Gem files will remain installed in /var/lib/gems/2.3.0/gems/rainbow-2.2.1 for inspection.
Results logged to /var/lib/gems/2.3.0/extensions/x86_64-linux/2.3.0/rainbow-2.2.1/gem_make.out

そこで、特に/programming/22544754/failed-to-build-gem-native-extension-installing-compass(異なるgem、同じエラー)のソリューションをいくつか試しました。

「rvmreinstall --disable-binary 2.2.0」でRVMを再インストールしようとしましたが、しばらく時間がかかりましたが修正しませんでした

次に、「sudo apt-get install ruby​​-dev」を試しました。

Reading package lists... Done
Building dependency tree       
Reading state information... Done
ruby-dev is already the newest version (1:2.3.0+1).
The following packages were automatically installed and are no longer required:
  dkms linux-headers-4.4.0-53 linux-headers-4.4.0-53-generic
  linux-image-4.4.0-53-generic linux-image-extra-4.4.0-53-generic
  python-appindicator python-gconf python-gi python-glade2
  python-gobject python-pexpect python-ptyprocess python-xdg
Use 'sudo apt autoremove' to remove them.
0 upgraded, 0 newly installed, 0 to remove and 40 not upgraded.

私が手に入れた「gem update --system」も試しました...

Latest version currently installed. Aborting.

私は完全な初心者であり、立ち往生しているので、どんな提案も大歓迎です。


エラーが言うように、rakeインストールしましたか?
ムル

うん。最新バージョンがあります。
user642832

回答:


25

実行しsudo gem install rakeた後、やるsudo gem install rubocop再び、それが動作するはずです。

適切なバージョンのrakeがインストールされているかどうかは問題ではないようです。私のためにrake --version報告された10.5.0が、私はまだあなたと同じエラーメッセージが出ました。エラーメッセージを見ると、rake私のPATH:のどこでもではなく、特定のパスを探しています/usr/bin/ruby2.3: No such file or directory -- /usr/share/rubygems-integration/all/gems/rake-10.5.0/bin/rake (LoadError)which rakeレポート/usr/local/bin/rake、ない/usr/share/rubygems-integration/all/gems/rake-10.5.0/bin/rake。実際、エラーメッセージに示されているように、にはファイルがありません/usr/share/rubygems-integration/all/gems/rake-10.5.0/bin/rake。これはおそらく、edではなくedであったrakeことに関係しています。そのファイルを作成します。apt-get installgem installsudo gem install rake



2

2017年にこれに答えたとき、@ SeanHammondのソリューションには懐疑的でした。これは、rake gemがすでにインストールされているように見えるためです。これは、Debianのrakeパッケージとrubygems-integrationシステムを介して行われたことが判明しました。Hammond氏によれば、rake gemを再度インストールすると、Debianのバージョンを無効にして、根本的なバグを回避したため、今日私のために働きました。まあ、最初に言った:

martind@balance:~$ sudo gem2.1 install --no-ri --no-rdoc rake
Fetching: rake-12.3.1.gem (100%)
ERROR:  While executing gem ... (TypeError)
    no implicit conversion of nil into String
martind@balance:~$ 

エラー報告にアップストリーム修正を適用し後、次のように述べました。

rake's executable "rake" conflicts with an unknown executable
Overwrite the executable? [yN]  n
ERROR:  Error installing rake:
    "rake" from rake conflicts with installed executable from 
martind@balance:~$ 

...それで私は成功しました:

martind@balance:~$ sudo gem2.1 install --no-ri --no-rdoc --format-executable rake
Successfully installed rake-12.3.1
1 gem installed
martind@balance:~$ 

rubygemsが更新されたバイナリを見つけるにはこれで十分です。

martind@balance:~$ ruby2.1 -we 'puts(Gem.bin_path("rake", "rake"))'
/var/lib/gems/2.1.0/gems/rake-12.3.1/exe/rake
martind@balance:~$ ls -l /var/lib/gems/2.1.0/gems/rake-12.3.1/exe/rake
-rwxr-xr-x 1 root root 1182 Apr 17 15:03 /var/lib/gems/2.1.0/gems/rake-12.3.1/exe/rake
martind@balance:~$ 

@ShaunJackmanのソリューションは私にも役立ちました。これはDebianが修正すべき方法かもしれませんが、後でDebianが変更したいファイルを自分のマシンのディレクトリに残したくないのです。

苦痛の少ない回避rake=/usr/bin/rake策は、希望するgemをインストールした環境に設定することでした。

martind@balance:~$ rake=/usr/bin/rake sudo gem2.1 install --no-ri --no-rdoc mediawiki_api
Fetching: unf-0.2.0.beta2.gem (100%)
Building native extensions.  This could take a while...
Successfully installed unf-0.2.0.beta2
Fetching: mediawiki_api-0.7.1.gem (100%)
Successfully installed mediawiki_api-0.7.1
2 gems installed
martind@balance:~$ 

... 私のDebianバグレポートで指摘されいるように。sudoには、その設定を渡すために--preserve-envが必要になる場合があります。

(この回答の以前のバージョンでは、「sudo gem install rainbow解決したものと同等」と主張しましたが、私の問題は同等ではなかったことが判明しました。gem、rainbow、rubocopではなく、gem2.1、mediawiki-ゲートウェイ(またはその後継であるmediawiki_api)とunf。依存関係を手動でインストールすることが最初に私のケースで機能した理由は、gem2.1にバグがあるため、依存関係としてプレリリースバージョンをインストールすることを好みます。散文、バグはこれだと、unf自体をインストールするように求められた場合、代わりに、そして当然、RakeBuilderのパスではなくrubygemのExtConfBuilderコードパスを使用するリリースバージョンを選択します。プレリリース版を入手していないので、それは虹の問題で元のポスターを助けなかったでしょう。長い余談で申し訳ありませんが、おそらく同様の問題に直面している他の誰かを助けるでしょう)


1
私にとってはさらにシンプル:rake=rake働いた
アンソニーソティレ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.