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
bundle config build.nokogiri --with-xml2-include=/opt/local/include/libxml2 --with-xml2-lib=/opt/local/lib --with-xslt-dir=/opt/local
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:
bundle config build.nokogiri --with-xml2-dir=/usr --with-xslt-dir=/opt/local --with-iconv-dir=/opt/local
Interessanterweise erhalten Sie bei Eingabe nokogiri -v
über die Befehlszeile die entgegengesetzte Warnung:
WARNING: Nokogiri was built against LibXML version 2.7.3, but has dynamically loaded 2.7.8
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 Versionen libxml2*.dylib
auf libxml2*.dylib.old
(auf meiner Maschine war libxml2.2.7.3
, libxml2.2
und libxml2
).
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.
brew remove --force libxml2
bundle config --delete build.nokogiri
gem uninstall nokogiri libxml-ruby
bundle