「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
そこで、私は多くのソリューション、特に https://stackoverflow.com/questions/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.
私は完全な初心者であり、立ち往生しているので、提案は大歓迎です。
Sudo gem install rake
を実行してからSudo gem install rubocop
を再度実行すると、動作するはずです。
適切なバージョンのrakeがインストールされているかどうかは問題ではないようです。私にとってrake --version
は10.5.0
を報告しましたが、あなたと同じエラーメッセージがまだ表示されていました。エラーメッセージを見ると、rake
:/usr/bin/Ruby2.3: No such file or directory -- /usr/share/rubygems-integration/all/gems/rake-10.5.0/bin/rake (LoadError)
のどこでもではなく、特定のパスでPATH
を探しています。 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
にファイルはありません。これは、おそらくrake
がapt-get install
edではなくgem install
edされたことに関係しています。 Sudo gem install rake
はそのファイルを作成します。
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が変更したいファイルを自分のマシン上のディレクトリに残したくないのです。
苦痛の少ない回避策は、希望するgemをインストールした環境にrake=/usr/bin/rake
を設定することでした。
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-gateway(またはその後継のmediawiki_api)およびunf。依存関係を手動でインストールすることが最初に私のケースで機能した理由は、gem2.1にバグがあり、依存関係としてプレリリースバージョンをインストールすることを好むためです。散文ではなくコード、バグは this one であり、unf自体をインストールするように求められた場合、代わりに、そして、正しいバージョンを選択します。これは、たまたまrubygemのExtConfBuilderコードパスを使用するプレリリース版を入手できなかったため、元のポスターの虹の問題は解決しませんでした。長い余談で申し訳ありませんが、おそらく同様の問題に直面している他の人の助けになるでしょう。)
私はこの問題を解決することができました
Sudo mkdir -p /usr/share/rubygems-integration/all/gems/rake-10.5.0/bin
Sudo ln -s /usr/bin/rake /usr/share/rubygems-integration/all/gems/rake-10.5.0/bin/
GitHubでのこのコミット を参照してください。