web-dev-qa-db-de.com

OS X Lion, Versuch der Installation von Nokogiri - libxml2 fehlt

Sudo gem install nokogiri
Building native extensions.  This could take a while...
ERROR:  Error installing nokogiri:
    ERROR: Failed to build gem native extension.

        /Users/sajeev86/.rvm/rubies/Ruby-1.8.7-p352/bin/Ruby extconf.rb
checking for libxml/parser.h... no
-----
libxml2 is missing.  please visit http://nokogiri.org/tutorials/installing_nokogiri.html for help with installing dependencies.
-----
*** extconf.rb failed ***
Could not create Makefile due to some reason, probably lack of
necessary libraries and/or headers.  Check the mkmf.log file for more
details.  You may need configuration options.

Ich kann Nokogiri nicht dazu bringen, zu installieren. Das hat mich jetzt schon eine Weile belastet. Ich habe die Abhängigkeiten auch über MacPorts und Homebrew installiert.

Ich habe das Gefühl, dass die richtigen Verzeichnisse nicht aufeinander zeigen. Aber habe keine Ahnung, wie ich das reparieren soll.

In Mavericks hat das Installieren der Bibliotheken mit Homebrew und das Setzen von NOKOGIRI_USE_SYSTEM_LIBRARIES=1 Vor dem Installieren des Gems den Trick für mich getan.

Zusammenfassend:

  • Falls bereits installiert, deinstalliere den Gem:
    $ gem uninstall nokogiri

  • Verwenden Sie Homebrew, um libxml2, libxslt und libiconv zu installieren:
    $ brew install libxml2 libxslt libiconv

  • Installieren Sie das Juwel, indem Sie die Pfade zu den Bibliotheken angeben, mit denen verknüpft werden soll:
    $ NOKOGIRI_USE_SYSTEM_LIBRARIES=1 gem install nokogiri -- --use-system-libraries --with-iconv-dir="$(brew --prefix libiconv)" --with-xml2-config="$(brew --prefix libxml2)/bin/xml2-config" --with-xslt-config="$(brew --prefix libxslt)/bin/xslt-config"

43
Eduardo

Absolutnoneder anderen Antworten funktionierte hier für mich.

Bei der neuesten Version von Mavericks war die einzige Methode, die für mich erfolgreich war, folgende:

$ brew install libxml2 libxslt libiconv
$ Sudo gem install nokogiri -v '1.6.5' -- --use-system-libraries --with-xml2-include=/usr/include/libxml2 --with-xml2-lib=/usr/lib
32
Crates

Das gleiche Problem ist mir bei Lion passiert. Habe Stunden damit verbracht, Beiträge zu lesen, Homebrew, Macports usw. auszuprobieren. Als ich diese Post fand und den Inhalt von .rvm/gems/Ruby-1.8.7-p358/gems/nokogiri-1.4.4/ext/las nokogiri/mkmf.log habe ich gesehen:

find_header: checking for libxml/parser.h... -------------------- no

"/usr/bin/gcc-4.2 -E -I. -I/Users/me/.rvm/rubies/Ruby-1.8.7-p358/lib/Ruby/1.8/i686-darwin10.8.0 -I. -I-I-I/opt/local/include -I-I-I/usr/local/include -I-I-I/Users/me/.rvm/rubies/Ruby-1.8.7-p358/include -I-I-I/usr/include -I-I-I/usr/include/libxml2 -I/opt/local/include/libxml2 -I/usr/local/include/libxml2 -I/Users/me/.rvm/rubies/Ruby-1.8.7-p358/include/libxml2 -I-I/opt/local/include -I-I/usr/local/include -I-I/Users/me/.rvm/rubies/Ruby-1.8.7-p358/include -I-I/usr/include -I-I/usr/include/libxml2 -I/opt/local/include -I/usr/local/include -I/Users/me/.rvm/rubies/Ruby-1.8.7-p358/include -I/usr/include -I/usr/include/libxml2  -D_XOPEN_SOURCE -D_DARWIN_C_SOURCE   -g -O2  -fno-common -pipe -fno-common    -g -DXP_UNIX -O3 -Wall -Wcast-qual -Wwrite-strings -Wconversion -Wmissing-noreturn -Winline  conftest.c -o conftest.i"
checked program was:
/* begin */
1: #include <libxml/parser.h>
/* end */

Gcc-4.2 existierte jedoch nicht:

$ ls /usr/bin/gcc*
/usr/bin/gcc

Daher konnte ich das Problem lösen und nokogiri zur Installation bringen, indem ein gcc-4.2 zu einem Symlink zu gcc gemacht wurde.

Sudo ln -s gcc gcc-4.2
16
Rememberer

Ich bin für Mavrick auf dasselbe Problem gestoßen und die Lösung war die 

xcode-select --install

Das funktionierte jedoch nicht, da auf der Apple-Downloadseite dieses Installationsprogramm nicht öffentlich verfügbar ist. Wenn Sie also die Befehlszeilentools für Mavricks benötigen, benötigen Sie ein kostenpflichtiges Konto. Nur Sie können es installieren. Nach der Installation werden Sie diese Ausgabe von Nokogiri nicht mehr sehen.

10
shinesecret

Überprüfen der in der Fehlermeldung angegebenen URL (http://nokogiri.org/tutorials/installing_nokogiri.html) Ich denke, die Frage ist, welche Version von Homebrew Sie verwenden.

brew -v

Ich würde auf 0.8+ aktualisieren 

brew update
brew upgrade

und dann die Installation erneut versuchen:

brew install libxml2 libxslt
brew link libxml2 libxslt
gem install nokogiri
9
ahmeij
brew install libxml2 libxslt 
gem install nokogiri -v '1.6.5' -- --use-system-libraries
6
zires

Für mich hilft es:

brew install libxml2 libxslt

wenn Erlaubnis verweigert wurde Sudo chown -R $USER /Library/Caches/Homebrew/

Sudo env ARCHFLAGS="-Arch x86_64"

export NOKOGIRI_USE_SYSTEM_LIBRARIES=1

NOKOGIRI_USE_SYSTEM_LIBRARIES=1 gem install nokogiri
6
shilovk

Auf Yosemite habe ich verwendet:

brew install libxml2 libxslt
Sudo gem install nokogiri -v '1.6.5' -- --use-system-libraries --with-xml2-include=/usr/include/libxml2 --with-xml2-lib=/usr/lib

Ganz in der Nähe einiger der oben genannten Befehle, jedoch ohne die libconv

Verspätet zur Party, aber falls jemand während der Verwendung von MacPorts immer noch dieses Problem hat: 

Fügen Sie das/include-Verzeichnis zu Ihrem PATH in Ihre .profile-Datei hinzu, damit nokogiri weiß, wo er es finden kann. 

z.B.

MacPorts schreibt in Ihre .profile-Datei und fügt standardmäßig die folgende Zeile hinzu:

export PATH=/opt/local/bin:/opt/local/sbin:$PATH

Fügen Sie zunächst den/include-Pfad wie folgt hinzu:

export PATH=/opt/local/bin:/opt/local/sbin:/opt/local/include/:$PATH

Führen Sie dann das gleiche Terminalfenster aus: 

source ~/.profile

(Dies weist Ihr Terminal an, die .profile-Datei auf etwaige Änderungen zu überprüfen.)

Versuchen Sie schließlich, den Edelstein aus demselben Terminalfenster zu installieren.

Sudo gem install nokogiri
3
user1136698

Für mein etwas veraltetes System mit den oben genannten Problemen, insbesondere:

FENG-SHUI:demo Eric$ brew install libxml2
==> Downloading ftp://xmlsoft.org/libxml2/libxml2-2.9.0.tar.gz
######################################################################## 100.0%
==> Downloading patches
######################################################################## 100.0%
######################################################################## 100.0%
==> Patching patching file threads.c patching file xpath.c
==> ./configure --prefix=/usr/local/Cellar/libxml2/2.9.0 --without-python
==> make
==> make install
==> Caveats This formula is keg-only: so it was not symlinked into /usr/local.

Mac OS X already provides this software and installing another version in parallel can cause all kinds of trouble.

Generally there are no consequences of this for you. If you build your own software and it requires this formula, you'll need to add to your build variables:

    LDFLAGS:  -L/usr/local/opt/libxml2/lib
    CPPFLAGS: -I/usr/local/opt/libxml2/include

Error: Failed to create: /usr/local/opt/libxml2 
Things that depend on libxml2 will probably not build.
    ==> Summary /usr/local/Cellar/libxml2/2.9.0: 273 files, 11M, built in 2.0 minutes 

FENG-SHUI:demo Eric$ brew install libxml2 libxslt 
Error: libxml2-2.9.0 already installed 
Error: /usr/local/opt/libxml2 not present or broken Please reinstall libxml2. Sorry :(

Dies war die Zauberformel, um libxml2 und libxslt zum Laufen zu bringen: 

# latest version 2.9.0
brew install libxml2

# installing libxslt from source code
# get latest libxslt from ftp://xmlsoft.org/libxml2/libxslt-git-snapshot.tar.gz..
# then
./configure --prefix=/usr/local/Cellar/libxslt/1.1.28 --with-libxml-prefix=/usr/local/Cellar/libxml2/2.9.0
make
Sudo make install

# installing nokogiri with this new compiled libs
gem install nokogiri -- --with-xml2-include=/usr/local/Cellar/libxml2/2.9.0/include/libxml2 --with-xml2-lib=/usr/local/Cellar/libxml2/2.9.0/lib --with-xslt-dir=/usr/local/Cellar/libxslt/1.1.28

Danke an diesen Kerl: https://Gist.github.com/fabioyamate/443160

Hoffe das hilft jemandem! 

2
ericpeters0n

Ich musste diesen Befehl verwenden, damit es funktioniert: 

Sudo gem install nokogiri -- --with-xml2-include=/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.10.sdk/usr/include/libxml2 --use-system-libraries

(Quelle: http://www.virtlab.cx/Ruby-fix-error-install-nokogiri-yosemite/ , vielen Dank an den Autor)

1
dulgan

Dies funktionierte für mich unter OSX - genauso wie die Antwort von @ remeberer, jedoch mit einem vollständigen Pfad.

Sudo ln -s/usr/bin/gcc /usr/bin/gcc-4.2

1
Ziad Sawalha

Versuchen Sie, --with-xml2-include=/opt/local/include/libxml2 --with-xml2-lib=/opt/local/lib zu Ihrem Befehl hinzuzufügen, vorausgesetzt, dort ist MacPorts libxml2.

1
noodl

Ich kämpfte stundenlang damit, bis ich diesen Blogpost fand: http://www.markhneedham.com/blog/2010/07/08/installing-Ruby-1-9-2-with-rvm-on-snow- Leopard

Befehl ausführen 

datei /usr/local/lib/libxml2.2.dylib

im Terminal zurückgekehrt 

/usr/local/lib/libxml2.2.dylib: Mit Mach-O dynamisch verknüpfte gemeinsam genutzte Bibliothek i386

was bedeutet, dass meine libxml2.2 für ein 32-Bit-System kompiliert wurde. Daher musste ich libxml2 für ein 64-Bit-Betriebssystem (Lion) neu kompilieren.

Zuerst habe ich LATEST_LIBXML2 von ftp://xmlsoft.org/libxml2 heruntergeladen und die folgenden Befehle ausgeführt:

tar xzvf LATEST_LIBXML2

cd libxml2-2.8.0

./configure --with-python =/System/Library/Frameworks/Python.framework/Versionen/2.3 /

make

Dann habe ich LATEST_LIBXSLT von derselben Site heruntergeladen und diese Befehle ausgeführt:

tar xzvf LATEST_LIBXSLT

cd libxslt-1.1.26

./konfigurieren

make

Sudo make installieren

Laufen 

datei /usr/local/lib/libxml2.2.dylib

wieder zurückgekehrt 

/usr/local/lib/libxml2.2.dylib: Mach-O 64-Bit-dynamisch verknüpfte gemeinsam genutzte Bibliothek x86_64

Und ich könnte endlich nokogiri installieren!

1
Ste

Für mich habe ich einfach folgendes getan

xcode-select --install
gem install nokogiri

Weitere Informationen zur Fehlerbehebung finden Sie unter Nokogiri installieren .

0
iGbanam

Wenn Sie eine ältere Version von Nokogiri installieren, d. H. Vor 1.6, kann dies helfen:

In der Nokogiri Installationsanleitung erwähnen sie:

Weil Nokogiri kompiliert und dynamisch mit .__ verknüpft werden muss. Sowohl libxml2 als auch libxslt haben sich einen Ruf als .__ erarbeitet. kompliziert zu installieren.

Seit Nokogiri 1.6 wird libxml2 und libxslt mit .__ gebündelt. Nokogiri und zum Zeitpunkt der Installation von gem kompiliert. Dieses Dokument sollte funktionieren für alle Versionen 1.6.4 und höher.

(Wenn Sie Unterstützung für die Installation früherer Versionen von Nokogiri benötigen, möchten Sie vielleicht Den git-Verlauf für dieses Dokument betrachten.)

Es ist zwar schwierig zu installieren, aber es gibt einen Weg. Ich ging die Geschichte der Readme durch und entschied mich für diese mit der gut geschriebenen Commit-Nachricht:

" Homebrew, ich hasse dich gerade. "

Aus dieser Nachricht und aus den anderen Antworten hier habe ich erfahren, dass ich bei der Installation von Nokogiri sehr genau auf libxml2s Verzeichnis lib, dir und include verweisen muss. Folgendes funktionierte für mich, aber bitte aktualisieren Sie Ihre Version der libxml2-Software (meine war 2.9.2 und ich habe Nokogiri 1.5.0 installiert):

NOKOGIRI_USE_SYSTEM_LIBRARIES=1 gem install nokogiri -v '1.5.0' -- 
    --use-system-libraries 
    --with-xml2-lib=/usr/local/Cellar/libxml2/2.9.2/lib 
    --with-xml2-config="$(brew --prefix libxml2)/bin/xml2-config" 
    --with-xslt-config="$(brew --prefix libxslt)/bin/xslt-config" 
    --with-xml2-dir=/usr/local/Cellar/libxml2/2.9.2/ 
    --with-xml2-include=/usr/local/Cellar/libxml2/2.9.2/include/libxml2
0
Danny

in Mountain Lion gab es ein ähnliches Installationsproblem, mit der Ausnahme, dass der Befehl make nach gcc-4.2 in/usr/local/opt/Apple-gcc42/bin gesucht hatte

das löste das Problem für mich; Es ist nicht erforderlich, libxml2 oder libxslt zu installieren oder die Option --with hinzuzufügen:

mkdir -p /usr/local/opt/Apple-gcc42/bin
ln -s /usr/bin/gcc /usr/local/opt/Apple-gcc42/bin/gcc-4.2
0
dan_nl