Próbowałem zainstalować Nokogiri w systemie Mac OS 10.9.3 i cokolwiek próbuję, instalacja kończy się niepowodzeniem i pojawia się następujący komunikat o błędzie:
$ 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
Po wykonaniu wielu wskazówek pomocnych w sieci, w tym zbudowaniu i zainstalowaniu libxml2 i libxslt przy użyciu brew i zbudowaniu libiconv ze źródeł (jak opisano w „ Instalowaniu Nokogiri ”), błąd pozostaje ten sam.
Podczas próby uruchomienia instalacji Nokogiri wydaje się, że libxml2 i libxslt działają poprawnie, ale nie libiconv.
Każdy, kto lepiej zna te rzeczy, wie, jak zainstalować Nokogiri?
gem install nokogiri
, ale potem używam RVM do zarządzania moimi instalacjami Ruby w Mac OS. libxml i libxslt nie są powiązane z iconv, więc polecam zadać pytanie na Nokogiri-talk, które jest ich forum wsparcia. Nie pamiętam, żebym miał jakiekolwiek problemy z iconv podczas instalacji Nokogiri i mam to na kilku maszynach.sudo gem install nokogiri
”. Nie używajsudo
do instalowania klejnotów ani modyfikowania domyślnego Rubiego. Zamiast tego użyj rbenv lub RVM do zarządzania oddzielnym Rubim. Jest to wielokrotnie omawiane w przepełnieniu stosu.Odpowiedzi:
Miałem ten sam problem. Niestety „ Instalacja Nokogiri ” nie obejmuje problemów z Iconv. Oto, jak rozwiązałem problem.
Najpierw zainstaluj homebrew , ułatwi ci to życie. Jeśli masz już zainstalowany, pamiętaj, aby pobrać najnowsze formuły, aktualizując w ten sposób:
Uwaga : W systemie OSX 10.9+ może być konieczne zainstalowanie narzędzi poleceń xCode, aby umożliwić zainstalowanie libiconv.
następnie zainstaluj nowszą wersję libiconv
następnie zainstaluj swój klejnot
źródło
brew install libiconv
to wypluć: Błąd: Brak dostępnej formuły dla libiconv Apple dystrybuuje libiconv z OS X, możesz go znaleźć w / usr / lib. Niektóre skrypty kompilacji nie wykrywają go poprawnie. Sprawdź istniejące formuły pod kątem rozwiązań.xcode-select --install
. To rozwiązało problem.brew install libiconv
uzyskać właściwej formuły, użyj tego:brew tap homebrew/dupes
Yosemite
(10.10) Nie musiałem tego robićbrew
; tylkoxcode-select --install
naprawiłem ten problem dla mnie.Spróbuj użyć bibliotek systemowych. OSX jest dostarczany z libiconv w nowszych wersjach, ale domyślny skrypt instalacyjny wydaje się mieć problem
Edycja: Jeśli korzystasz z pakietu, jak wspomniał Geoff , możesz:
źródło
libxml2 version 2.6.21 or later is required!
.Rozwiązanie @ Cory zawiera poprawną odpowiedź, ale rozwiązanie na Mavericks jest w rzeczywistości znacznie prostsze niż najlepsze rozwiązanie, więc repostuję tylko z niezbędnymi krokami.
Na Mavericks (OSX 10.9+):
Zainstaluj narzędzia wiersza poleceń Xcode:
następnie zainstaluj swój klejnot:
źródło
W końcu udało mi się rozwiązać ten problem. Żadne z powyższych rozwiązań nie rozwiązało tego całkowicie za mnie.
Otrzymałem ten błąd podczas próby
gem install nokogiri
w systemie OSX Lion 10.7.2. Po pierwsze, ten błąd maskuje prawdziwy problem, mówiąc, że brakuje libiconv, ponieważ otrzymasz ten sam błąd, nawet jeśli nokogiri nie może znaleźć libxslt lub libxml2, co w moim przypadku nie może.Postępowałem więc zgodnie z instrukcjami na http://nokogiri.org/tutorials/installing_nokogiri.html w sekcji Homebrew (nieznacznie zmodyfikowane, aby uwzględnić bardziej aktualną wersję libxml2):
W tym momencie postępowałem zgodnie ze wskazówkami na stronie nokogiri i próbowałem
Jednak nadal się to nie powiodło, ponieważ podczas budowania libxslt ze źródła instaluje
/include
folder w dziwacznym miejscu. Musisz więc osobno określić folderylib
i, w teninclude
sposób:To nadal nie działało (ten sam błąd libiconv), więc próbowałem określić wszystkie trzy wymagane biblioteki (libxslt, libxml2 i libiconv):
Teraz mam inny błąd! Wciąż był to błąd, ale przynajmniej był inny. Proces tworzenia nie powiódł się z:
Co? Po wielu googlach natknąłem się na ten cudowny post: http://www.refresherate.com/2010/01/08/fixing-ld-warning-in-usrlocalliblibz-dylib-file-is-not-of-required -architektura/
Najwyraźniej OSX Lion jest dostarczany z niektórymi złymi wersjami biblioteki libz (
libz.dylib, libz.1.dylib, libz.1.2.4.dylib
) i należy je zastąpić najnowszymi wersjami z zestawu Xcode SDK. Artykuł wyjaśnia to lepiej niż ja, więc przeczytaj powyższy link, aby uzyskać szczegółowe instrukcje.Kiedy te zostały wymienione, pobiegłem
znowu i wszystko było dobrze. Mam nadzieję, że to pomoże komuś innemu.
źródło
Właśnie dodałem swój głos do tłumu, ale mkmf.log powiedział coś o niemożności znalezienia symboli dla architektury x86_64. Natknąłem się na to rozwiązanie:
Może nie rozwiązać niczego dla oryginalnego pytającego, ale może to komuś pomóc.
Uwaga boczna: nokogiri było moją największą przeszkodą w używaniu aplikacji ruby. Za każdym razem, gdy ktoś polega na innej wersji, muszę wymyślić, jak ją zbudować. I za każdym razem mój problem jest inny.
źródło
ARCHFLAGS="-arch x86_64" sudo gem install nokogiri -- --use-system-libraries
działało ...gem install nokogiri -v '1.6.6.2' -- --use-system-libraries --with-xml2-include=$(brew --prefix libxml2)/include/libxml2
to działało dla mnie na macos. Działa również z wersją
1.6.6.4
źródło
--with-xml2-include
opcji dla mnie nagem install nokogiri --version=1.6.6.2 -- --use-system-libraries
Używam .. OS X 10.9.4 Homebrew 0.9.4
Oto moje podsumowanie z tego wątku, aby pomyślnie zainstalować nokogiri, naprawiając brakujący libiconv.
Zainstaluj Homebrew http://brew.sh/ Lub zaktualizuj do najnowszej za pomocą poniższego polecenia
Zainstaluj libxml2 libxslt
Połącz oba libxml2 libxslt
Jeśli pojawi się ostrzeżenie o użyciu --force, po prostu użyj poniższego polecenia
Zainstaluj narzędzia poleceń xCode, aby umożliwić zainstalowanie libiconv
Zainstaluj libiconv
Ostatni krok, zainstaluj nokogiri!
źródło
Rozwiązałem to na
Yosemite
prowadzenieRuby 2.1.4
przezxcode-select --install
, następniexcode-select --install
nie działa - westchnij)bundle install
pracował normalnie.Też zrobiłem,
brew install libiconv
ale nie jestem przekonany, że krok był potrzebny.źródło
brew install libiconv
jest to konieczne - nigdy nie zawracałem sobie głowy znalezieniem odpowiedniego pakietu i to działało dobrze. To prawda, mogło to być na moim komputerze od czasu, gdy wcześniej instalowałem nokogiri z Ruby 2.1.1.xcode-select --install
i mogłem zainstalować Nokogiri.Próbowałem wielu rzeczy, ale nic mi nie pomogło. W końcu znalazłem dokumentację iconv i uratowała mi to dzień!
źródło
Patrząc w plik mkmf, okazuje się, że nokogiri (lub gem, nie wiem) próbuje znaleźć zależności w / op / local /. Dla mnie to nie jest właściwa ścieżka, aby ich szukać.
Zmuszenie nokogiri do znalezienia bibliotek we właściwym miejscu (używam homebrew) załatwiło sprawę:
Może jest coś do naprawienia w nokogiri ...
HTH,
źródło
libiconv zostało usunięte z Homebrew 0.9. Teraz zaleca się skompilowanie libiconv ze źródeł, a następnie odniesienie się do instalacji podczas instalacji nokogiri gem. Zobacz instrukcje instalacji Nokogiri w sekcji Homebrew 0.9 na stronie instalacji Nokogiri
źródło
Zajrzyj do pliku mkmf.log w katalogu kompilacji gem (np. /Library/Ruby/Gems/1.8/gems/nokogiri-1.4.4/ext/nokogiri/mkmf.log). To dużo więcej informacji. W moim przypadku, kiedy to trafiłem, było to, że Nokogiri specjalnie dodaje / opt / local / lib do ścieżki wyszukiwania biblioteki, a GNU Backgammon zainstalował tam niekompatybilny libiconv.
źródło
Zakładając, że zainstalowałeś libxml2 i libxslt z MacPorts, możesz nadal otrzymywać ten błąd z powodu niezgodności kolejności ścieżek dołączania i ścieżek łączy używanych przez wywołanie funkcji have_func ('iconv_open', 'iconv.h')
Proste rozwiązanie (łatka): usuń libiconv. * W / usr / local / lib
źródło
tak samo jak powyżej, jest to rozwiązanie dla homebrew i korzystania z instalacji gem (zastosowanie zmian zależy od wersji)
Jednakże, jeśli używasz Gemfile i instalacji pakietu, powinieneś zastosować konfigurację pakietu przed instalacją, tutaj kod
ponownie, zastosowanie zmian zależy od wersji
mam nadzieję, że to ci pomoże.
kredyt: https://gist.github.com/1344331
źródło
Miałem podobne problemy z Mountain Lion. Okazuje się, że wcześniej zainstalowałem libiconv za pośrednictwem pakietu rvm i nie jest to już konieczne w przypadku ruby 1.9.3 / Mountain Lion / nokogiri.
Postępując zgodnie z radą https://rvm.io/packages/ , usunąłem mój katalog $ rvm_path / usr i przebudowałem Ruby 1.9.3. Następnie instalacja nokogiri była prostą instalacją klejnotową. Bez bałaganu z brew / macports / ręczną instalacją źródeł!
źródło
Możesz to również zrobić na Mavericks:
gem install nokogiri - --use-system-libraries = true --with-xml2-include = / Applications / Xcode.app / Contents / Developer / Platforms / MacOSX.platform / Developer / SDKs / MacOSX10.9.sdk / usr / include / libxml2
Po prostu upewnij się, że masz zainstalowany xcode
źródło
Przez chwilę walczyłem z Nokogiri na OS X 10.10 Yosemite
Moje środowisko zostało z jakiegoś powodu pomieszane.
which bundle
iwhich gem
dawali mi/usr/bin/bundle
i/usr/bin/gem
zamiast~/.rbenv/shims/gem
Pomogło mi to poprawić
sudo rm -i /usr/bin/gem /usr/bin/bundle
Następnie: 1. wróciłem do katalogu mojego projektu 2. odinstalowałem zależne 3. (ponownie) zainstalowałem zależne biblioteki: zrobiłem a
brew install libxml2 libiconv libxslt
4. zainstalowałem nową wersję Ruby na świeżo (z rbenv) 5. zrobiłemgem install bundler
6. ibundle install
uruchomiłem bez żadnych problemy.Nokogiri
po tym było dobrze.Na przykład:
źródło
Musisz zaktualizować swój homebrew do wersji 0.9
następnie wykonaj poniższe czynności
Powinieneś dokładnie sprawdzić wersję biblioteki folderów.
źródło
brew create http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.13.1.tar.gz && brew install libiconv
UŻYTKOWNICY HOMEBREW
Prawidłowe rozwiązanie, aby rozwiązać ten problem, jeśli używasz homebrew:
W oknie dialogowym wybierz opcję „Pobierz Xcode”.
Krok xcode-select naprawia instalację Xcode i instalację narzędzi Xcode Command Line Utils. Zauważyłem, że nie mam /usr/include/iconv.h z powodu jakiegoś problemu z aktualizacjami O / S lub przywracaniem z kopii zapasowych. Jeśli nie masz tego pliku nagłówkowego i /usr/lib/libconv.dylib po uruchomieniu xcode-select, najprawdopodobniej będziesz musiał przeciągnąć Xcode z folderu aplikacji do kosza i ponownie zainstalować, a następnie ręcznie pobrać narzędzia wiersza polecenia dla Xcode z https://developer.apple.com/downloads/index.action i zainstaluj to.
Następnie musisz odłączyć libiconv od homebrew. Nie potrzebujesz tego. Clang faktycznie pobierze /usr/local/include/iconv.h przez /usr/include/iconv.h i #define iconv_open do libiconv_open, ale następnie połączy się z /usr/lib/libiconv.dylib, który nie ma libiconv_open, który jest tym, co powoduje, że mkmf nie znajduje pliku libiconv. To, co musisz zrobić, to usunąć linkowanie z iconv.h, aby nokogiri go nie znalazł.
Następnie po prostu zbuduj nokogiri normalnie.
Dla nowych użytkowników wszystko, co powinieneś zrobić, to zainstalować xcode z xcode-select i zainstalować nokogiri, ale jeśli znalazłeś to pytanie, prawdopodobnie masz nieudaną instalację, a nie świeżą instalację Mavericks.
Niektóre z pozostałych odpowiedzi są zdecydowanie niepoprawne. Większość z nich próbuje używać libiconv poza homebrew, co jest całkowicie niepotrzebne. Odpowiedzi na to
brew link libiconv
które faktycznie powodują problem, polegają na tym, że clang jest zdezorientowany i próbuje odczytać plik nagłówkowy homebrew i połączyć się z bibliotekami systemowymi. Odpowiedzi, które sugerują,--use-system-libraries
są słabe, ponieważ nokogiri musi być połączone z dołączonymi do niego bibliotekami libxml2 i libxslt, ponieważ inne wersje tych bibliotek są z nim niekompatybilne. Odpowiedzi, które chcą, abyś skompilował ze źródeł, są po prostu beznadziejnie zbyt skomplikowane.TL; DR:
UŻYTKOWNICY RVM
Stare instalacje RVM mogą mieć plik libiconv ukryty w katalogach rvm, który jest w konflikcie z bibliotekami systemowymi. Więcej informacji można znaleźć pod adresem https://stackoverflow.com/a/11809261/506908 .
UŻYTKOWNICY MacPorts
Jeśli masz /opt/local/lib/libiconv.dylib, wtedy nokogiri dodaje tę ścieżkę do listy katalogów, których szuka, i odnajdzie instalację MacPorts podobną do tego, jak wybiera homebrew libiconv i powoduje konflikt z bibliotekami systemowymi. Możesz spróbować:
Jeśli to się nie powiedzie z powodu zależności, możesz spróbować bezpośrednio połączyć się z wersją MacPorts (nieprzetestowane):
źródło
gem install nokogiri -- --with-iconv-dir=/opt/local
działa dobrze polibiconv
zainstalowaniu MacPortsTen pracował dla mnie
źródło
Wpadłem na to dziś rano ... po uaktualnieniu do Mavericks. Zrobiliśmy wiele rzeczy. Jeśli jednak ktoś ma ten problem, oto kilka rzeczy do wypróbowania.
Uruchomiłem `` xcode-select --install '', a następnie zainstalowałem narzędzia wiersza poleceń (zaskoczone, że nie zaktualizowało się to w aktualizacji systemu operacyjnego). Uruchomiłem 'rvm implode' (zbuduję go później).
Połączyliśmy ze sobą dwa pliki wyjściowe błędów:
~ / .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
Co zdawało się wskazywać, że kompilator c używa zaskakującego ustawienia.
Uciekłem 'env'
Wyjście zawierało:
Te pliki nie istniały w systemie plików ...
Po tych wszystkich zmianach przenoszę się na nowe okna terminala (więc wszystko było świeże). Instalacja vagrant-berkshelf (która z kolei instaluje nokogiri) działała dobrze.
UWAGA: podczas uruchamiania 'env' w nowym oknie nie było już ustawienia dla CC lub CXX ...
Nie jestem pewien co do kluczowej części tego lub czy porządek ma znaczenie, ale próbowałem odtworzyć części, które wydawały się odgrywać rolę w doprowadzeniu do tego.
źródło
gem install nokogiri
powiodło? Czy z komunikatem „już zainstalowano” lub pomyślną instalacją?Zgodnie z dokumentacją, od wersji OSX 10.9 i Homebrew 9.5+ prawdopodobnie brakuje narzędzi programistycznych.
Instalacja Nokogiri
Rozwiązywanie problemów
Jeśli masz problemy ze wzmianką o braku libiconv, który wygląda mniej więcej tak:
Prawdopodobnie brakuje Ci odpowiednich narzędzi programistycznych. To naprawdę łatwe rozwiązanie:
Jest to zweryfikowane podczas pracy na kompilatorze clang w OSX 10.9 w / xcode.
źródło
Ten problem wystąpił po uaktualnieniu systemu Mac OS do Yosemite. Udało mi się rozwiązać ten problem, wykonując:
źródło
Miałem podobny problem i zaakceptowana odpowiedź kiedyś działała dla mnie. Teraz jednak widzę nowy komunikat o błędzie, w którym
gmkdir
brakuje polecenia, jak w tym pytaniu:gem install nokogiri -v '1.5.11' nie powiodło się z powodu: / usr / local / bin / gmkdir: nie ma takiego pliku lub katalogu
To, co zadziałało, to najpierw małe porządki:
A potem
brew unlink libiconv
i cokolwiek innego, co musisz odłączyć (sprawdź zbrew doctor
). Następnie magiczne dwie linie (skopiowane z połączonej odpowiedzi):źródło
Proste kroki, które należy wykonać przed rozpoczęciem odinstalowywania i instalowania czegokolwiek. Sprawdź, czy masz CLT (zainstalowane narzędzia wiersza poleceń):
brew config
zobacz wersję CLT tutaj, jeśli jest zainstalowana, nie ma potrzeby ponownej instalacji.
Oznacza to, że problem polega na tym, że masz pozwolenie, aby ponownie zainstalować tylko klejnot pakietu, aby nie był sudo. Odinstaluj pakiet z
gem uninstall bundler
Install gem bundlergem install bundler
Najważniejszą kwestią jest tutaj zezwolenie, na podstawie którego instalowany jest klejnot pakietu, nigdy nie należy go sudo.
źródło
Przede wszystkim upewnij się, że postępujesz zgodnie z instrukcją instalacji na nokogiri: http://nokogiri.org/tutorials/installing_nokogiri.html
Po skorzystaniu z przewodnika nadal miałem ten problem. Oto jak to rozwiązałem:
Przede wszystkim zainstalowałem iconv używając homebrew: brew install iconv
Potem odinstalowałem Rubiego, na szczęście jest to bardzo łatwe z rvm:
Następnie musiałem ponownie zainstalować Ruby z następującymi opcjami:
Następnie tworzę gemset w nowej wersji ruby:
W końcu mogę zainstalować nokogiri w ten sposób:
źródło
W moim przypadku (podobnie jak w przypadku scotchi) kompilacja nie powiodła się z powodu niezgodnej biblioteki iconv w / opt / local / lib. Domyślnie proces budowania Nokogiri sprawdza najpierw / opt / local. Aby zmusić go do używania innego katalogu instalacyjnego, na przykład / usr / local, wykonaj:
źródło
Ten post na blogu proponuje ręczną instalację libiconv.
Następnie można zainstalować nokogiri z kilkoma przełącznikami informującymi go, gdzie znaleźć libiconv (zobacz wpis na blogu).
Na marginesie: po zainstalowaniu nokogiri udało mi się zainstalować gollum (którego instalacja również się nie powiodła, ponieważ nie mógł znaleźć iconv). Teraz jednak wciąż mam problemy, ponieważ kiedy uruchamiam gollum, Python ulega awarii.
źródło
UWAGA BRAKUJĄCY plik /lib/iconv/iconv.so w 2.0.0-p247, który jest obecny w instalacji 2.0.0-p0 gems.
Skopiuj plik
TERAZ DZIAŁA!
źródło
Musiałem najpierw zainstalować gcc przed uruchomieniem
./configure --prefix=/usr/local/Cellar/libiconv/1.13.1
źródło