В этой статье рассказывается, как исправить ошибку «Could not find 'nokogiri'». Я столкнулся с этой ошибкой при обновлении wpscan:
wpscan --update
Пример ошибки:
Traceback (most recent call last): 12: from /usr/bin/wpscan:23:in `<main>' 11: from /usr/lib/ruby/vendor_ruby/rubygems.rb:301:in `activate_bin_path' 10: from /usr/lib/ruby/vendor_ruby/rubygems.rb:301:in `synchronize' 9: from /usr/lib/ruby/vendor_ruby/rubygems.rb:302:in `block in activate_bin_path' 8: from /usr/lib/ruby/vendor_ruby/rubygems/specification.rb:1370:in `activate' 7: from /usr/lib/ruby/vendor_ruby/rubygems/specification.rb:1388:in `activate_dependencies' 6: from /usr/lib/ruby/vendor_ruby/rubygems/specification.rb:1388:in `each' 5: from /usr/lib/ruby/vendor_ruby/rubygems/specification.rb:1406:in `block in activate_dependencies' 4: from /usr/lib/ruby/vendor_ruby/rubygems/specification.rb:1370:in `activate' 3: from /usr/lib/ruby/vendor_ruby/rubygems/specification.rb:1388:in `activate_dependencies' 2: from /usr/lib/ruby/vendor_ruby/rubygems/specification.rb:1388:in `each' 1: from /usr/lib/ruby/vendor_ruby/rubygems/specification.rb:1400:in `block in activate_dependencies' /usr/lib/ruby/vendor_ruby/rubygems/dependency.rb:309:in `to_specs': Could not find 'nokogiri' (~> 1.10.9) - did find: [nokogiri-1.11.1] (Gem::MissingSpecVersionError) Checked in 'GEM_PATH=/root/.gem/ruby/2.7.0:/var/lib/gems/2.7.0:/usr/local/lib/ruby/gems/2.7.0:/usr/lib/ruby/gems/2.7.0:/usr/lib/x86_64-linux-gnu/ruby/gems/2.7.0:/usr/share/rubygems-integration/2.7.0:/usr/share/rubygems-integration/all:/usr/lib/x86_64-linux-gnu/rubygems-integration/2.7.0' , execute `gem env` for more information 12: from /usr/bin/wpscan:23:in `<main>' 11: from /usr/lib/ruby/vendor_ruby/rubygems.rb:301:in `activate_bin_path' 10: from /usr/lib/ruby/vendor_ruby/rubygems.rb:301:in `synchronize' 9: from /usr/lib/ruby/vendor_ruby/rubygems.rb:302:in `block in activate_bin_path' 8: from /usr/lib/ruby/vendor_ruby/rubygems/specification.rb:1370:in `activate' 7: from /usr/lib/ruby/vendor_ruby/rubygems/specification.rb:1388:in `activate_dependencies' 6: from /usr/lib/ruby/vendor_ruby/rubygems/specification.rb:1388:in `each' 5: from /usr/lib/ruby/vendor_ruby/rubygems/specification.rb:1406:in `block in activate_dependencies' 4: from /usr/lib/ruby/vendor_ruby/rubygems/specification.rb:1370:in `activate' 3: from /usr/lib/ruby/vendor_ruby/rubygems/specification.rb:1388:in `activate_dependencies' 2: from /usr/lib/ruby/vendor_ruby/rubygems/specification.rb:1388:in `each' 1: from /usr/lib/ruby/vendor_ruby/rubygems/specification.rb:1399:in `block in activate_dependencies' /usr/lib/ruby/vendor_ruby/rubygems/specification.rb:1402:in `rescue in block in activate_dependencies': Could not find 'nokogiri' (~> 1.10.9) among 102 total gem(s) (Gem::MissingSpecError) Checked in 'GEM_PATH=/root/.gem/ruby/2.7.0:/var/lib/gems/2.7.0:/usr/local/lib/ruby/gems/2.7.0:/usr/lib/ruby/gems/2.7.0:/usr/lib/x86_64-linux-gnu/ruby/gems/2.7.0:/usr/share/rubygems-integration/2.7.0:/usr/share/rubygems-integration/all:/usr/lib/x86_64-linux-gnu/rubygems-integration/2.7.0' at: /usr/share/rubygems-integration/all/specifications/cms_scanner-0.13.0.gemspec, execute `gem env` for more information
В сообщении ключевой строкой является «Could not find 'nokogiri' (~> 1.10.9)». То есть не получается найти nokogiri.
Попробуем исправить проблему переустановкой этого пакета.
Удалим его:
gem uninstall nokogiri
Если предыдущая команда спросит, какую версию удалить, то выберите «все». Если nokogiri не будет найден и появится ошибка, то ничего страшного.
После удаления устанавливаем:
gem install nokogiri
К сожалению, это мне не помогло.
Я воспользовался другим советом:
gem update --system xcode-select --install gem install nokogiri bundle install
Причём последняя команда не хотела выполнятся, так как рассматриваемая проблема возникла на сервере, где я работал под пользователем root. Проблему удалось решить, подробности в статье «Как запустить bundle install от root». Но, к сожалению, это мне также не помогло.
При установке nokogiri я обратил внимание, что устанавливается версия 1.11.1, а в сообщении сказано «Could not find 'nokogiri' (~> 1.10.9)», то есть больше версии 1.10.9. Вроде бы как, условия соблюдены, но я решил проверить, поможет ли установка версии 1.10.9. Для этого я выполнил команду:
gem install nokogiri -v 1.10.9
И это действительно сработало! То есть иногда недостаточно просто установить пакет, а необходимо более низкая его версия.
Связанная статья: Как установить конкретную версию Ruby gem?
Связанные статьи:
- Как установить конкретную версию Ruby gem? (75.5%)
- Как запустить bundle install от root (75.5%)
- Решение проблемы с ошибкой cannot load such file -- test/unit (LoadError) (50.9%)
- Решение проблемы со сломавшимся после обновления пакетов Pip (0.9%)
- Решение проблемы с ошибкой fatal error: libxml/xmlversion.h: Нет такого файла или каталога (0.9%)
- Bluetooth при включении постоянно просит ввести пароль (РЕШЕНО) (RANDOM - 0.9%)