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
gem update
gem update --system
bundle update
bundler
deinstallieren und erneut installierenRails
(Dies ist jedoch kein spezielles Problem von Rails.)~/.bundle/
löschenXCode
ö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.)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.
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.
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
Ich habe alles oben genannte gemacht, einschließlich
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.
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.
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
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.
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.
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.
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
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.
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