Несовместимая версия библиотеки: nokogiri.bundle требуется версия 11.0.0 или новее, но libxml2.2.dylib

Я получаю эту ошибку при попытке запустить rspec в учебнике Hartl. Я googled ошибка, но это никогда не для конкретной версии, и исправления на самом деле не исправляют мою проблему.

/Users/Jimbo/.rvm/gems/ruby-2.0.0-p247/gems/nokogiri-1.6.0/lib/nokogiri.rb:28:in `require': dlopen(/Users/Jimbo/.rvm/gems/ruby-2.0.0-p247/gems/nokogiri-           1.6.0/lib/nokogiri/nokogiri.bundle, 9): Library not loaded:    /Users/Jimbo/.bundler/tmp/22862/gems/nokogiri-1.6.0/ports/i686-apple-   darwin11/libxml2/2.8.0/lib/libxml2.2.dylib (LoadError)
Referenced from: /Users/Jimbo/.rvm/gems/ruby-2.0.0-p247/gems/nokogiri-  1.6.0/lib/nokogiri/nokogiri.bundle
Reason: Incompatible library version: nokogiri.bundle requires version 11.0.0 or later, but libxml2.2.dylib provides version 10.0.0 - /Users/Jimbo/.rvm/gems/ruby-2.0.0-p247/gems/nokogiri-1.6.0/lib/nokogiri/nokogiri.bundle
from /Users/Jimbo/.rvm/gems/ruby-2.0.0-p247/gems/nokogiri-1.6.0/lib/nokogiri.rb:28:in `<top (required)>'
from /Users/Jimbo/.rvm/gems/ruby-2.0.0-p247/gems/capybara-2.1.0/lib/capybara.rb:2:in `require'
from /Users/Jimbo/.rvm/gems/ruby-2.0.0-p247/gems/capybara-2.1.0/lib/capybara.rb:2:in `<top (required)>'
from /Users/Jimbo/.rvm/gems/[email protected]/gems/bundler-1.3.5/lib/bundler/runtime.rb:72:in `require'
from /Users/Jimbo/.rvm/gems/[email protected]/gems/bundler-1.3.5/lib/bundler/runtime.rb:72:in `block (2 levels) in require'
from /Users/Jimbo/.rvm/gems/[email protected]/gems/bundler-1.3.5/lib/bundler/runtime.rb:70:in `each'
from /Users/Jimbo/.rvm/gems/[email protected]/gems/bundler-1.3.5/lib/bundler/runtime.rb:70:in `block in require'
from /Users/Jimbo/.rvm/gems/[email protected]/gems/bundler-1.3.5/lib/bundler/runtime.rb:59:in `each'
from /Users/Jimbo/.rvm/gems/[email protected]/gems/bundler-1.3.5/lib/bundler/runtime.rb:59:in `require'
from /Users/Jimbo/.rvm/gems/[email protected]/gems/bundler-1.3.5/lib/bundler.rb:132:in `require'

Ответы

Ответ 1

Я предлагаю вам сначала удалить Nokogiri, используя:

sudo gem uninstall nokogiri

Затем установите Nokogiri с помощью rubygems:

gem install nokogiri

Если это не сработает, открыть вопрос в Nokogiri для поддержки libxml 2.9.0 и более поздних версий. Там есть ветвь libxml2-2.9.1, которая была запущена в процессе подготовки к следующей версии libxml2.

Затем попробуйте вытащить из этой ветки в свой Gemfile вот так:

gem "nokogiri", github: "sparklemotion/nokogiri", branch: "libxml2-2.9.1"

или установите более старую версию libxml2.

Если это все еще не работает, вы также можете попробовать здесь предложения: Что делать, если libxml2 является рывком.

Ответ 2

Не уверен, что это кому-то помогает, но я могу просто установить nokogiri с помощью системных libs

gem install nokogiri -- --use-system-libraries

Ответ 3

В сообщении об ошибке говорится:

nokogiri.bundle требуется версия 11.0.0 или новее, но libxml2.2.dylib обеспечивает версию 10.0.0

Это заставляет меня думать, что на ваш драгоценный камень на самом деле требуется версия libxml, более новая, чем ваша версия системы. Как вы установили libxml2? Если у вас установлен доморощенный, вы можете попробовать обновить его с помощью

brew update
brew upgrade

Мне удалось установить Nokogiri 1.6.0 с Ruby 2.0.0p247 на OS X 10.9, а затем потребовать его в IRb. Я дважды проверил с Homebrew, и это на самом деле keg-only. Однако Nokogiri, похоже, устанавливает свою версию в gems/nokogiri-1.6.0/ports. На моей машине это находится под x86_64-apple-darwin13.0.0.

Ответ 4

Если у вас установлен Homebrew, попробуйте это. Он решает проблему с зависанием "Документации по анализу для nokogiri-1.6.1". Это сработало для меня.

gem uninstall nokogiri libxml-ruby

Он задаст вам ряд вопросов, исходя из того, сколько из них вы хотите удалить, ответьте "да" или "[y]" всем.

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

gem install nokogiri --no-rdoc --no-ri 

Затем в файле проекта:

bundle install 

Ответ 5

Повторная установка драгоценного камня не работала для меня и не тянула конкретную ветку.

Это не идеально, но я обнаружил, что откат до 1.5.9 решил проблему.

Ответ 6

Сначала проверьте версию libxml:

otool -L /usr/lib/libxml2.2.dylib

Он может вернуться

/usr/local/opt/libxml2/lib/libxml2.2.dylib (compatibility version 11.0.0, current version 11.0.0)

или

/usr/lib/libxml2.2.dylib (compatibility version 10.0.0, current version 10.9.0)

Затем вы можете попробовать переустановить libxml, чтобы обновить его:

brew uninstall libxml2 libxslt
brew install libxml2 libxslt

После этого попробуйте перекомпилировать пакет:

make clean
./configure
make
sudo make install

Ответ 7

Первый gem uninstall nokogiri Второй install nokogiri терминал третьего перезапуска

будь счастлив

Ответ 8

Попробуйте следующее в каталоге вашего проекта.

gem uninstall nokogiri

Если установлено более одной версии, появится сообщение с вопросом, какую версию удалить. используйте последнюю опцию, которая гласит "Все версии".

Затем, запустите bundle install в вашем каталоге проекта. как только он закончит установку необходимых драгоценных камней, вам будет хорошо.

В моем случае я выбрал последний вариант "Все версии", так как это не повредит моему проекту, но, возможно, вам потребуются другие версии, основанные на других проектах.