Zawsze omijałem problemy z instalacją Nokogiri, postępując zgodnie z dokumentacją w samouczku „ Instalowanie Nokogiri ”.
Ale tym razem, nawet po zainstalowaniu wszystkich zależności, Nokogiri nie zostało zainstalowane. Otrzymuję następujący błąd:
libxml2 is missing. please visit <http://nokogiri.org/tutorials/installing_nokogiri.html>
Próbowałem go zainstalować, określając katalogi libxml2 i libxslt:
sudo gem install nokogiri -- --with-xml2-include=/usr/include/libxml2 --with-xml2-lib=/usr/lib --with-xslt-dir=/usr/
ale zwrócił ten sam błąd.
Śledziłem wszystkie inne powiązane artykuły Stack Overflow i żaden nie pomógł. Czy ktoś ma rozwiązanie?
ruby-on-rails
ruby
rubygems
Rohit A.
źródło
źródło
Odpowiedzi:
Najpierw zainstaluj zależności:
Jeśli nadal pojawia się błąd, być może brakuje łańcucha narzędzi kompilatora:
Jeśli brakuje zestawu narzędzi do kompilacji, pojawi się błąd „brakuje libxml2” (przynajmniej natknąłem się na ten problem w Debianie Lenny).
Nokogiri build testuje-kompiluje plik nagłówkowy libxml2, aby sprawdzić, czy jest obecny, jednak nie rozróżnia między „brakiem libxml2” a „brakiem kompilatora do testowania libxml2”.
źródło
W rzeczywistości może być konieczne zainstalowanie obu tych pakietów
źródło
W systemie Mac OS X (Mavericks) instalacja bibliotek
brew
i ustawienieNOKOGIRI_USE_SYSTEM_LIBRARIES=1
przed instalacją klejnotu załatwiło sprawę.Zreasumowanie:
Jeśli wcześniej był zainstalowany, odinstaluj klejnot:
Użyj Homebrew zainstalować
libxml2
,libxslt
ilibiconv
:Zainstaluj klejnot, określając ścieżki do bibliotek, z którymi mają być połączone:
źródło
$ NOKOGIRI_USE_SYSTEM_LIBRARIES=1 gem install nokogiri
nie załatwibrew install libxml2 libxslt homebrew/dupes/libiconv
do pracy--with-xml2-include="/usr/local/opt/libxml2/include/libxml2"
abygem install nokogiri
komenda działała. W przeciwnym razie pokaże sięlibxml2 version 2.6.21 or later is required!
(moja wersja libxml2 to 2.9.2)Właśnie miałem ten sam problem w Fedorze 13. Po frustrującym i nieudanym wyszukiwaniu
działa dla mnie, udało mi się go zainstalować i obejść błąd libxml2 za pośrednictwem
yum
.Po prostu zainstaluj klejnot za pomocą
yum
zamiastgem
polecenia:Pomogło mi to znaleźć właściwą odpowiedź dla Fedory, a ponieważ używam RVM do zarządzania pakietami Ruby,
wciągnie wszystkie klejnoty i zależności Ruby do systemu, a nie do mojego środowiska RVM, az mojego doświadczenia wynika, że jest to bardzo frustrujące i upokarzające doświadczenie.
Tak więc, biorąc swoje znalezisko klejnotu mniam Nokogiri, którego możesz użyć:
i uzyskaj listę zależności dla rubygem-Nokogiri, która pokazała mi brakujące biblioteki. Potem pobiegłem:
Teraz Nokogiri kompiluje się w Fedorze, a Nokogiri instaluje się. D'oh !, potrzebujemy nagłówków, aby skompilować Nokogiri z bibliotek deweloperskich.
źródło
W systemie Mac OS X (Mavericks), jeśli żadne z tych rozwiązań nie działa, wypróbuj:
lub
w zależności od architektury systemu.
źródło
Zwykle potrzebujesz plików programistycznych do tworzenia klejnotów. Próbować:
(Właśnie zobaczyłem, że Eric zasugerował to samo w komentarzu.)
źródło
Udało mi się to zainstalować z Chocolatey , Windows 8.1 x64 i DevKit x64.
Musisz sprawdzić, czy numer wersji w ścieżkach jest poprawny.
Może być konieczne dodanie repozytorium NuGet firmy Microsoft:
źródło
...\x64\Release\dynamic\cdecl
.chocolatey sources add -name NuGet -source "https://go.microsoft.com/fwlink/?LinkID=230477"
To będzie:
na serwerach RHEL.
źródło
W systemie MacOS żadne z powyższych / poniżej nie działało tak naprawdę dla mnie, dopóki wyraźnie nie podałem ścieżki XCode libxml2 do
--with-xml2-include
.źródło
Udało mi się zainstalować Nokogiri 1.6.5 na Fedorze 20, wykonując:
Następnie bieganie:
źródło
Dla każdego, kto ma ten problem, rozwiązałem go, uruchamiając to polecenie w katalogu projektu
gem install nokogiri -- --use-system-libraries
Aktualizacja: ponownie wpadłem na to i próbowałem zaktualizować klejnot, który działał dla mnie ...
gem update nokogiri
źródło
Czy próbowałeś zainstalować libxml2? Nie z rubygemów, ale poprzez standardowy proces instalacji dla twojego systemu operacyjnego. Na przykład w systemie Ubuntu / Debian:
W każdej najnowszej wersji OS X powinien być już zainstalowany.
źródło
Dla użytkowników OSX, jeśli wcześniej pomyślnie zainstalowałeś Nokogiri, ale pojawiają się błędy podczas instalacji, powiedzmy, przy użyciu nowej wersji Ruby, którą dodałeś i ten błąd, który zawiera komunikat taki jak:
Może to wskazywać na aktualizację XCode, która nastąpiła za pośrednictwem App Store, ręcznie lub automatycznie, i nie otwierałeś go od tego czasu.
Jeśli tak, powinieneś móc otworzyć XCode, wyrazić zgodę na nową licencję, a następnie pomyślnie zainstalować Nokogiri.
źródło
W systemie Mac OS X Yosemite mój błąd polegał na tym, że próbowałem użyć
sudo gem install
ogólnej zasady, aby nie używać uprawnień superużytkownika podczas instalowania klejnotów.W moim przypadku próbował zmodyfikować systemową instalację Rubiego, a to nie jest dobry pomysł. Zainstalowałem rbenv, zainstalowałem Ruby 2.2.2 przez niego i ustawiłem jako
global
, co jest terminem z dokumentacji rbenv. Po tym Nokogiri można było zainstalować za pomocą prostegoŻadne hacki ani obejścia nie były konieczne, wystarczyło odpowiednio ustawić środowisko; Nokogiri robi resztę doskonale.
źródło
sudo
jest OK, JEŚLI rozumiesz, jak to działa, gdzie odniesie skutek, dlaczego instalowane lub aktualizowane pliki powinny zostać zainstalowane i jak cofnąć akcję, jeśli się nie powiedzie. W przeciwnym razie użycie piaskownicy, takiej jak rbenv lub RVM, jest NAPRAWDĘ dobrym pomysłem.Udało mi się zainstalować vagrant-awe, wykonując powyższy post, ale używając następującego polecenia:
źródło
W systemie Windows x64:
Więcej informacji znajdziesz w tym wątku: https://github.com/sparklemotion/nokogiri/issues/864
źródło
Udało mi się zainstalować Nokogiri, uruchamiając następujące pakiety:
źródło
=== TLDR ===
Zgodnie z instrukcją , zbuduj Rubiego za pomocą najnowszego kompilatora clang lub przynajmniej tej samej wersji, której Rubygems użyje do skompilowania natywnych rozszerzeń Nokogiri libxml i libxsl.
Jeśli używasz RVM, budowanie ze źródła z
--with-ggc=clang
flagą było tym, co zrobiło dla mnie:Zastąp
2.2
dowolną wersją.--with-gcc=clang
zapewnia, że RVM buduje się ze źródła i używa do tego clang; w przeciwnym razie RVM może mieć wbudowany plik binarny Ruby, co mnie zaskoczyło.Następnie zainstaluj Nokogiri normalnie za pomocą Bundlera lub Rubygems.
=== W GŁĘBOKOŚCI ===
Przez chwilę walczyłem z tym.
gem install nokogiri
dałeś mi:Zagłębiając się
mkmf.log
, zobaczyłem:Nokogiri dostarcza własne biblioteki libxml i libxsl (od 1.6.4). Podpis zdefiniowany w lokalnej kopii parser.h Nokogiri (znajdującej się w katalogu instalacyjnym gem) to:
Nie mogłem więc zrozumieć, w jaki sposób wywołanie metody w hermetycznie zamkniętym pliku conftest.c nie może się równać z plikiem nagłówkowym parser.h.
Kiedy zdałem sobie sprawę, że prawdopodobnie zainstalowałem binarny Ruby, usunąłem i ponownie zainstalowałem za pomocą
--with-gcc=clang
(aby wymusić kompilację i użyć clang) i problem został rozwiązany:Nie jestem dokładnie pewien, dlaczego to działa, ponieważ nagłówek systemowy libxml
/usr/include/libxml2/libxml/parser.h
ma taką samą sygnaturę jak lokalna kopia Nokogiri.To dziwne, ale zadziałało. Tylko upewnij się, że skompilowałeś Ruby z clang.
źródło
Zmień za jego pomocą swoją wersję.
źródło