kiedy próbuję „sudo gem install rubocop”, otrzymuję ...
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
Wypróbowałem więc szereg rozwiązań, w szczególności te z /programming/22544754/failed-to-build-gem-native-extension-installing-compass (inny klejnot, ten sam błąd)
Próbowałem ponownie zainstalować RVM z opcją „rvminstall -disable-binary 2.2.0”, co zajęło trochę czasu, ale go nie naprawiłem
następnie spróbowałem $ "sudo apt-get install ruby-dev", co daje
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.
Próbowałem też „aktualizacji systemu klejnotów - system”, do którego dostaję ...
Latest version currently installed. Aborting.
Wszelkie sugestie będą mile widziane, ponieważ jestem całkowitym noobem i utknąłem.
rake
zainstalowany?Odpowiedzi:
Zrób,
sudo gem install rake
a następnie zrób to jeszczesudo gem install rubocop
raz i powinno działać.Wydaje się nie mieć znaczenia, że masz zainstalowaną odpowiednią wersję rake. Dla mnie
rake --version
zgłoszono,10.5.0
ale wciąż otrzymywałem ten sam komunikat o błędzie co ty.Patrząc na komunikat o błędzie, szuka
rake
konkretnej ścieżki, nie tylko nigdzie na moimPATH
:which rake
raporty/usr/local/bin/rake
, nie/usr/share/rubygems-integration/all/gems/rake-10.5.0/bin/rake
.W rzeczywistości, jak mówi komunikat o błędzie, nie ma pliku w
/usr/share/rubygems-integration/all/gems/rake-10.5.0/bin/rake
.Prawdopodobnie ma to związek z
rake
byciemapt-get install
ed zamiastgem install
ed.sudo gem install rake
tworzy ten plik.źródło
Byłem w stanie rozwiązać ten problem
Zobacz to zatwierdzenie na GitHub .
źródło
Kiedy odpowiedziałem na to w 2017 roku, byłem sceptycznie nastawiony do rozwiązania @ SeanHammond, ponieważ klejnot rake już się pojawił. Okazało się, że było to możliwe dzięki pakietowi rake Debiana i ich systemowi integracji rubygemów. Ponowne zainstalowanie klejnotu rake, według pana Hammonda, zadziałało dla mnie dzisiaj, ponieważ przesłoniło wersję Debiana, dlatego uniknęło podstawowego błędu. Cóż, najpierw powiedział:
Po zastosowaniu poprawki wstępnej do zgłaszania błędów, która mówi:
... co doprowadziło mnie do sukcesu:
To wystarczy, aby rubygemy znalazły zaktualizowany plik binarny:
@ Rozwiązanie ShaunJackman również dla mnie zadziałało. To może być sposób, w jaki Debian powinien to naprawić, chociaż wolałbym nie pozostawiać plików w katalogu na moim komputerze, które Debian może później chcieć zmienić.
Mniej bolesnym obejściem było ustawienie
rake=/usr/bin/rake
w środowisku, z którego zainstalowałem klejnot, który chciałem:... jak teraz zauważono w moim raporcie o błędach Debiana . Twoje sudo może potrzebować --preserve-env, aby przejść przez to ustawienie.
(We wcześniejszej wersji tej odpowiedzi twierdziłem, że „ekwiwalent
sudo gem install rainbow
rozwiązanego problemu”, ale okazuje się, że mój problem nie był równoważny. Mój problem nie dotyczył klejnotu, tęczy i rubocopa, ale właściwie gem2.1, mediawiki- gateway (lub jego następca, mediawiki_api) i unf. Powodem, dla którego najpierw ręcznie działała moja zależność, było to, że gem2.1 ma błąd, w wyniku którego woli instalować wersje wstępne jako zależności. Podejrzewam, że na podstawie kodu zamiast proza, że to ten błąd, Gdy zostanie poproszony o samodzielne zainstalowanie unf, zamiast tego słusznie wybiera wersję wydania, taką, która akurat używa ścieżki ExtConfBuilder rubygem, a nie RakeBuilder. To nie pomogłoby oryginalnemu plakatowi z ich problemem tęczy, ponieważ nie dostali wersji wstępnej. Przepraszam za długą dygresję, ale być może pomoże to komuś, kto boryka się z podobnym problemem).źródło
rake=rake
pracował