2012-07-12 14 views
18

Po wykonaniu nowej instalacji systemu Mac OS X 10.8 Mountain Lion i po zainstalowaniu Ruby 1.9.3 i Ruby on Rails 3.2.6, zacząłem konsoli Rails i mam to ostrzeżenie:OSTRZEŻENIE: Nokogiri zostało zbudowane na podstawie wersji LibXML 2.7.3, ale zostało wczytane dynamicznie 2.7.8

UWAGA: Nokogiri został zbudowany przed libxml wersji 2.7.3, ale załadowane dynamicznie 2.7.8

Jak mogę to naprawić?

+0

Oto odpowiedź: [http://stackoverflow.com/questions/16921700/how-to-load-correct-version-of-dynamic-libraries-and-gems-libxml-nokogiri-wit][ 1] [1]: http://stackoverflow.com/questions/16921700/how-to-load-correct-version-of-dynamic-libraries-and-gems-libxml-nokogiri-wit –

Odpowiedz

13

Znalazłem kilka poprawek dla Lwa, ale nie dla Mountain Lion. Niemniej Próbowałem to i to działa:

gem uninstall nokogiri libxml-ruby 

brew update 
brew uninstall libxml2 
brew install libxml2 --with-xml2-config 
brew link libxml2 

brew install libxslt 
brew link libxslt 

gem install nokogiri -- --with-xml2-include=/usr/local/Cellar/libxml2/2.8.0/include/libxml2/ --with-xml2-lib=/usr/local/Cellar/libxml2/2.8.0/lib/ --with-xslt-dir=/usr/local/Cellar/libxslt/1.1.26/ 

źródłowy (dla Lion): https://gist.github.com/1349681

+0

prawdopodobnie działa jednak w środowisku Rails/RVM, odpowiedź @ kyubey jest prawdopodobnie bardziej ogólna. –

+0

To zależy. Są chwile, w których odpowiedź @ kyubey'a nie działa, szczególnie w systemach ze starymi instalacjami ruby. Na nowo zainstalowanym OS X nie ma problemów AFAIK. –

+0

Cześć chłopaki, czy to wokr dla Yosemite ???? – olleh

13

I ponownie zainstalowany Ruby, że to naprawić. Był w stanie korzystać z wbudowanych bibliotek.

+2

To naprawdę jest droga. Wystarczy ponownie zainstalować ruby, a następnie nie musisz się martwić o komplikacje związane z używaniem skompilowanego libxml. – kjg

+3

proste: 'rvm uninstall 1.9.3-p194'. Następnie 'rvm install 1.9.3'. Wszystkie poprzednie klejnoty pozostają. 'klejnot instalacji nokogiri'. Prace! – Meltemi

+0

Musiałem zainstalować Xcode I narzędzia wiersza poleceń, aby ponownie zainstalować Ruby 1.9.3 (nawet jeśli brew-gcc42 nie działa dla mnie).Xcode CLI można zainstalować za pomocą Preferencje -> Pobierz -> Komponenty – danigb

13
gem uninstall nokogiri 
bundle install 

Even Better:

gem pristine nokogiri 

Uwaga:

to nastąpi wielokrotnie jak uaktualnić swój system i biblioteki zmienić.

+1

To zadziałało dla mnie w Mountain Lion (10.8.2). pobierz pakiet ponownie pobrać nokogiri i zrekompilować go, używając libxml, który miałem zainstalowany. –

+0

potwierdź, że działa to dla mnie w Mountain Lion 10.8.2 – nXqd

+0

Użyłem tego dwa razy: "gem pristine nokogiri" –

0

Na podstawie odpowiedzi z @David wystarczyły mi poniższe kroki. Brak flag kompilatora i niestandardowych ścieżek.

gem uninstall nokogiri 

brew update 
brew install libxml2 
brew update libxml2 
brew link libxml2 

gem install nokogiri 
4

Należy pamiętać, że łączenie jak w @Davids stanowisku będzie kolidować z narzędzi budowania i link do OS (co jest najbardziej prawdopodobne, nie to, co chcesz, jeśli używasz napar), ale można po prostu wykonać każde polecenie powyżej wyjątkiem pominąć „Brew Link” linie i wszystko nadal będzie budować dobrze, np:

gem uninstall nokogiri libxml-ruby 
brew update 
brew uninstall libxml2 
brew install libxml2 --with-xml2-config 
brew install libxslt 

gem install nokogiri -- --with-xml2-include=/usr/local/Cellar/libxml2/2.8.0/include/libxml2/ --with-xml2-lib=/usr/local/Cellar/libxml2/2.8.0/lib/ --with-xslt-dir=/usr/local/Cellar/libxslt/1.1.26/ 
+1

To jest typowe pytanie na SO, ale to jest odpowiedź, która naprawiła to dla mnie. Każdy, kto spróbuje tego, powinien pamiętać, że wersje się zmieniły, więc nie kopiuj/wklej ostatniej linii. 'gem install nokogiri - --with-xml2-include =/usr/local/Cellar/libxml2/[VERSION]/include/libxml2/--with-xml2-lib =/usr/local/Cellar/libxml2/[VERSION ]/lib/--with-xslt-dir =/usr/local/Cellar/libxslt/[VERSION]/' –

3

Umieszczenie gem 'nokogiri' powyżej gem 'pg' w moim Gemfile stałe to dla mnie.

Moja Gemfile nie ma w sobie nokogiri, ale była to zależność, która była w Gemfile.lock, więc umieściłem ją w mojej Gemfile jawnie.