Ich habe alle Arten von Recherchen durchgeführt und viele verschiedene Dinge ausprobiert. Ich weiß, dass diese Frage schon oft beantwortet wurde, aber keine der vorgeschlagenen Lösungen funktioniert für mich.
Nach dem Upgrade auf Lion erhalte ich Segmentierungsfehler in Ruby. Ich bin ziemlich sicher, dass es Nokogiri ist. Also habe ich libxml2 über Homebrew installiert. Ich rannte brew link libxml2
. Dann habe ich Nokogiri mit dieser Version der Bibliothek neu installiert.
Zum Beweis:
$ nokogiri -v
# Nokogiri (1.5.0)
---
warnings: []
nokogiri: 1.5.0
ruby:
version: 1.9.2
platform: x86_64-darwin11.0.0
description: ruby 1.9.2p290 (2011-07-09 revision 32553) [x86_64-darwin11.0.0]
engine: ruby
libxml:
binding: extension
compiled: 2.7.8
loaded: 2.7.8
Ich habe Nokogiri bereits oben in meine Gemfile aufgenommen und es auch in meine Umgebungsdatei aufgenommen. Ich habe keine Ahnung, warum ich diese Warnung immer noch bekomme.
Irgendwelche Vorschläge oder Ideen, um sicherzustellen, dass die richtige Version libxml2 geladen wird?
brew remove --force libxml2
bundle config --delete build.nokogiri
gem uninstall nokogiri libxml-ruby
bundle
1.6.2.1
undUbuntu 12.04
nicht schön spielen. Zurückfallen, um das Problem zu1.6.1
beheben, nachdem ich alle anderen Probleme ausprobiert hatte, die ich finden konnte.Antworten:
Ich habe gerade den größten Teil des Morgens damit verbracht, diese Warnung durchzuarbeiten. Dieser Fix ist für Benutzer von Mac OS Lion gedacht. Das obige Update mit
ist für Snow Leopard mit libxml2 über MacPorts installiert.
Mit Lion wird libxml2 als Teil des Bootstrap-Prozesses geladen. Unabhängig davon, auf welche libxml2 Nokogiri verweist, wird zur Laufzeit die Standardbibliothek des Lion-Systems für libxml2 verwendet. Lion verwendet libxml2.2.7.3, das in
/usr
(nicht) gefunden wurde/usr/local
) gefunden wurde.Wie bereits an vielen anderen Stellen erwähnt, kann man die Warnung einfach ignorieren. Wenn die Warnung Sie wie mich verrückt macht, können Sie Folgendes tun:
Interessanterweise erhalten Sie bei Eingabe
nokogiri -v
über die Befehlszeile die entgegengesetzte Warnung:Dies deutet darauf hin, dass libxml2 mehr geladen wird, wobei Ruby und Rails das vom System geladene libxml2 und die Befehlszeile libxml2 aus dem Umgebungspfad verwenden. Auf jeden Fall bringt dies den Fehler für mich zum Schweigen.
Ich werde es noch einmal sagen - das ist nur für Lion. Das vorherige Update funktioniert für Snow Leopard.
Dies ist das Ende der Antwort. Hör hier auf zu lesen.
OK, du hast nicht aufgehört zu lesen ... na ja ...
NICHT EMPFOHLEN!!!!!!
Du wurdest gewarnt. Sie können überprüfen, ob Mac OSX die libxml2-Bibliothek in ihren Bootstrap lädt, indem Sie libxml2 in deaktivieren
/usr/lib
. Tun Sie etwas , wie das Kopieren alle Versionenlibxml2*.dylib
auflibxml2*.dylib.old
(auf meiner Maschine warlibxml2.2.7.3
,libxml2.2
undlibxml2
).Nachdem Sie dies getan haben, führt das Ausführen von Nokogiri zu keinen Fehlern. Das ist , weil es nicht die geladene libxml2 finden und wird nun die Umwelt Weg folgen, schließlich finden
libxml2.2.7.8
in/opt/local
.ABER Sie können die alten libxml-Dateien nicht zurückkopieren. Dies liegt daran, dass das Betriebssystem die libxml2 benötigt, die in den Bootstrap geladen wurde.
Durch Aus- und Wiedereinschalten wird Ihre Maschine beschädigt. Der Anmeldebildschirm hängt und hängt und hängt. Im Einzelbenutzermodus aus- und wieder einschalten (gedrückt halten Command-S aus- gedrückt beim Neustart). Sie können das Auftreten des Bootstraps beobachten. Niedrig und siehe da, es wird ein Fehler ausgegeben, dass libxml2 nicht geladen werden kann und dann nicht mehr funktioniert.
Aus- und wieder einschalten. Booten Sie diesmal in den Wiederherstellungsmodus (entweder halten Command- Roder halten Optionund dann die Wiederherstellungsdiskette auswählen). Öffnen Sie im Wiederherstellungsmodus das Terminal (
utilities/terminal
). Mounten Sie/usr/lib
auf Ihrer Festplatte (versuchen Sie es/Volumes/Macintosh\ HD/usr/lib
) und kopieren Sie die libxml2-Dateien zurück. Starten Sie neu und alles wird gut.quelle
bundle config build.nokogiri --with-xml2-include=/usr/local/Cellar/libxml2/2.9.0/include/libxml2/
~
es diesen Wert global zu setzen scheint , wenn Sie es tun . Vielleicht können Sie dies nur einmal tun und müssen sich nie wieder darum kümmern.Wenn Sie Nokogiri mit installiert haben
gem install nokogiri
, können Sie diese Warnung beheben, indem Siegem pristine nokogiri
die C-Erweiterung des Edelsteins neu kompilieren.Wenn Sie Nokogiri mit installiert haben
bundle install
, können Sie diese Warnung beheben, indem Sie ausführen , umbundle exec gem pristine nokogiri
die C-Erweiterung des Gems überall dort neu zu kompilieren, wo Bundler es installiert hat.quelle
bundle exec gem pristine nokogiri
geschafft.Um dies zu beheben, wenn Sie Homebrew und Bundler verwenden, fügen Sie
gem 'nokogiri'
oben hinzu und führen SieGemfile
die folgenden Befehle aus:Wenn Sie keinen Bundler verwenden, führen Sie stattdessen die folgenden Befehle aus:
In Ihrer App sollten Sie zuerst nokogiri benötigen , um die App zum Laden der dynamischen libxml2-Bibliothek anstelle der älteren Systemversion von libxml2 zu zwingen, die von Gems geladen wurde, die nicht angegeben haben, welche Bibliothek geladen werden soll.
quelle
link
undunlink
Befehle benötigt werden. Ich konnte entkommen, ohne sie zu benutzen.gem
Befehlen möglicherweise voranstellen müssen,bundle exec
z. B. wenn Sie verwendenrbenv
.brew uninstall libxslt
?Nichts davon hat bei mir funktioniert.
Ich hatte libxml2 in einer späteren Version (2.7.8) mit Brew installiert. Dies führte dazu, dass sich nokogiri dagegen und die späteren Probleme kompilierte. Lösung, entfernen Sie es, erstellen Sie es und installieren Sie es, falls gewünscht.
Folgendes hat funktioniert:
brew uninstall libxml2
(falls zuvor installiert)gem uninstall nokogiri
gem install nokogiri
brew install libxml2
(Optional)quelle
brew uninstall libxml2
zuvor. Vielen Dank!bundle install
in RubyMine erhalten habe. Sie können den gleichen Fehler in der Befehlszeile sehen, wenn Sierake --tasks
Die Lösung (für mich) nach dem Update auf Mountain Lion war viel einfacher:
quelle
Gemäß dem Kommentar von patrickmcgraw oben hat es für mich funktioniert, einfach nokogiri als ersten Eintrag in meine Gemfile zu setzen. Ich stelle es als separate Antwort, weil der ursprüngliche Kommentar begraben wurde.
quelle
Bundler hat Optionen zum Festlegen der Standard-Build-Speicherorte. So zum Beispiel mit libxml2, das über Macports installiert wurde:
Danach und
bundle install
ging die Warnung weg.Es gibt auch einige hilfreiche Beispiele zum Festlegen von Build-Optionen im Nokiaogiri-Wiki .
quelle
Sieht so aus, als hätten Sie Ihre Systembibliotheken nach der Installation des Gems aktualisiert, sodass Sie Nokogiri aktualisieren müssen. So verwenden Sie die aktuelle lib-Version:
quelle
Ich hatte ein ähnliches Problem und löste es einfach so:
In meinem Fall habe ich RVM installiert und ich hatte @global und @project Gem Sets. Beide hatten Nokogiri installiert und einer von ihnen hatte mit verschiedenen libxml gebaut.
Der Wiederaufbau beider (ich habe Grund dazu) löste das Problem.
Hoffe das hilft..
quelle
Wenn dies mit "libxml2 fehlt" fehlschlägt. und Sie sehen gems / nokogiri-1.5.0 / ext / nokogiri / mkmf.log, die versuchen, "/usr/bin/gcc-4.2 ..." zu verwenden, dann fehlt Ihnen /usr/bin/gcc-4.2
Lösung:
Vor:
Nach dem:
Wenn Sie libxml2 libxslt wirklich vermissen, dann
Zu Ihrer Information: Ich leite Mountain Lion mit Gebräu und Bündler.
quelle
gem install libxml-ruby hilft mir
quelle
Ich hatte tatsächlich 2 Versionen von libxml installiert, eine von der Quelle, eine von einem RPM.
Das Folgende ist meine vollständige Lösung
Ich habe die Quelle deinstalliert (aus dem Quellverzeichnis).
Bündel entfernen
Aktualisierte LD (muss dies möglicherweise als root tun, nicht als sudo)
Installieren Sie dann das Bundle neu
quelle
Ich bin gerade darauf gestoßen (OS X Lion 10.7.5). Meine genaue Nachricht war: Nokogiri wurde gegen LibXML Version 2.8.0 erstellt, hat aber 2.7.3 dynamisch geladen
Ich habe ein paar Vorschläge ausprobiert, von denen keiner funktioniert hat, aber das hat funktioniert:
Die Erklärung lautet: "Dies geschieht, weil die Standardeinstellung libxml2 des Lion-Systems (geladen beim Bootstrap) verwendet wird, unabhängig davon, gegen welche libxml2 Nokogiri erstellt wurde."
Credits an: https://coderwall.com/p/o5ewia
quelle
Betriebssystem: Maverick 10.9.3
Ruby 1.9.3
WARNUNG: Nokogiri wurde gegen LibXML Version 2.9.1 erstellt, hat jedoch dynamisch 2.9.0 geladen
Meine Lösung:
Ich hoffe das hilft
quelle
Wenn Sie diese Nachricht haben und Ihr Nokiaogiri mit der aus der Edelsteinquelle verfügbaren Version nicht mehr aktuell ist, führen Sie sie einfach aus
bundle update nokogiri
, um den neuen Code abzurufen und neu zu kompilieren. Ihr Fehler sollte verschwinden.quelle