Alle paar Tage passiert dies, wenn Sie verschiedene Dinge in Ruby CLI (insbesondere mit dem knife
Dienstprogramm für Chef) unter OS X tun (keine Replikation in anderen Umgebungen möglich; Linux, FreeBSD usw.):
Ignoring bcrypt-3.1.7 because its extensions are not built. Try: gem pristine bcrypt-3.1.7
Ignoring bigdecimal-1.2.5 because its extensions are not built. Try: gem pristine bigdecimal-1.2.5
Ignoring ffi-yajl-1.1.0 because its extensions are not built. Try: gem pristine ffi-yajl-1.1.0
Ignoring gem-wrappers-1.2.5 because its extensions are not built. Try: gem pristine gem-wrappers-1.2.5
Ignoring gem-wrappers-1.2.4 because its extensions are not built. Try: gem pristine gem-wrappers-1.2.4
Ignoring pg-0.17.1 because its extensions are not built. Try: gem pristine pg-0.17.1
Ignoring psych-2.0.6 because its extensions are not built. Try: gem pristine psych-2.0.6
Ignoring sqlite3-1.3.9 because its extensions are not built. Try: gem pristine sqlite3-1.3.9
Und obwohl es eine einfache Lösung ist, passiert es immer wieder. Ist jemandem das schon mal begegnet?
$ ruby -v
ruby 1.9.3p484 (2013-11-22 revision 43786) [x86_64-darwin11.2.0]
Ich habe kürzlich von rvm
zu gewechselt chruby
und bin gelaufen gem update --system
, als das Problem bei mir auftrat. Danach wurde ich jedes Mal, wenn ich Bündel lief, mit denselben Warnungen geschlachtet. Immer noch nicht sicher, was das Problem verursacht hat.
Ignoring curb-0.8.6 because its extensions are not built. Try: gem pristine curb-0.8.6
Ich bin mir nicht sicher, was es behoben hat, aber ich habe zwei Dinge getan und die Warnung ist verschwunden:
gem uninstall bundler
gem install bundler
gem install curb
In meinem Fall sehe ich diese Fehler nach der Installationrvm
Ich löse ein solches Problem mit:gem pristine --all
Dieses Problem tritt auf, wenn ein Gem gegen eine andere Libruby kompiliert wurde als die aktuell laufende. Zum Beispiel, wenn man einen Ruby, der sich in seinem Home-Verzeichnis befindet, mit chruby verwendet und Gems nach ~/.gem/ruby installiert, aber ein Skript ausführt, das /usr/bin/ruby aufruft, das die dort installierten Gems wiederverwendet. In diesem Fall gem pristine --all
hilft nichts, da die Gems nur gegen eine Ruby-Version gelinkt werden können.
vendor/bundle
, löschen Sie sie einfach mit rm -rf vendor/bundle
und installieren Sie sie erneut mit bundle install
.gem pristine --all
bis ich blau im Gesicht war, und jetzt weiß ich, warum es nicht funktioniert hat ...Das hat bei mir unter MacOs Sierra funktioniert:
xcode-select --install
gem install nokogiri
Ich hatte bereits den gesamten Xcode installiert, bevor ich die obigen Befehle ausgeführt habe, aber ich musste dies trotzdem tun, vielleicht weil das erste Skript einige interne Bibliotheken/Abhängigkeiten aktualisiert.
Stellen Sie sicher, dass Sie "gem pristine --all" für die richtige Ruby-Version ausführen. Wenn /usr/bin/ruby aufgerufen wird ... verwenden Sie "/usr/bin/gem pristine --all". Dies ist nicht offensichtlich, wenn Sie rvm verwenden und 10 Versionen von Ruby installiert haben.
Das hat mein Problem für einen Tag behoben und dann kam es wieder.
Was eine dauerhaftere Lösung zu sein scheint, ist "rvm reset", damit das Standard-Ruby die installierte OSX-Version /usr/bin/ruby und /usr/bin/gem ist. Wenn ich eine neuere Version von Ruby für ein Projekt verwenden möchte, verwende ich .ruby-version und .ruby-gemset im Projektstammverzeichnis, um explizit die Version von Ruby festzulegen, die ich verwenden möchte. Nicht ideal ... aber es sollte diesen Fehler beseitigen.
In meinem Fall:
rvm get stable
sudo gem pristine --all
Ich bin sehr neu in Rails, daher könnte dies ein völlig fehlgeleiteter Rat sein, aber da keine der anderen Lösungen für mich funktionierte, dachte ich, ich würde meine teilen.
Mic92 und Gerry haben mich auf die richtige Spur gebracht: Ich habe das verwendet, rails s
was Fehler verursachen kann, weil es eine Rails-Version ausführt, die eine andere Version als die des Projekts sein kann.
Ich habe versucht, mich mit zu verbinden bin/rails server
, ich habe einen anderen Fehler erhalten (fehlende Edelsteine), also bin ich geranntbundle install
An dieser Stelle bekam ich einen dritten Fehler ("inkompatible Bibliotheksversion"), der spring stop
geheilt wurde.
Dann bin ich rails generate controller
wieder gelaufen, Frühling neu gestartet und alles hat funktioniert (ich habe ein bisschen geweint).
Dieser Fehler bedeutet, dass Sie die aktuelle Version des Edelsteins nicht verwenden können. Es wurde mit einer älteren ausführbaren Ruby-Datei installiert und/oder andere Systemdienstprogramme und Binärdateien haben sich geändert, sodass Sie das Gem komplett von Grund auf neu installieren müssen. Das ist mir passiert, als ich von Ruby 2.5.3 auf Ruby 2.7.1 migriert habe. Ich hatte alle meine Edelsteine aus der vorherigen Version übernommen (via rvm migrate
), aber sie waren jetzt kaputt. Alle meine Edelsteine mussten gemäß den 2.7.1-Abhängigkeiten neu erstellt werden. Also musste ich alle meine Edelsteine über vollständig entfernen rvm gemset empty ruby-2.7.1
. In diesem Fall wird eine Liste aller Ihrer installierten Gems gedruckt. Kopieren Sie diese Ausgabe und fügen Sie sie in eine sichere Datei ein, auf die Sie später noch einmal zurückgreifen können, um die Edelsteine neu zu installieren, die Sie benötigen, um eine wirklich saubere Umgebung für Ihre neue Ruby-Version zu installieren.
tony_perkis666
lfender6445
Noah Passalacqua
bundle install
B Sieben
Vadoranfrage
You don't have write permissions for the /Library/Ruby/Gems/2.3.0 directory
, diese Probleme begannen von selbst, ich benutze nicht einmal Ruby, soweit ich weiß. Aber ich erhalte Fehlermeldungen über Erweiterungen, für die nicht gebaut wurde,clocale-0.0.3
wenn ich eine neue Shell starte