2013-04-05 29 views
6

Próbowałem zainstalować Nokogiri na moim komputerze (Mountain Lion), by używać go z rspec i kapibarą, ale w moim życiu nie mogę uruchomić prawidłowo.Uzyskiwanie nokogiri na używanie nowszej wersji libxml2

Z tego, co mogę powiedzieć, problem dotyczy nokogiri używającej niewłaściwej wersji biblioteki libxml2. Do tej pory próbowałem odinstalować i ponownie zainstalować bibliotekę libxml2 przy użyciu Homebrew (upewniając się, że jest najnowsza), odinstalowując i ponownie instalując nokogiri za pomocą pakunku i określając dokładną ścieżkę do plików libxml2, które zostały zainstalowane przez Homebrew podczas instalowania gem nokogiri. Moje najnowsze instrukcje dotyczące instalacji wyglądały tak, jak te wszystkie lokalizacje, które poprawnie odpowiadają lokalizacjom, w których zainstalowane są narzędzia. Jednak po uruchomiony bundle exec rspec spec/requests/static_pages.rb, nadal uzyskać ten wynik:

/Users/alex/.rvm/gems/ruby-1.9.3-p286/gems/nokogiri-1.5.9/lib/nokogiri.rb:28:in `require': dlopen(/Users/alex/.rvm/gems/ruby-1.9.3-p286/gems/nokogiri-1.5.9/lib/nokogiri/nokogiri.bundle, 9): Library not loaded: /usr/local/lib/libxml2.2.dylib (LoadError) 
Referenced from: /Users/alex/.rvm/gems/ruby-1.9.3-p286/gems/nokogiri-1.5.9/lib/nokogiri/nokogiri.bundle 
Reason: Incompatible library version: nokogiri.bundle requires version 12.0.0 or later, but libxml2.2.dylib provides version 10.0.0 - /Users/alex/.rvm/gems/ruby-1.9.3-p286/gems/nokogiri-1.5.9/lib/nokogiri/nokogiri.bundle 
    from /Users/alex/.rvm/gems/ruby-1.9.3-p286/gems/nokogiri-1.5.9/lib/nokogiri.rb:28:in `<top (required)>' 
    from /Users/alex/.rvm/gems/[email protected]/gems/bundler-1.3.4/lib/bundler/runtime.rb:72:in `require' 
    from /Users/alex/.rvm/gems/[email protected]/gems/bundler-1.3.4/lib/bundler/runtime.rb:72:in `block (2 levels) in require' 
    from /Users/alex/.rvm/gems/[email protected]/gems/bundler-1.3.4/lib/bundler/runtime.rb:70:in `each' 
    from /Users/alex/.rvm/gems/[email protected]/gems/bundler-1.3.4/lib/bundler/runtime.rb:70:in `block in require' 
    from /Users/alex/.rvm/gems/[email protected]/gems/bundler-1.3.4/lib/bundler/runtime.rb:59:in `each' 
    from /Users/alex/.rvm/gems/[email protected]/gems/bundler-1.3.4/lib/bundler/runtime.rb:59:in `require' 
    from /Users/alex/.rvm/gems/[email protected]/gems/bundler-1.3.4/lib/bundler.rb:132:in `require' 
    from /Users/alex/Sites/harbingernews/config/application.rb:7:in `<top (required)>' 
    from /Users/alex/Sites/harbingernews/config/environment.rb:2:in `require' 
    from /Users/alex/Sites/harbingernews/config/environment.rb:2:in `<top (required)>' 
    from /Users/alex/Sites/harbingernews/spec/spec_helper.rb:3:in `require' 
    from /Users/alex/Sites/harbingernews/spec/spec_helper.rb:3:in `<top (required)>' 
    from /Users/alex/Sites/harbingernews/spec/requests/static_pages_spec.rb:1:in `require' 
    from /Users/alex/Sites/harbingernews/spec/requests/static_pages_spec.rb:1:in `<top (required)>' 
    from /Users/alex/.rvm/gems/ruby-1.9.3-p286/gems/rspec-core-2.9.0/lib/rspec/core/configuration.rb:746:in `load' 
    from /Users/alex/.rvm/gems/ruby-1.9.3-p286/gems/rspec-core-2.9.0/lib/rspec/core/configuration.rb:746:in `block in load_spec_files' 
    from /Users/alex/.rvm/gems/ruby-1.9.3-p286/gems/rspec-core-2.9.0/lib/rspec/core/configuration.rb:746:in `map' 
    from /Users/alex/.rvm/gems/ruby-1.9.3-p286/gems/rspec-core-2.9.0/lib/rspec/core/configuration.rb:746:in `load_spec_files' 
    from /Users/alex/.rvm/gems/ruby-1.9.3-p286/gems/rspec-core-2.9.0/lib/rspec/core/command_line.rb:22:in `run' 
    from /Users/alex/.rvm/gems/ruby-1.9.3-p286/gems/rspec-core-2.9.0/lib/rspec/core/runner.rb:69:in `run' 
    from /Users/alex/.rvm/gems/ruby-1.9.3-p286/gems/rspec-core-2.9.0/lib/rspec/core/runner.rb:10:in `block in autorun' 

próbowałam wszystkie kroki, które znalazłem w Internecie (większość budynku referencyjnego i ładowania różnych wersji libxml2, jak this one, ale nie miał Sukces, mój Gemfile i Gemfile.lock można znaleźć here.Jeśli ktoś może mi pomóc w ogóle, byłbym bardzo wdzięczny.Nie udało mi się znaleźć żadnych innych przypadkach online z tym problemem.

+0

Jaki jest wynik polecenia 'brew --prefix libxml2'? Zobacz plik extconf.rb w nokogiri/ext/nokogiri /, aby dowiedzieć się, gdzie Nokogiri szuka bibliotek i plików nagłówkowych. –

+0

Oto wyjście: /usr/local/opt/libxml2 Znalazłem plik, do którego się odnosiłeś i myślę, że rozumiem, co to wszystko znaczy, chociaż jestem naprawdę pewien. Czy powinienem dodać ścieżki z Homebrew do listy lokalizacji do sprawdzenia? Jeśli to zrobię, to czy przestaniesz używać starej, zepsutej wersji biblioteki libxml2? – alexlafroscia

+1

Czy przeczytałeś _ [Co zrobić, jeśli libxml2 jest palantem] (https://github.com/sparklemotion/nokogiri/wiki/What-to-do-if-libxml2-is-being-a-jerk) _ ? – Phrogz

Odpowiedz

4

Just aby to wyjaśnić, komentarz Phrogza pomógł mi całkiem sporo.Zrobiłem postępując zgodnie z instrukcjami, które on sam podał, na stronie What to do if libxml2 is being a jerk? na stronie Github Nokogiriego. p używając Macportów zamiast Homebrew, i nie jestem pewien, czy to właśnie spowodowało różnicę (już próbowałem wielu z tych kroków), ale w taki czy inny sposób, wydaje się, że działa teraz dobrze.

+3

Chciałbym zobaczyć rozwiązanie Homebrew. – fatuhoku

9

W Mavericks, instalacja bibliotek z brew i ustawienie NOKOGIRI_USE_SYSTEM_LIBRARIES=1 przed instalacją klejnot zrobił mi lewę.

Podsumowując:

  • Jeśli wcześniej zainstalowany, odinstaluj GEM:
    $ gem uninstall nokogiri

  • Używaj Homebrew zainstalować libxml2, libxslt i libiconv:
    $ brew install libxml2 libxslt libiconv

  • zainstalować gem określając pa ths do bibliotek być połączone przed:
    $ 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"

1

Googled to pytanie po aktualizacji OSX kiedy miałem problem:

require': dlopen(/Users/tomi/.rvm/gems/[email protected]/extensions/x86_64-darwin-12/2.1.0-static/nokogiri-1.5.10/nokogiri/nokogiri.bundle, 9): Library not loaded: /usr/local/opt/libxml2/lib/libxml2.2.dylib (LoadError)

i ten pracował dla mnie

brew uninstall libxml2 libxslt libiconv brew install libxml2 libxslt libiconv

+0

Dane wyjściowe po uruchomieniu polecenia 'install' na OS X Mavericks: ' '' 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 do budowania nie wykrywają poprawnie, sprawdź istniejące formuły dla rozwiązań. "' ' – Webdevotion

8

To pomaga mi zaktualizować l ibxml i poprawnie zainstaluj nokogiri ...

  1. gem uninstall nokogiri libxml-ruby
  2. aktualizacja napar
  3. napar odinstalować libxml2
  4. napar instalacja libxml2 --with-xml2-config
  5. napar Link --force libxml2
  6. napar zainstalować libxslt
  7. brew link --force libxslt
  8. pakiet konfiguracyjny build.nokogiri - --with-xml2- dir =/usr --with-XSLT-dir =/opt/local --with-iconv-dir =/opt/local
  9. pakiet zainstalować

Tu jest źródło: http://www.kormoc.com/2013/12/22/nokogiri-libxml2/

Mam nadzieję, że to pomoże komuś ...

+0

To zadziałało dla mnie :) Dzięki –

+0

Nie działa dla mnie na OS X 10.10.5 niestety :(Nadal narzekałem na libxml2. –