Получение nokogiri для использования новой версии libxml2



Я пытался установить Nokogiri на мой компьютер (Mountain Lion), чтобы использовать его с rspec и capybara, но я не могу заставить его работать должным образом.



Из того, что я могу сказать, проблема заключается в том, что nokogiri использует неправильную версию libxml2. До сих пор я пытался удалить и переустановить libxml2 с помощью Homebrew (убедившись, что это самый последний), удалить и переустановить nokogiri с помощью bundle и указать точный путь к файлам libxml2, которые Homebrew установлен при установке камня нокогири. Мои последние инструкции по установке выглядели следующим образом



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


Где все эти местоположения правильно соответствуют местоположениям, в которых установлены инструменты. Тем не менее, после запуска bundle exec rspec spec/requests/static_pages.rb, я все еще получаю этот вывод:



/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/ruby-1.9.3-p286@global/gems/bundler-1.3.4/lib/bundler/runtime.rb:72:in `require'
from /Users/alex/.rvm/gems/ruby-1.9.3-p286@global/gems/bundler-1.3.4/lib/bundler/runtime.rb:72:in `block (2 levels) in require'
from /Users/alex/.rvm/gems/ruby-1.9.3-p286@global/gems/bundler-1.3.4/lib/bundler/runtime.rb:70:in `each'
from /Users/alex/.rvm/gems/ruby-1.9.3-p286@global/gems/bundler-1.3.4/lib/bundler/runtime.rb:70:in `block in require'
from /Users/alex/.rvm/gems/ruby-1.9.3-p286@global/gems/bundler-1.3.4/lib/bundler/runtime.rb:59:in `each'
from /Users/alex/.rvm/gems/ruby-1.9.3-p286@global/gems/bundler-1.3.4/lib/bundler/runtime.rb:59:in `require'
from /Users/alex/.rvm/gems/ruby-1.9.3-p286@global/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'


Я перепробовал все шаги, которые нашел в интернете (большинство ссылок на создание и загрузку различных версий libxml2, таких как Эта, но пока не добился успеха. Мой Gemfile и файле.замок может быть найдено Здесь . Если кто-нибудь сможет мне помочь, я буду очень признателен. Я не смог найти других случаев в интернете с этой проблемой.

623   4  

4 ответов:

В Mavericks, установка библиотек с brew и установка NOKOGIRI_USE_SYSTEM_LIBRARIES=1 Перед установкой gem сделали трюк для меня.

Резюмируя:

  • Если он был установлен ранее, удалите драгоценный камень:
    $ gem uninstall nokogiri

  • Используйте Homebrew для установки libxml2, libxslt и еще libiconv:
    $ brew install libxml2 libxslt libiconv

  • Установите gem, указав пути к библиотекам, с которыми будут связаны ссылки:
    $ 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"

Это помогает мне обновить libxml и правильно установить nokogiri...

  1. gem uninstall nokogiri libxml-ruby
  2. Обновление brew
  3. brew uninstall libxml2
  4. brew install libxml2 --with-xml2-config
  5. brew link -- force libxml2
  6. brew install libxslt
  7. brew link -- force libxslt
  8. Сборка конфигурации пакета.nokogiri -- -- with-xml2-dir= / usr --with-xslt-dir= / opt / local --with-iconv-dir=/opt / local
  9. Установка пакета

Здесь является источником: http://www.kormoc.com/2013/12/22/nokogiri-libxml2/

Надеюсь, это кому-нибудь поможет...

Просто чтобы было понятно, комментарий Фрогза мне очень помог. Я следовал инструкциям, которые он связал с Что делать, если libxml2 ведет себя как придурок? Страница на странице Гитхаба Нокогири. Я в конечном итоге использовал Macports вместо Homebrew, и я не уверен, что это то, что имело значение (я уже пробовал многие из этих шагов), но так или иначе, это, кажется, работает хорошо сейчас.

Гуглил этот вопрос после обновления OsX, когда у меня была проблема:

require': dlopen(/Users/tomi/.rvm/gems/ruby-2.1.1@my-gemset/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)

И это сработало для меня

brew uninstall libxml2 libxslt libiconv brew install libxml2 libxslt libiconv

Comments

    Ничего не найдено.