Ich habe versucht, Nokogiri unter Mac OS 10.9.3 zu installieren, und was auch immer ich versuche, die Installation schlägt am Ende mit der folgenden Fehlermeldung fehl:
$ sudo gem install nokogiri -- --with-xml2-include=/usr/local/Cellar/libxml2/2.9.1/include/libxml2 --with-xml2-lib=/usr/local/Cellar/libxml2/2.9.1/lib --with-xslt-dir=/usr/local/Cellar/libxslt/1.1.28 --with-iconv-include=/usr/local/Cellar/libiconv/1.14/include --with-iconv-lib=/usr/local/Cellar/libiconv/1.14/lib
Building native extensions with: '--with-xml2-include=/usr/local/Cellar/libxml2/2.9.1/include/libxml2 --with-xml2-lib=/usr/local/Cellar/libxml2/2.9.1/lib --with-xslt-dir=/usr/local/Cellar/libxslt/1.1.28 --with-iconv-include=/usr/local/Cellar/libiconv/1.14/include --with-iconv-lib=/usr/local/Cellar/libiconv/1.14/lib'
This could take a while...
Building nokogiri using packaged libraries.
ERROR: Error installing nokogiri:
ERROR: Failed to build gem native extension.
/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/bin/ruby extconf.rb --with-xml2-include=/usr/local/Cellar/libxml2/2.9.1/include/libxml2 --with-xml2-lib=/usr/local/Cellar/libxml2/2.9.1/lib --with-xslt-dir=/usr/local/Cellar/libxslt/1.1.28 --with-iconv-include=/usr/local/Cellar/libiconv/1.14/include --with-iconv-lib=/usr/local/Cellar/libiconv/1.14/lib
Building nokogiri using packaged libraries.
checking for iconv.h... yes
checking for iconv_open() in iconv.h... no
checking for iconv_open() in -liconv... no
checking for libiconv_open() in iconv.h... no
checking for libiconv_open() in -liconv... no
-----
libiconv 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.
Provided configuration options:
--with-opt-dir
--without-opt-dir
--with-opt-include
--without-opt-include=${opt-dir}/include
--with-opt-lib
--without-opt-lib=${opt-dir}/lib
--with-make-prog
--without-make-prog
--srcdir=.
--curdir
--ruby=/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/bin/ruby
--help
--clean
--use-system-libraries
--enable-static
--disable-static
--with-zlib-dir
--without-zlib-dir
--with-zlib-include
--without-zlib-include=${zlib-dir}/include
--with-zlib-lib
--without-zlib-lib=${zlib-dir}/lib
--enable-cross-build
--disable-cross-build
Gem files will remain installed in /Library/Ruby/Gems/2.0.0/gems/nokogiri-1.6.2.1 for inspection.
Results logged to /Library/Ruby/Gems/2.0.0/gems/nokogiri-1.6.2.1/ext/nokogiri/gem_make.out
Nachdem Sie viele Hilfen im Internet befolgt haben, einschließlich des Erstellens und Installierens von libxml2 und libxslt mithilfe von Brew und des Erstellens von libiconv aus den Quellen (wie unter " Installieren von Nokogiri " beschrieben), bleibt der Fehler derselbe.
Beim Versuch, die Installation für Nokogiri auszuführen, scheinen libxml2 und libxslt in Ordnung zu sein, nicht jedoch libiconv.
Wer diese Dinge besser kennt, weiß, wie man Nokogiri installiert?
gem install nokogiri
RVM, aber dann verwende ich RVM, um meine Mac OS Ruby-Installationen zu verwalten. libxml und libxslt haben nichts mit iconv zu tun, daher würde ich empfehlen, Ihre Frage zu Nokogiri-talk zu stellen, dem Support-Forum. Ich erinnere mich nicht, dass ich bei der Installation von Nokogiri irgendwelche Iconv-Probleme hatte, und ich habe sie auf einer Reihe von Computern.sudo gem install nokogiri
". Verwenden Siesudo
diese Option nicht , um Edelsteine zu installieren oder den Standard-Ruby zu ändern. Verwenden Sie stattdessen rbenv oder RVM, um einen separaten Ruby zu verwalten. Dies wird beim Stapelüberlauf mehrmals behandelt.Antworten:
Ich hatte das gleiche Problem. Leider behandelt die " Installation von Nokogiri " keine Iconv-Probleme. So habe ich das Problem behoben.
Installieren Sie zuerst Homebrew , es wird Ihnen das Leben leichter machen. Wenn Sie es bereits installiert haben, stellen Sie sicher, dass Sie die neuesten Formeln herunterladen, indem Sie es wie folgt aktualisieren:
Hinweis : In OSX 10.9+ müssen Sie möglicherweise xCode-Befehlstools installieren, damit Sie libiconv installieren können.
Installieren Sie dann eine neuere Version von libiconv
Dann installiere deinen Edelstein
quelle
brew install libiconv
es auszuspuckenxcode-select --install
. Dies hat das Problem für mich behoben.brew install libiconv
die richtige Formel finden, verwenden Sie diese:brew tap homebrew/dupes
Yosemite
(10.10) Ich musste dasbrew
Zeug nicht machen; Nur das hatxcode-select --install
dieses Problem für mich behoben.Versuchen Sie es mit den Systembibliotheken. OSX wird in neueren Versionen mit libiconv geliefert, aber das Standardinstallationsskript scheint ein Problem zu haben
Bearbeiten: Wenn Sie Bundler verwenden, wie von Geoff erwähnt , können Sie Folgendes tun:
quelle
libxml2 version 2.6.21 or later is required!
.@ Corys Lösung enthält die richtige Antwort, aber die Lösung für Mavericks ist tatsächlich viel einfacher als die Top-Lösung, sodass ich nur mit den erforderlichen Schritten neu poste.
Auf Mavericks (OSX 10.9+):
Installieren Sie die Xcode-Befehlszeilentools:
Dann installiere deinen Edelstein:
quelle
Ich konnte dieses Problem endlich lösen. Keine der oben genannten Lösungen hat es für mich vollständig behoben.
Ich habe diesen Fehler beim Versuch
gem install nokogiri
unter OSX Lion 10.7.2 erhalten. Zuallererst maskiert dieser Fehler das eigentliche Problem, indem er sagt, dass libiconv fehlt, da Sie den gleichen Fehler erhalten, selbst wenn nokogiri libxslt oder libxml2 nicht finden kann, was in meinem Fall nicht möglich war.Also habe ich die Anweisungen auf http://nokogiri.org/tutorials/installing_nokogiri.html im Abschnitt Homebrew befolgt (leicht modifiziert, um eine aktuellere Version von libxml2 zu berücksichtigen):
Zu diesem Zeitpunkt folgte ich den Anweisungen auf der Nokogiri-Website und versuchte es
Dies schlug jedoch immer noch fehl, da beim Erstellen von libxslt aus dem Quellcode der
/include
Ordner an einem unkonventionellen Ort installiert wird . So müssen Sie die angebenlib
undinclude
Ordner separat wie folgt:Dies funktionierte immer noch nicht (gleicher libiconv-Fehler), daher habe ich versucht, alle drei erforderlichen Bibliotheken (libxslt, libxml2 und libiconv) anzugeben:
Jetzt habe ich einen anderen Fehler! Es war immer noch ein Fehler, aber zumindest war es anders. Der Erstellungsprozess schlug fehl mit:
Ähh, was? Nach langem googeln bin ich auf diesen Wunderbeitrag gestoßen: http://www.refresherate.com/2010/01/08/fixing-ld-warning-in-usrlocalliblibz-dylib-file-is-not-of-required -die Architektur/
Anscheinend wird OSX Lion mit einigen fehlerhaften Versionen der libz-Bibliothek (
libz.dylib, libz.1.dylib, libz.1.2.4.dylib
) ausgeliefert und muss durch die neuesten Versionen aus dem Xcode SDK ersetzt werden. Der Artikel erklärt es besser als ich kann, also lesen Sie den obigen Link für spezifische Anweisungen.Sobald diese ersetzt wurden, rannte ich
wieder und alles war gut. Ich hoffe das hilft jemand anderem.
quelle
Ich habe nur meine Stimme der Menge hinzugefügt, aber mkmf.log hat etwas darüber gesagt, dass ich keine Symbole für die x86_64-Architektur finden kann. Ich bin über diese Lösung gestolpert:
Kann nichts für den ursprünglichen Fragesteller lösen, aber dies kann jemandem helfen.
Randnotiz: Nokiaogiri war meine größte Hürde für die Verwendung von Rubinanwendungen. Jedes Mal, wenn jemand von einer anderen Version abhängt, muss ich herausfinden, wie man sie erstellt. Und mein Problem ist jedes Mal anders.
quelle
ARCHFLAGS="-arch x86_64" sudo gem install nokogiri -- --use-system-libraries
funktioniert ...gem install nokogiri -v '1.6.6.2' -- --use-system-libraries --with-xml2-include=$(brew --prefix libxml2)/include/libxml2
Das hat bei mir auf Macos funktioniert. Es funktioniert auch mit Version
1.6.6.4
quelle
--with-xml2-include
Option für mich auf Catalina ...gem install nokogiri --version=1.6.6.2 -- --use-system-libraries
Ich benutze .. OS X 10.9.4 Homebrew 0.9.4
Hier ist mein Sommer von diesem Thread, um nokogiri erfolgreich zu installieren und fehlende libiconv zu beheben.
Installieren Sie Homebrew http://brew.sh/ oder aktualisieren Sie es mit dem folgenden Befehl auf den neuesten Stand
Installieren Sie libxml2 libxslt
Verknüpfen Sie beide libxml2 libxslt
Wenn Sie eine Warnung zur Verwendung von --force erhalten, verwenden Sie einfach den folgenden Befehl
Installieren Sie die xCode-Befehlstools, damit Sie libiconv installieren können
Installieren Sie libiconv
Letzter Schritt, installieren Sie nokogiri!
quelle
Ich löste dies auf
Yosemite
LaufenRuby 2.1.4
durchxcode-select --install
, dannxcode-select --install
nicht funktioniert - seufz)bundle install
wie gewohnt gearbeitet.Ich habe auch eine gemacht,
brew install libiconv
aber ich bin nicht überzeugt, dass ein Schritt nötig war.quelle
brew install libiconv
es notwendig ist - ich habe mich nie darum gekümmert, das richtige Paket zu finden, und das hat für mich gut funktioniert. Zugegeben, es war möglicherweise auf meinem Computer, als ich zuvor nokogiri mit Ruby 2.1.1 installiert habe.xcode-select --install
und konnte Nokogiri installieren.Ich habe viele Dinge ausprobiert, aber nichts hat bei mir funktioniert. Dann habe ich endlich die iconv-Dokumentation gefunden und sie hat mir den Tag gerettet!
quelle
Wenn man in die mkmf-Datei schaut, scheint es, dass Nokia (oder Edelstein, ich weiß nicht) versucht, Abhängigkeiten in / op / local / zu finden. Für mich ist es nicht der richtige Weg, sie zu suchen.
Nokogiri zu zwingen, die Bibliotheken am richtigen Ort zu finden (ich benutze Homebrew), hat den Trick für mich getan:
Vielleicht gibt es in Nokia etwas zu reparieren ...
HTH,
quelle
libiconv wurde aus Homebrew 0.9 entfernt. Nun wird empfohlen, libiconv aus dem Quellcode zu kompilieren und dann auf die Installation zu verweisen, wenn Sie das nokogiri-Juwel installieren. Weitere Informationen finden Sie in den Installationsanweisungen für Nokogiri im Abschnitt Homebrew 0.9 auf der Installationsseite für Nokogiri
quelle
Suchen Sie in der Datei mkmf.log im Build-Verzeichnis des Gems (z. B. /Library/Ruby/Gems/1.8/gems/nokogiri-1.4.4/ext/nokogiri/mkmf.log). Das hat viel mehr Infos. In meinem Fall, als ich dies traf, fügte Nokogiri dem Suchpfad der Bibliothek speziell / opt / local / lib hinzu, und GNU Backgammon hatte dort ein inkompatibles libiconv installiert.
quelle
Angenommen, Sie haben libxml2 und libxslt mit MacPorts installiert, wird dieser Fehler möglicherweise immer noch angezeigt, da die Reihenfolge der Include-Pfade und Link-Pfade, die vom Aufruf von have_func ('iconv_open', 'iconv.h') verwendet werden, nicht übereinstimmt.
Einfache (Patch-) Lösung: Löschen Sie libiconv. * In / usr / local / lib
quelle
Wie oben ist dies die Lösung für Homebrew und die Verwendung von gem install (das Anwenden von Änderungen hängt von Ihrer Version ab.)
Wenn Sie jedoch Gemfile und die Bundle-Installation verwenden, sollten Sie vor der Installation die Bundle-Konfiguration anwenden, hier den Code
Auch hier hängt das Anwenden von Änderungen von Ihrer Version ab
hoffe das wird dir helfen.
Anerkennung: https://gist.github.com/1344331
quelle
Ich hatte ähnliche Probleme mit Mountain Lion. Es stellte sich heraus, dass ich libiconv zuvor über ein RVM-Paket installiert hatte und dies für Ruby 1.9.3 / Mountain Lion / Nokiaogiri nicht mehr erforderlich ist.
Auf Anraten von https://rvm.io/packages/ habe ich mein Verzeichnis $ rvm_path / usr gelöscht und Ruby 1.9.3 neu erstellt. Danach war die Installation von nokogiri eine einfache Edelsteininstallation. Kein Durcheinander mit Brew / Macports / manuellen Quellinstallationen!
quelle
Sie können dies auch bei Mavericks tun:
gem install nokogiri - --use-system-library = true --with-xml2-include = / Anwendungen / Xcode.app / Inhalt / Entwickler / Plattformen / MacOSX.platform / Entwickler / SDKs / MacOSX10.9.sdk / usr / include / libxml2
Stellen Sie einfach sicher, dass Sie xcode installiert haben
quelle
Ich habe heute eine Weile mit Nokogiri unter OS X 10.10 Yosemite gekämpft
Meine Umgebung war aus irgendeinem Grund durcheinander.
which bundle
undwhich gem
gaben mir/usr/bin/bundle
und/usr/bin/gem
statt~/.rbenv/shims/gem
Was mir geholfen hat, es zu korrigieren, war
sudo rm -i /usr/bin/gem /usr/bin/bundle
Danach habe ich: 1. wieder in mein Projektverzeichnis gewechselt 2. die abhängigen Bibliotheken deinstalliert 3. die abhängigen Bibliotheken (neu) installiert: habe eine
brew install libxml2 libiconv libxslt
4. meine Ruby-Version frisch installiert (mit rbenv) 5. habegem install bundler
6. undbundle install
lief ohne Probleme.Nokogiri
war danach in Ordnung.Als Referenz:
quelle
Sie müssen Ihr Homebrew auf 0,9 aktualisieren
Befolgen Sie dann diese Schritte
Sie sollten die Version der Ordnerbibliothek überprüfen.
quelle
brew create http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.13.1.tar.gz && brew install libiconv
HOMEBREW-BENUTZER
Richtige Lösung, um dieses Problem zu beheben, wenn Sie Homebrew verwenden:
Wählen Sie "Get Xcode" aus dem Dialogfeld.
Der Schritt xcode-select behebt Ihre Xcode-Installation und die Installation der Xcode Command Line Utils. Ich habe festgestellt, dass ich /usr/include/iconv.h aufgrund eines Problems mit O / S-Upgrades oder Wiederherstellungen von Backups nicht hatte. Wenn Sie diese Header-Datei und /usr/lib/libconv.dylib nach dem Ausführen von xcode-select nicht haben, müssen Sie Xcode höchstwahrscheinlich aus dem Anwendungsordner in den Papierkorb ziehen und neu installieren und dann die Befehlszeilentools für Xcode manuell herunterladen von https://developer.apple.com/downloads/index.action und installieren Sie das.
Dann müssen Sie die Verknüpfung der libiconv von Homebrew trennen. Das brauchst du nicht. Und clang nimmt tatsächlich /usr/local/include/iconv.h über /usr/include/iconv.h auf und definiert #defv iconv_open zu libiconv_open, verlinkt dann aber gegen /usr/lib/libiconv.dylib, das nicht über libiconv_open verfügt Dies führt dazu, dass die mkmf-Fehler libiconv finden. Was Sie tun müssen, ist die Verknüpfung von iconv.h zu entfernen, damit nokogiri sie nicht findet.
Dann bauen Sie einfach normal nokogiri.
Für neue Benutzer müssen Sie lediglich xcode mit xcode-select installieren und nokogiri installieren. Wenn Sie diese Frage gefunden haben, haben Sie vermutlich eine verpfuschte Installation und keine Neuinstallation von Mavericks.
Einige der anderen Antworten hier sind definitiv falsch. Die meisten von ihnen versuchen, libiconv aus Homebrew heraus zu verwenden, was völlig unnötig ist. Die Antworten,
brew link libiconv
die tatsächlich das Problem verursachen, bei dem Klirren verwirrt wird und versucht, eine Homebrew-Header-Datei zu lesen und mit den Systembibliotheken zu verknüpfen. Die Antworten, die darauf hindeuten,--use-system-libraries
sind schlecht, da nokogiri mit den gebündelten Bibliotheken libxml2 und libxslt verknüpft werden muss, da andere Versionen dieser Bibliotheken nicht damit kompatibel sind. Die Antworten, die Sie aus Quellen zusammenstellen sollen, sind einfach hoffnungslos zu kompliziert.TL; DR:
RVM-BENUTZER
Bei alten RVM-Installationen versteckt sich möglicherweise ein libiconv in Ihren rvm-Verzeichnissen, die mit Ihren Systembibliotheken in Konflikt stehen. Weitere Informationen finden Sie unter https://stackoverflow.com/a/11809261/506908 .
MacPorts BENUTZER
Wenn Sie über /opt/local/lib/libiconv.dylib verfügen, fügt nokogiri diesen Pfad zur Liste der Verzeichnisse hinzu, nach denen gesucht wird, und findet die MacPorts-Installation ähnlich wie die Homebrew-Libiconv und Konflikte mit den Systembibliotheken. Du kannst es versuchen:
Wenn dies aufgrund von Abhängigkeiten fehlschlägt, können Sie versuchen, eine direkte Verknüpfung mit der MacPorts-Version herzustellen (nicht getestet):
quelle
gem install nokogiri -- --with-iconv-dir=/opt/local
funktioniertlibiconv
Dieser hat für mich gearbeitet
quelle
Ich bin heute Morgen darauf gestoßen ... nach einem Upgrade auf Mavericks. Wir haben viele Dinge getan. Wenn jedoch jemand dieses Problem hat, sollten Sie einige Dinge ausprobieren.
Ich habe 'xcode-select --install' ausgeführt und dann die Befehlszeilentools installiert (überrascht, dass dies auf dem Betriebssystem ugrade nicht aktualisiert wurde). Ich habe 'rvm implode' ausgeführt (ich werde es später wieder aufbauen).
Wir haben zwei Fehlerausgabedateien zusammengesetzt:
~ / .vagrant.d / gems / gems / nokogiri-1.6.3.1 / ext / nokogiri / gem_make.out
~ / .vagrant.d / gems / gems / nokogiri-1.6.3.1 / ext / nokogiri / tmp / x86_64-apple-darwin12.5.0 / ports / libxml2 / 2.8.0 / configure.log
Dies schien darauf hinzudeuten, dass der c-Compiler eine überraschende Einstellung verwendete.
Ich lief 'env'
Ausgabe enthalten:
Diese Dateien waren im Dateisystem nicht vorhanden ...
Nach all diesen Änderungen wurde in ein neues Terminalfenster gewechselt (also war alles frisch). Die Installation von Vagrant-Berkshelf (das wiederum Nokogiri installiert) hat gut funktioniert.
HINWEIS: Beim Ausführen von 'env' im neuen Fenster gab es keine Einstellung mehr für CC oder CXX ...
Unsicher in Bezug auf den Schlüsselteil oder ob die Reihenfolge wichtig ist, aber versucht, die Teile neu zu erstellen, die eine Rolle dabei zu spielen schienen, damit dies funktioniert.
quelle
gem install nokogiri
erfolgreich ist? Widerrist mit der Meldung "bereits installiert" oder einer erfolgreichen Installation?Laut Dokumentation fehlen Ihnen ab OSX 10.9 und Homebrew 9.5+ wahrscheinlich die Entwicklungstools.
Nokogiri Installation
Fehlerbehebung
Wenn Sie Probleme haben, das Fehlen von libiconv zu erwähnen, sieht das ungefähr so aus:
Dann fehlen Ihnen wahrscheinlich die richtigen Entwicklertools. Dies ist eine wirklich einfache Lösung:
Dies wird unter Verwendung des Clang-Compilers von OSX 10.9 mit xcode überprüft.
quelle
Ich habe dieses Problem erhalten, als ich mein Mac OS auf Yosemite aktualisiert habe. Ich konnte dieses Problem lösen, indem ich Folgendes tat:
quelle
Ich hatte ein ähnliches Problem und die akzeptierte Antwort funktionierte für mich. Jetzt habe ich jedoch eine neue Fehlermeldung gesehen, bei der ein
gmkdir
Befehl wie in dieser Frage fehlt:gem install nokogiri -v '1.5.11' ist fehlgeschlagen, weil: / usr / local / bin / gmkdir: Keine solche Datei oder kein solches Verzeichnis
Was für mich funktioniert hat, war zuerst eine kleine Bereinigung:
Und dann
brew unlink libiconv
und was auch immer Sie sonst brauchen, um die Verbindung zu trennen (überprüfen Sie mitbrew doctor
). Dann die magischen zwei Zeilen (kopiert aus der verknüpften Antwort):quelle
Befolgen Sie einfach die Schritte, bevor Sie mit der Deinstallation und Installation beginnen. Überprüfen Sie, ob Sie CLT (Befehlszeilentools installiert) haben:
brew config
Die CLT-Version finden Sie hier, wenn sie installiert ist und keine Neuinstallation erforderlich ist.
Dies bedeutet, dass das Problem mit der Erlaubnis ist, dass Sie nur Bundler Gem neu installieren, machen Sie es nicht sudo. Bundler deinstallieren mit
gem uninstall bundler
neu installierten Gem Bundlergem install bundler
Der wichtigste Punkt hierbei ist die Erlaubnis, unter der Bundler Gem installiert wird. Es sollte niemals sudoed werden.
quelle
Befolgen Sie zunächst die Installationsanleitung für nokogiri: http://nokogiri.org/tutorials/installing_nokogiri.html
Nachdem ich dem Leitfaden gefolgt war, hatte ich immer noch dieses Problem. So habe ich es gelöst:
Zuerst habe ich iconv mit homebrew installiert: Brew install iconv
Dann habe ich Ruby deinstalliert, zum Glück ist das mit rvm sehr einfach:
Dann musste ich Ruby mit den folgenden Optionen neu installieren:
Dann erstelle ich ein Gemset mit der neuen Ruby-Version:
Dann kann ich endlich nokogiri so installieren:
quelle
In meinem Fall (wie bei Scotchi) ist der Build aufgrund einer inkompatiblen iconv-Bibliothek in / opt / local / lib fehlgeschlagen. Standardmäßig überprüft der Nokiaogiri-Erstellungsprozess zuerst / opt / local. Gehen Sie folgendermaßen vor, um die Verwendung eines anderen Installationsverzeichnisses zu erzwingen, z. B. / usr / local.
quelle
In diesem Blogbeitrag wird vorgeschlagen, libiconv manuell zu installieren.
Anschließend kann nokogiri mit einer Reihe von Schaltern installiert werden, die angeben, wo sich libiconv befindet (siehe Blog-Beitrag).
Als Randnotiz: Nach der Installation von nokogiri konnte ich gollum installieren (die Installation schlug ebenfalls fehl, da iconv nicht gefunden werden konnte). Jetzt habe ich immer noch Probleme, denn wenn ich Gollum starte, stürzt Python ab.
quelle
HINWEIS DIE FEHLENDE Datei /lib/iconv/iconv.so in 2.0.0-p247, die in der Edelsteininstallation 2.0.0-p0 vorhanden ist.
Kopieren Sie die Datei über
JETZT GEHTS!
quelle
Ich musste zuerst gcc installieren, bevor ich laufen konnte
./configure --prefix=/usr/local/Cellar/libiconv/1.13.1
quelle