Ich habe Ruby kürzlich sowohl auf meinem Arbeits- als auch auf meinem Heimcomputer mit 2.3.1 aktualisiert ruby-install
. Ich benutze chruby
als mein Ruby Switcher.
Ich sah diese Warnung in meinem Terminal:
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 zu lösen. Als ich den Vorschlag ausprobierte gem pristine GEM
, sagte er mir, dass er den Edelstein nicht finden konnte, also rannte ich los gem install GEM
und das löste ihn.
Zu Hause funktioniert nichts.
Dinge, die ich aus gesundem Menschenverstand und verschiedenen anderen Stack-Fragen ausprobiert habe:
gem pristine GEM
gem pristine --all
- Deinstallation und Neuinstallation des Edelsteins
gem update
gem update --system
bundle update
- Deinstallation und Neuinstallation
bundler
- Deinstallation und Neuinstallation
rails
(Dies ist jedoch kein Rails-spezifisches Problem.) - Löschen
~/.bundle/
- Öffnen
XCode
und Installieren einiger Erweiterungen (Es musste ausgeführt werden, aber es wurde nichts behoben.) - Laufen
brew doctor
und Lösen aller kleinen Probleme, dannbrew update
undbrew upgrade
gem install curb
(Ich kann mir nicht vorstellen, was dieses Juwel mit diesem Problem zu tun hat, aber zwei verschiedene Personen haben es als letzten Schritt ihrer Behebung derselben Warnung aufgeführt.)
bcrypt
und es gab mir immer noch zwei Warnungen.gem pristine --all
funktioniert nicht. Gelöst durch Löschen aller Edelsteine einschließlich Bundler. Dann installierte Bundlergem install bundler
und navigierte schließlich zurück zu meinem Projekt und lief,bundle install
die alle meine Edelsteine neu installiert und alles funktioniertAntworten:
Ich bin heute genau auf dieses Problem gestoßen - Warnungen wie diese für Edelsteine, die noch nicht einmal installiert waren!
... Nun stellt sich heraus , die Edelsteine wurden installiert - für einen anderen Rubin als die, die ich mit chruby (2.2.3 vs 2.3.1) aktiv gesetzt hatte.
Das
gem pristine --all
Problem wurde behoben, indem zu den verschiedenen Rubinen gewechselt und auf allen ausgeführt wurde.quelle
gem pristine --all
nützt es nichts. Sehen Sie diese Antwort auf Fragen Sie für weitere Informationen anders.gem pristine --all
Berechtigungsprobleme vorliegen, sollten Sie dies überprüfenwhich ruby
.brew link --overwrite ruby && source ~/.bash_profile
und laufengem pristine --all
kann helfenIch bin auf dieses Problem gestoßen und habe dieselben Befehle wie oben befolgt, sogar alle meine zuvor installierten Ruby-Versionen entfernt. Der Fehler blieb jedoch bestehen.
Es stellte sich heraus, dass einige Edelsteine für die verschiedenen (zuvor deinstallierten) Versionen in übrig waren
~/.gem/ruby/
. Nachdem ich die nicht mehr verwendeten Ordner entfernt hatte, verschwanden die Fehler.quelle
Ich hatte dieses Problem auch heute und es war frustriert, weil ich nicht tippen konnte, weil mein gesamter Editor mit Fehlermeldungen rot blinkte.
Ich bin mir nicht ganz sicher, was genau es verursacht hat, aber ich glaube, es liegt daran, dass wir mehrere Ruby-Versionen ODER mehrere Ruby-Versionsmanager installiert haben und diese sich gegenseitig überschreiben und ansonsten Ihre Wege zu den Edelsteinen durcheinander bringen.
Der
gem
Befehl wird auch überschrieben, wenn Sie rbenv und rvm haben.Sehen Sie, welche Sie installiert haben, indem Sie Folgendes eingeben.
Wenn einer davon installiert ist, wird ein Pfad zurückgegeben. Löschen Sie sie dann, stellen Sie sicher, dass alle Verzeichnisse vollständig bereinigt sind, und beginnen Sie mit einer Neuinstallation.
Entfernen
Folgendes habe ich für rvm getan :
Folgendes habe ich für rbenv getan
Zuerst https://github.com/meowsus/rbenv-clean installiert , dann
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 unter Ubuntu 14.04 neu installiert . Und schlussendlich;
quelle
Ich habe alles oben erwähnte gemacht, einschließlich
aber das Problem war das gleiche für mich. 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 er alles in StackOverflow ausprobiert hat, starten Sie Ihren Computer neu.
quelle
Wenn Sie RVM installiert haben, tritt der Fehler möglicherweise auf, weil Sie verschiedene Versionen installiert haben.
Überprüfen und entfernen Sie nutzlose Versionen, aber ich denke, dies ist kein guter Ansatz. Sowieso Fehler weg.
Nach dem Auffrischen der Cocoapods sollte es in .rvm GEM_HOME injiziert werden
Wahrscheinlich
pod COMMAND
wird der Fehler überminitest
Edelstein werfen , also -gem install minitest
quelle
TL; DR - Ruby-Edelsteine mögen keine Rubine, die über Symlinks ausgeführt oder von ihrem Standort verschoben werden (aufgrund eingebetteter Shebangs).
Wenn das Ruby-Verzeichnis aufgerufen wird oder Umgebungsvariablen auf ein mit Symlinks versehenes Verzeichnis verweisen oder kopiert oder umbenannt werden, ist diese Meldung wahrscheinlich. Ich benutze chruby und habe eine Verknüpfung hergestellt
/opt/rubies/
->/usr/local/ruby/
, aber Rubys dynamische Logik zum Finden von Bibliotheken spielt damit nicht gut.In meinem Fall bestand die Lösung darin, den Symlink durch tatsächliche Rubine zu ersetzen
/opt/rubies/
undgem pristine --all
in jedem Rubin 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 es hilft hoffentlich.
quelle
gem pristine --all
alle am Laufen waren . Vielen Dank, dass Sie diese tote Frage wiederbelebt haben. Ich war kurz davor, alles niederzubrennen und von vorne zu beginnen.Hier meinen eigenen Geschmack hinzufügen. Ich verwende
rbenv
installiert über Homebrew und bekam vier dieser "Ignorieren ... Erweiterungen nicht erstellt" -Nachrichten. Speziell:Ich habe viele Dinge in diesem Thread ohne Glück ausprobiert. 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 noch eine einzige Ruby-Version, mit der ich fertig werden konnte:
Zu diesem Zeitpunkt habe ich es versucht
sudo gem pristine --all
, wurde jedoch für Berechtigungen für das Gems-Verzeichnis des Systems abgelehnt.Also ging ich durch und lief makellos auf jedem Edelstein, wie
sudo gem pristine bcrypt --version 3.1.12
(etc)Und schließlich waren die Fehler weg.
quelle
Dies ist ein alter Thread, aber ich bin gerade selbst auf dieses Problem gestoßen.
Sie müssen Ihren Computer nicht neu starten, sondern nur Ihre Umgebung aktualisieren. Dies können Sie mit dem Befehl rehash tun:
Von 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.
quelle
rehash
oderhash -r
für bash ist ein Shell-Befehl, der auf * nix verfügbar ist. Wenn die C-Shell gestartet wird, erstellt sie eine Hash-Tabelle aller Befehle in ihrem Pfad: jeden Befehlsnamen und seinen absoluten Pfadnamen. Wenn Sie also nach dem Starten einer csh-Ausführung neue Programme zu Verzeichnissen entlang des Pfads hinzufügen, müssen Sie den Rehash-Befehl der Shell verwenden, um ihre Hash-Tabelle neu zu erstellen. (vgl.: docstore.mik.ua/orelly/unix3/upt/ch27_06.htm )Ich hatte dieses Problem, aber nur, als ich mit der
tmux
Sitzung beganntmuxinator
.Es stellte sich heraus, dass ich
tmuxinator
von verwende,brew
anstatt es mit zu installierengem install
. Vielleicht hatchruby
die gleichzeitige Verwendung auch zum Problem beigetragen.p / s: Ich habe auch nicht verwendeten Rubin entfernt,
~/.gem/ruby
aber ich bezweifle, dass dies der Grund ist, warum dieses Problem für mich behoben wurde.quelle
Das Laufen
gem pristine --all
half zuerst nicht, aber dann wurde mir klar: Das Skript, das ich ausführte, begann mit der Zeile:#!/usr/bin/ruby
Auf meinem macOS-System (Catalina, aber ich denke nicht, dass es wichtig ist) weist dies auf den Ruby hin, der mit dem System geliefert wurde, nicht auf den von RVM installierten. Beim Ausführen
gem pristine --all
wurde die RVM-Installation repariert, aber mein Skript rief eine andere Version von Ruby auf.Die Lösung für mich bestand darin, mit dem
env
Befehl den Ruby aufzurufen, der in der aktuellen Shell angegeben istPATH
. Durch Ändern der obersten Zeile des Skripts wurde Folgendes behoben:#!/usr/bin/env ruby
quelle
bundle install
die Edelsteine (und ihre nativen Erweiterungen) für einen Ruby installiert wurden, der über den RVM Ruby-Umschalter ausgewählt wurde, wobei ein Skript, das auf das System Ruby verweist, sie nicht finden kann. Ihre Lösung ist die Standardpraxis, um Ruby-Skripte und Gems mit vom Benutzer installierten Rubinen arbeiten zu lassen ( siehe ).apt purge tmuxinator
und danngem install tmuxinator
hat es funktioniert. Ich werde es wahrscheinlich immer dann installieren müssen, wenn ich meine Nicht-Projekt-Ruby-Version aktualisiere, aber das gefällt mir besser. Vielen Dank!Mac OS Catalina ausführen, brauen und rbenv ...
Nachdem ich heute genau auf dieses Problem gestoßen bin und alle Antworten hier durchgesehen habe, bin ich schließlich auf einen anderen Grund für diesen Fehler gestoßen:
Ignoring nokogiri 1.10.7 because its extensions are not built. Try: gem pristine nokogiri --version 1.10.7
Und natürlich hat Edelstein makellos keine Arbeit geleistet.
Mein Problem waren fest codierte Umgebungsvariablen GEM_HOME und GEM_PATH, die rbenv überschrieben.
Stellen Sie also sicher, dass Sie GEM_PATH und GEM_HOME nicht in ~ / .zshrc festgelegt haben
quelle
Das Deinstallieren und Neuinstallieren von Vagrant funktioniert ebenfalls. Das
unistall.tool
.dmg-Image des Installationsprogramms enthält ein Bash-Skript, mit dem Vagrant entfernt wird.Hier finden Sie diese Lösung: Aktualisieren der nicht integrierten Vagrant- und Gems-Erweiterungen
quelle
Ich hatte das gleiche Problem und verwende rbenv. Aus irgendeinem Grund ist meine globale Rbenv-Einstellung verschwunden. Um dieses Problem zu beheben, habe ich die globale Version auf eine meiner rbenv-Versionen gesetzt ... zum Beispiel:
rbenv global 2.5.1
quelle
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
quelle
Libbys Vorschlag , gerade eine neue Terminalsitzung zu starten (die sie zu Sebastian Kims Antwort kommentierte), hat für mich funktioniert. Viel schneller als alle anderen auch, also wollte ich es zu einer Antwort machen, damit es sichtbarer ist.
quelle
In meinem Fall habe ich versucht zu rennen,
pristine --all
aber ich bekam:Dann habe ich den Inhalt gelöscht,
Users/{{user.name}}/.gem
als ich ihn ausführen musstebundle install --force
, alles neu installiert, dann hat der Befehlpristine --all
wie erwartet funktioniertquelle
Diese Lösung hat bei RubyMine IntelliJ funktioniert
Ich hatte zwei verschiedene Terminals und
RVM
undruby<Version>
.Lösung:
Ich musste es auf die RVM-Version umstellen, damit die Fehler behoben wurden
Preferences>Languages&Frameworks>Ruby SDK
Fehler:
quelle