Ich habe mich immer um die Installationsprobleme von Nokogiri gekümmert, indem ich der Dokumentation im Tutorial " Installieren von Nokogiri " gefolgt bin .
Aber dieses Mal wurde Nokogiri auch nach der Installation aller Abhängigkeiten nicht installiert. Ich erhalte folgende Fehlermeldung:
libxml2 is missing. please visit <http://nokogiri.org/tutorials/installing_nokogiri.html>
Ich habe versucht, es zu installieren, indem ich die Verzeichnisse libxml2 und libxslt angegeben habe:
sudo gem install nokogiri -- --with-xml2-include=/usr/include/libxml2 --with-xml2-lib=/usr/lib --with-xslt-dir=/usr/
aber es gab den gleichen Fehler zurück.
Ich folgte allen anderen verwandten Stack Overflow-Artikeln und keiner half. Hat jemand eine Lösung?
ruby-on-rails
ruby
rubygems
Rohit A.
quelle
quelle
Antworten:
Installieren Sie zunächst die Abhängigkeiten:
Wenn Sie den Fehler weiterhin erhalten, fehlt möglicherweise eine Compiler-Toolchain:
Sie erhalten den Fehler "libxml2 fehlt", wenn Sie eine Build-Toolchain vermissen (zumindest bin ich auf dieses Problem bei Debian Lenny gestoßen).
Der Nokogiri-Build testet eine libxml2-Headerdatei, um zu überprüfen, ob sie vorhanden ist. Sie unterscheidet jedoch nicht zwischen "libxml2 fehlt" und "ein Compiler zum Testen von libxml2 fehlt".
quelle
Möglicherweise müssen Sie beide Pakete tatsächlich installieren
quelle
Unter Mac OS X (Mavericks) hat die Installation der Bibliotheken mit
brew
und die EinstellungNOKOGIRI_USE_SYSTEM_LIBRARIES=1
vor der Installation des Gems den Trick für mich getan.Zusammenfassend:
Wenn zuvor installiert, deinstallieren Sie das Juwel:
Verwenden Sie Homebrew zu installieren
libxml2
,libxslt
undlibiconv
:Installieren Sie den Edelstein und geben Sie die Pfade zu den Bibliotheken an, mit denen verknüpft werden soll:
quelle
$ NOKOGIRI_USE_SYSTEM_LIBRARIES=1 gem install nokogiri
hat den Trick getanbrew install libxml2 libxslt homebrew/dupes/libiconv
damit arbeiten--with-xml2-include="/usr/local/opt/libxml2/include/libxml2"
damit dergem install nokogiri
Befehl funktioniert. Andernfalls wird es zeigenlibxml2 version 2.6.21 or later is required!
(meine libxml2-Version ist 2.9.2)Ich hatte gerade das gleiche Problem mit Fedora 13. Nach einer frustrierenden und erfolglosen Suche
Arbeit für mich, ich konnte es installieren und den libxml2-Fehler über umgehen
yum
.Installieren Sie den Edelstein einfach über
yum
anstelle desgem
Befehls:Dies hat mir geholfen, die richtige Antwort für Fedora zu finden, und da ich RVM für die Ruby-Paketverwaltung verwende,
wird alle Ruby-Edelsteine und Abhängigkeiten in das System ziehen, nicht in meine RVM-Umgebung, und nach meiner Erfahrung führt dies zu einer sehr frustrierenden und demütigenden Erfahrung.
Nehmen Sie also Ihren Fund des Nokogiri-Yum-Edelsteins, den Sie verwenden können:
und eine Liste der Abhängigkeiten für rubygem-Nokogiri erhalten, die mir die fehlenden Bibliotheken zeigte. Danach rannte ich:
Jetzt kompiliert Nokogiri in Fedora und Nokogiri installiert. D'oh!, Wir brauchen die Header, um Nokogiri aus den Entwicklungsbibliotheken zu kompilieren.
quelle
Wenn unter Mac OS X (Mavericks) keine dieser Lösungen funktioniert, versuchen Sie Folgendes:
oder
abhängig von der Architektur Ihres Systems.
quelle
Normalerweise benötigen Sie Entwicklungsdateien, um Edelsteine zu erstellen. Versuchen:
(Ich habe gerade gesehen, dass Eric dasselbe in einem Kommentar vorgeschlagen hat.)
quelle
Ich konnte dies mit Chocolatey , Windows 8.1 x64 und DevKit x64 installieren .
Sie müssen überprüfen, ob die Versionsnummer in den Pfaden korrekt ist.
Möglicherweise müssen Sie das NuGet-Repository von Microsoft hinzufügen:
quelle
...\x64\Release\dynamic\cdecl
.chocolatey sources add -name NuGet -source "https://go.microsoft.com/fwlink/?LinkID=230477"
Es wird sein:
auf RHEL-Servern.
quelle
Unter macOS hatte keines der oben / unten wirklich für mich funktioniert, bis ich explizit den XCode libxml2-Pfad zu angegeben habe
--with-xml2-include
.quelle
Ich konnte Nokogiri 1.6.5 auf Fedora 20 installieren, indem ich Folgendes tat:
Dann laufen:
quelle
Für alle anderen, bei denen dieses Problem auftritt, habe ich es gelöst, indem ich diesen Befehl im Projektverzeichnis ausgeführt habe
gem install nokogiri -- --use-system-libraries
Update: Ich bin erneut darauf gestoßen und habe versucht, nur das Juwel zu aktualisieren, das für mich funktioniert hat ...
gem update nokogiri
quelle
Haben Sie versucht, libxml2 zu installieren? Nicht von Rubygems, sondern über den Standardinstallationsprozess für Ihr Betriebssystem. Unter Ubuntu / Debian zum Beispiel:
Auf jeder neueren Version von OS X sollte es bereits installiert sein.
quelle
Wenn Sie bei OSX-Benutzern bereits erfolgreich Nokogiri installiert haben und dennoch Fehler bei der Installation von Nokogiri erhalten, verwenden Sie beispielsweise eine neue Version von Ruby, die Sie hinzugefügt haben, und diesen Fehler, der eine Meldung wie die folgende enthält:
Dies kann darauf hinweisen, dass ein XCode-Upgrade manuell oder automatisch über den App Store durchgeführt wurde und Sie es seitdem nicht mehr geöffnet haben.
In diesem Fall sollten Sie in der Lage sein, XCode zu öffnen, der neuen Lizenz zuzustimmen und Nokogiri dann erfolgreich zu installieren.
quelle
Unter Mac OS X Yosemite war mein Fehler, dass ich versucht habe,
sudo gem install
wenn es eine Faustregel ist, bei der Installation von Gems keine Superuser-Berechtigungen zu verwenden.In meinem Fall wurde versucht, die Systeminstallation von Ruby zu ändern, und das ist keine gute Idee. Ich habe rbenv installiert, Ruby 2.2.2 installiert und festgelegt
global
, was ein Begriff aus der Dokumentation von rbenv ist. Danach konnte sich Nokogiri mit einem einfachen installierenEs waren keine Hacks oder Workarounds erforderlich, nur eine ordnungsgemäß eingestellte Umgebung. Nokogiri erledigt den Rest perfekt.
quelle
sudo
ist OK IF Sie verstehen , wie es funktioniert, wo es Wirkung dauern wird, warum sollten die Dateien und installiert werden , installiert oder aktualisiert werden , wie die Aktion rückgängig zu machen , wenn es fehlschlägt. Andernfalls ist die Verwendung einer Sandbox wie rbenv oder RVM eine WIRKLICH gute Idee.Konnte Vagrant-Awe installieren, indem Sie dem obigen Beitrag folgten, aber den folgenden Befehl verwendeten:
quelle
Für Windows x64:
Weitere Informationen finden Sie in diesem Thread: https://github.com/sparklemotion/nokogiri/issues/864
quelle
Ich konnte Nokogiri installieren, indem ich die folgenden Pakete ausführte:
quelle
=== TLDR ===
Wie die Anweisungen Zustand build Rubin mit dem neuesten Klirren Compiler, oder zumindest die gleichen Version , dass Rubygems verwenden Nokogiri native Erweiterungen libxml und libxsl zu kompilieren.
Wenn Sie RVM verwenden, hat das Erstellen aus der Quelle mit der
--with-ggc=clang
Flagge das für mich getan:Ersetzen Sie
2.2
durch eine beliebige Version.--with-gcc=clang
stellt sicher, dass RVM aus dem Quellcode erstellt wird und verwendet dazu clang. Andernfalls kann RVM ein vorgefertigter binärer Ruby sein, was mich auslöste.Installieren Sie dann Nokogiri wie gewohnt mit Bundler oder Rubygems.
=== IN DER TIEFE ===
Ich hatte eine Weile damit zu kämpfen.
gem install nokogiri
gab mir:Beim Eingraben
mkmf.log
sah ich:Nokogiri liefert seine eigenen libxml und libxsl (ab 1.6.4). Die in Nokogiris lokaler Kopie von parser.h (im Gem-Installationsverzeichnis) definierte Signatur lautet:
Ich war also ratlos darüber, wie der Methodenaufruf in der hermetisch versiegelten Datei conftest.c nicht mit der Header-Datei für parser.h übereinstimmen konnte.
Als ich merkte, dass ich wahrscheinlich einen binären Ruby installiert hatte, entfernte ich ihn und installierte ihn erneut mit
--with-gcc=clang
(um die Kompilierung zu erzwingen und clang zu verwenden) und das Problem wurde gelöst:Ich bin mir nicht ganz sicher, warum das funktioniert, da der libxml-Header des Systems
/usr/include/libxml2/libxml/parser.h
dieselbe Signatur hat wie die lokale Kopie von Nokogiri .Es ist komisch, aber es hat funktioniert. Stellen Sie einfach sicher, dass Sie einen Ruby mit clang kompilieren.
quelle
Ändern Sie Ihre Version damit.
quelle