Получение 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 и файле.замок может быть найдено Здесь . Если кто-нибудь сможет мне помочь, я буду очень признателен. Я не смог найти других случаев в интернете с этой проблемой.
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...
- gem uninstall nokogiri libxml-ruby
- Обновление brew
- brew uninstall libxml2
- brew install libxml2 --with-xml2-config
- brew link -- force libxml2
- brew install libxslt
- brew link -- force libxslt
- Сборка конфигурации пакета.nokogiri -- -- with-xml2-dir= / usr --with-xslt-dir= / opt / local --with-iconv-dir=/opt / local
- Установка пакета
Здесь является источником: 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