wake-up-neo.com

Ignorieren von GEM, da seine Erweiterungen nicht erstellt werden

Ich habe vor kurzem auf meinen Arbeits- und Heimcomputern ein Upgrade von Ruby auf 2.3.1 mit Ruby-install durchgeführt. Ich benutze chruby als meinen Ruby-Switcher.

Ich habe diese Warnung in meinem Terminal angezeigt:

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

Auf meiner Arbeit, Computer, war die Liste viel länger, aber leicht aufzulösen. Als ich den vorgeschlagenen gem pristine GEM ausprobierte, sagte er mir, dass er den Edelstein nicht finden konnte, also lief ich gem install GEM und löste das Problem.

Zu Hause funktioniert nichts.

Dinge, die ich aus dem gesunden Menschenverstand und verschiedenen anderen Stack-Fragen ausprobiert habe:

  • gem pristine GEM
  • gem pristine --all
  • deinstallieren und neu installieren des gem
  • gem update
  • gem update --system
  • bundle update
  • bundler deinstallieren und erneut installieren
  • deinstallieren und erneutes Installieren von Rails (Dies ist jedoch kein spezielles Problem von Rails.)
  • ~/.bundle/ löschen
  • XCode öffnen und einige Erweiterungen installieren lassen (es musste gemacht werden, aber es wurde nichts behoben.)
  • brew doctor ausführen und alle kleineren Probleme lösen, dann brew update und brew upgrade
  • gem install curb (Ich kann mir nicht vorstellen, was dieser Edelstein mit diesem Problem zu tun hat, aber zwei verschiedene Personen haben es als letzten Schritt ihrer Behebung auf dieselbe Warnung aufgeführt.)
76
Phillip Longman

Ich habe heute genau dieses Problem gefunden - Warnungen wie Edelsteine, die noch nicht einmal installiert waren!

... Nun, es stellte sich heraus, dass die Edelsteine ​​ wurden für einen anderen Ruby installiert waren als der, den ich mit chruby (2.2.3 vs. 2.3.1) aktiviert hatte. 

Das Wechseln zu allen verschiedenen Rubinen und das Ausführen von gem pristine --all auf allen von ihnen löste das Problem.

106
sevenseacat

Ich bin auf dieses Problem gestoßen und habe dieselben Befehle wie oben ausgeführt und sogar alle meine zuvor installierten Ruby-Versionen entfernt. Der Fehler blieb jedoch bestehen.

Es stellte sich heraus, dass in ~/.gem/Ruby/ noch einige Edelsteine ​​für die verschiedenen (zuvor deinstallierten) Versionen übrig waren. Nach dem Entfernen der Ordner, die ich nicht mehr verwendet habe, sind die Fehler verschwunden.

11
opes

Ich hatte dieses Problem auch heute und es war frustriert, weil ich nicht tippen konnte, weil mein gesamter Editor mit Fehlermeldungen rot geflasht hat.

Ich bin nicht ganz sicher, was genau es verursacht hat, aber ich glaube, es ist , weil wir mehrere Ruby versions OR multiple =) haben Ruby Versionsmanager installiert und sie überschreiben sich gegenseitig und vermasseln sonst Ihre Pfade zu den Edelsteinen.

Der Befehl gem wird auch überschrieben, wenn Sie über rbenv und rvm verfügen.

Finden Sie heraus, welche Sie installiert haben, indem Sie Folgendes eingeben.

which rvm
which rbenv
which chruby

Wenn einer davon installiert ist, wird ein Pfad zurückgegeben. Löschen Sie sie anschließend, löschen Sie alle Verzeichnisse vollständig und führen Sie eine Neuinstallation durch.


Entfernen

Hier ist, was ich für rvm getan habe;

rvm implode
gem uninstall rvm
rm -rf ~/.rvm
rm -rf ~/.rvmrc

Hier ist, wofür ich getan habe rbenv

Zuerst installiert https: //github.com/bernsie/rbenv-clean , dann

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

Neu installieren

Dann haben Sie ein sauberes Home-Verzeichnis, von dem aus Sie arbeiten können. Ich habe rbenv mit How to install Ruby 2.1.4 auf Ubuntu 14.04 neu installiert. Und schlussendlich;

rbenv rehash
8
Simon Somlai

Ich habe alles oben genannte gemacht, einschließlich

  • xcode-select --install
  • ruby neu installieren
  • alle Juwelen neu installieren
  • juwel makellos - alles 

aber das Problem war für mich dasselbe. Ich habe gerade meinen Mac als letzte Hoffnung neu gestartet, und die Warnmeldungen sind verschwunden.

Seltsam, aber wenn jemand mit diesem Problem zu kämpfen hat, nachdem Sie alles in StackOverflow versucht haben, starten Sie Ihren Computer neu.

4
Sebastian Kim

TL; DR - Ruby-Edelsteine ​​mögen es nicht, dass Rubies über Symlinks laufen oder von wo sie gebaut wurden (aufgrund eingebetteter Shebangs)

Wenn das Ruby-Verzeichnis aufgerufen wird oder Umgebungsvariablen auf ein symbolisches Verzeichnis verweisen oder kopiert oder umbenannt werden, ist diese Meldung wahrscheinlich. Ich benutze chruby und hatte Symlinking /opt/rubies/ -> /usr/local/Ruby/, aber Rubys dynamische Bibliotheksfindungslogik spielt damit nicht gut.

Die Lösung in meinem Fall war, den Symlink durch tatsächliche Rubine in /opt/rubies/ zu ersetzen und in jedem Ruby gem pristine --all auszuführen. Für andere, die RVM oder Rbenv verwenden, viel Glück damit, ohne von vorne zu beginnen.

Dies ist möglicherweise nicht Ihr genaues Problem, aber hoffentlich hilft es.

2
Barry

Wenn Sie RVM installiert haben, wird der Fehler möglicherweise erkannt, da Sie verschiedene Versionen installiert haben.

Überprüfen und entfernen Sie unbrauchbare Versionen.... Ich denke, dies ist nicht gut Ansatz . Auf jeden Fall sind Fehler verschwunden.

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

Nach dem Aktualisieren der Kokosapoden sollte es in .rvm GEM_HOME injiziert werden

gem uninstall cocoapods
gem install cocoapods

Wahrscheinlich wird pod COMMAND den Fehler über minitest gem auslösen, also - gem install minitest 

2
dimpiax

Libbys Vorschlag, einfach eine neue Terminalsitzung zu beginnen (die sie zu Sebastian Kims Antwort kommentierte) hat für mich funktioniert. Sehr viel schneller als alle anderen, also wollte ich eine Antwort darauf geben, damit sie besser sichtbar ist.

0
jim

Dies ist ein alter Thread, aber ich bin gerade auf dieses Problem gestoßen. 

Sie müssen Ihren Computer nicht neu starten, Sie müssen lediglich Ihre Umgebung aktualisieren, Sie können dies mit dem Befehl rehash tun:

rehash

Auf der Manpage: 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

Hier meine eigene Note hinzufügen. Ich verwende rbenv, das über Homebrew installiert wurde, und erhielt vier dieser "Ignorieren ... Erweiterungen, die nicht eingebaut sind". Speziell:

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

Ich habe viele Dinge in diesem Thread ohne Glück versucht. Schließlich habe ich in meinem Fall:

  • brew uninstall rbenv
  • rm -rf ~/.rbenv
  • brew install rbenv

Zu diesem Zeitpunkt bekam ich immer noch die Fehler, aber jetzt hatte ich nur eine einzige Ruby-Version, mit der ich kämpfen konnte:

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

An diesem Punkt versuchte ich Sudo gem pristine --all, wurde aber wegen Berechtigungen für das Gems-Verzeichnis des Systems abgelehnt.

Also ging ich durch und lief mit jedem Edelstein makellos

Sudo gem pristine bcrypt --version 3.1.12 (etc)

Und schließlich waren die Fehler verschwunden.

0
wrydere

Ich hatte das gleiche Problem und benutze Rbenv. Aus irgendeinem Grund verschwand meine globale Rbenv-Einstellung. Um dieses Problem zu beheben, habe ich die globale Version auf eine meiner Rbenv-Versionen gesetzt. Zum Beispiel:

rbenv global 2.5.1

0
Eric Jones

Dies ist auch ein Problem, wenn Sie auf einem Mac entwickeln und dann ein Docker-Image erstellen: https://forums.aws.Amazon.com/thread.jspa?messageID=879802&tstart=0

Wenn Sie ein "Bundle Install - Deployment" durchführen, erstellt Bundler eine Herstellerverzeichnis mit Ihren Edelsteinen drin. Beachten Sie, dass dabei Wenn sich Ihre Gems im lokalen Ordner befinden, enthält es nur das native Erweiterungen für Ihre Plattform. Da Sie unter macOS sind, wird dies Darwin sein. Sie müssen den Vorgang auf einem 64-Bit-x86-Linux wiederholen Umgebung.

0
Nathan Pierce

Deinstallation und Neuinstallation von Vagrant funktioniert ebenfalls. Das .dmg-Image des Installationsprogramms enthält ein unistall.tool-bash-Skript, mit dem Vagrant entfernt wird. 

Hier finden Sie diese Lösung: Aktualisierung von Vagrant und Gems-Erweiterungen nicht eingebaut

0
Jeff Wigal