2013-04-05 4 views
6

Ich habe versucht, Nokogiri auf meinem Computer (Mountain Lion) zu installieren, um mit Rspec und Capybara zu verwenden, aber für das Leben von mir kann ich es nicht zum Laufen bringen richtig.Ich brauche Nokogiri, um eine neuere Version von libxml2 zu verwenden

Von dem, was ich sagen kann, ist das Problem mit Nokogiri mit der falschen Version von libxml2. Ich habe bis jetzt versucht, libxml2 mit Homebrew zu deinstallieren und neu zu installieren (dabei stelle ich sicher, dass es das neueste ist), nokogiri mit Bundle deinstalliert und neu installiert und den genauen Pfad zu den libxml2-Dateien angegeben, die Homebrew bei der Installation des nokogiri gem installiert hat. Meine letzten Installationsanweisungen sahen so aus:

sudo gem install nokogiri -- --with-xml2-include=/usr/local/Cellar/libxml2/2.9.0/include/libxml2 --with-xml2-lib=/usr/local/Cellar/libxml2/2.9.0/lib --with-xslt-dir=/usr/local/Cellar/libxslt/1.1.28 

wo alle diese Orte korrekt mit den Orten übereinstimmen, an denen die Werkzeuge installiert sind. Doch bei laufenden bundle exec rspec spec/requests/static_pages.rb, bekomme ich immer noch diese Ausgabe:

/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' 

ich alle Schritte versucht haben, die ich online (die meisten Referenzgebäude gefunden haben und verschiedene Versionen von libxml2 Laden, wie this one, aber hatten keine Mein Gemfile und Gemfile.lock kann here gefunden werden. Wenn jemand mir überhaupt helfen kann, würde ich es wirklich schätzen. Ich konnte andere Fälle online mit diesem Problem nicht finden.

+0

Was ist die Ausgabe von 'brew --prefix libxml2'? In der Datei extconf.rb in nokogiri/ext/nokogiri/finden Sie Hinweise, wo Nokogiri nach libs und Header-Dateien sucht. –

+0

Hier ist die Ausgabe: /usr/local/opt/libxml2 Ich fand die Datei, die Sie bezogen haben, und ich denke, ich verstehe, was es bedeutet, obwohl ich wirklich unsicher bin. Soll ich die Pfade von Homebrew zur Liste der zu überprüfenden Orte hinzufügen? Wenn ich das tue, wird Willen aufhören, die alte, falsche Version von libxml2 zu benutzen? – alexlafroscia

+1

Haben Sie gelesen _ [Was zu tun ist, wenn libxml2 ein Idiot ist] (https://github.com/sparklemotion/nokogiri/wiki/What-to-do-i-libxml2-is-being-a-jerk) _ ? – Phrogz

Antwort

4

Just Um es klar zu stellen, half mir Phrogz 'Kommentar ziemlich gut. "Ich folgte den Anweisungen, die er verlinkte, der What to do if libxml2 is being a jerk? Seite auf Nokogiris Github-Seite. Ich beendete u Ich benutze Macports anstelle von Homebrew und bin mir nicht sicher, ob das den Unterschied machte (ich hatte schon viele dieser Schritte ausprobiert), aber auf die eine oder andere Weise scheint es jetzt in Ordnung zu sein.

+3

Nun, ich würde gerne eine Homebrew Lösung sehen. – fatuhoku

9

In Mavericks, die Installation der Bibliotheken mit brew und Einstellung NOKOGIRI_USE_SYSTEM_LIBRARIES=1 vor der Installation der Edelstein hat den Trick für mich.

Summieren:

  • Wenn zuvor installiert ist, deinstallieren Sie das Juwel:
    $ brew install libxml2 libxslt libiconv

  • Installieren Sie das Juwel:
    $ gem uninstall nokogiri

  • Verwenden Homebrew libxml2, libxslt und libiconv zu installieren Angabe der pa ths zu den Bibliotheken gelinkt gegen sein:
    $ 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

gegoogelt nach dem Upgrade OsX diese Frage, wenn ich Problem hatte:

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)

und dies war für mich

brew uninstall libxml2 libxslt libiconv brew install libxml2 libxslt libiconv

+0

Ausgabe beim Ausführen des Befehls 'install' auf OS X Mavericks: ' '' Fehler: Keine verfügbare Formel für libiconv Apple verteilt libiconv mit OS X, Sie können es in/usr/lib finden. Einige Build-Skripte können es nicht richtig erkennen, bitte überprüfen Sie vorhandene Formeln für Lösungen.''' – Webdevotion

8

Dies hilft mir, l zu aktualisieren ibxml und install nokogiri richtig ...

  1. gem uninstall nokogiri libxml-ruby
  2. Gebräu Update
  3. brauen uninstall libxml2
  4. Gebräu libxml2 installieren --with-xml2-config
  5. Gebräu Link --force libxml2
  6. Gebräu installieren libxslt
  7. brauen link --force libxslt
  8. bündeln config build.nokogiri - --with-xml2- dir =/usr --with-xslt-dir =/opt/local --with-iconv-dir =/opt/local
  9. Bündel installieren

Hier ist die Quelle: http://www.kormoc.com/2013/12/22/nokogiri-libxml2/

Hoffe, das hilft jemandem ...

+0

Es funktionierte für mich :) Danke –

+0

Funktionierte nicht für mich auf OS X 10.10.5 leider :(Noch beschweren über libxml2. –

Verwandte Themen