it-swarm.com.de

Fehler: Fehler beim Erstellen der nativen Gem-Erweiterung beim Herunterladen von Rubocop

wenn ich "Sudo gem install rubocop" versuche, bekomme ich ...

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

Ich habe also eine Reihe von Lösungen ausprobiert, insbesondere die von https://stackoverflow.com/questions/22544754/failed-to-build-gem-native-extension-installing-compass (verschiedene Edelsteine, gleicher Fehler)

Ich habe versucht, RVM mit "rvm restart --disable-binary 2.2.0" neu zu installieren, was eine Weile gedauert hat, es aber nicht behoben hat

als nächstes habe ich $ "Sudo apt-get install Ruby-dev" ausprobiert

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.

Ich habe auch "gem update --system" ausprobiert, auf das ich ...

Latest version currently installed. Aborting.

Irgendwelche Vorschläge werden sehr geschätzt, da ich ein totaler Neuling bin und feststecke.

13
user642832

Mach Sudo gem install rake und dann Sudo gem install rubocop erneut und es sollte funktionieren.

Es scheint nicht wichtig zu sein, dass Sie die richtige Version von Rake installiert haben. Für mich hat rake --version10.5.0 gemeldet, aber ich habe immer noch die gleiche Fehlermeldung wie Sie erhalten. In der Fehlermeldung wird nach rake auf einem bestimmten Pfad gesucht, nicht irgendwo auf meinem 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 meldet /usr/local/bin/rake, nicht /usr/share/rubygems-integration/all/gems/rake-10.5.0/bin/rake. Und tatsächlich gibt es, wie die Fehlermeldung besagt, keine Datei unter /usr/share/rubygems-integration/all/gems/rake-10.5.0/bin/rake. Dies hat wahrscheinlich damit zu tun, dass rake statt apt-get installed gem installed. Sudo gem install rake erstellt diese Datei.

25
Sean Hammond

Als ich dies 2017 beantwortete, war ich skeptisch gegenüber der Lösung von @ SeanHammond, da der Rechen-Edelstein bereits installiert zu sein schien. Es stellte sich heraus, dass dies durch das Rake-Paket von Debian und dessen Rubygems-Integrationssystem geschehen ist. Das erneute Installieren des Rake-Gems, laut Mr. Hammond, funktionierte heute für mich, da es Debians Version überschritt und somit den zugrundeliegenden Fehler verhinderte. Nun, zuerst hieß es:

[email protected]:~$ 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
[email protected]:~$ 

Nachdem ich ein Upstream-Fix für die Fehlerberichterstattung angewendet hatte, lautete das:

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 
[email protected]:~$ 

... was mich zum Erfolg geführt hat:

[email protected]:~$ Sudo gem2.1 install --no-ri --no-rdoc --format-executable rake
Successfully installed rake-12.3.1
1 gem installed
[email protected]:~$ 

Damit können Rubygems die aktualisierte Binärdatei finden:

[email protected]:~$ Ruby2.1 -we 'puts(Gem.bin_path("rake", "rake"))'
/var/lib/gems/2.1.0/gems/rake-12.3.1/exe/rake
[email protected]:~$ 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
[email protected]:~$ 

@ ShaunJackmans Lösung hat auch bei mir funktioniert. Auf diese Weise sollte Debian das Problem möglicherweise beheben, obwohl ich lieber keine Dateien in einem Verzeichnis auf meinem Computer belassen möchte, das Debian später möglicherweise ändern möchte.

Eine weniger schmerzhafte Abhilfe war das Setzen von rake=/usr/bin/rake in der Umgebung, in der ich den gewünschten Edelstein installiert habe:

[email protected]:~$ 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
[email protected]:~$ 

... wie jetzt in mein Debian-Fehlerbericht ​​vermerkt. Ihr Sudo benötigt möglicherweise --preserve-env, um diese Einstellung zu durchlaufen.

(In einer früheren Version dieser Antwort behauptete ich, dass "das Äquivalent von Sudo gem install Rainbow es gelöst hat", aber es stellte sich heraus, dass mein Problem nicht äquivalent war. Mein Problem war nicht mit gem, Rainbow und rubocop, sondern tatsächlich mit gem2 .1, mediawiki-gateway (oder dessen Nachfolger mediawiki_api) und unf. Der Grund, warum die manuelle Installation der Abhängigkeit für meinen Fall zuerst funktioniert hat, war, dass gem2.1 einen Fehler aufweist, bei dem es bevorzugt, Vorabversionen als Abhängigkeiten zu installieren der Code statt der Prosa, dass der Fehler this one ist. Bei der Aufforderung, unf selbst zu installieren, wählt es stattdessen zu Recht eine Release-Version, die nur den ExtConfBuilder-Codepfad von Rubygem verwendet als sein RakeBuilder. Das hätte dem Original-Poster bei ihrem Rainbow-Problem nicht geholfen, da sie keine Vorabversion erhalten haben. Entschuldigung für den langen Exkurs, aber vielleicht hilft es jemand anderem, der sich einem ähnlichen Problem gegenübersieht.)

2
Martin Dorey

Ich konnte dieses Problem mit lösen

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/

Siehe dieses Commit auf GitHub .

2
Shaun Jackman