Некоторые программы корректно работают только когда пакет, который является для них зависимостью, имеет определённую версию. Отсюда возникает вопрос, как я могу установить определённую версию gem с помощью инструмента командной строки?
Всё очень просто — используйте флаг -v:
gem install nokogiri -v 1.10.9
В этом примере устанавливается пакет nokogiri версии 1.10.9.
Если, как и я, вы ранее установили более позднюю версию своего gem, вы должны удалить более позднюю версию, например:
gem uninstall fog
Программа спросит, какую версию удалить, если у вас их несколько.
Для опции -v длинным вариантом является --version.
Вы также можете использовать компараторы версий, такие как >= или ~>
gem install rails -v '~> 0.14.0'
Или даже с более новыми версиями gem:
gem install rails:0.14.4 rubyzip:'< 1' … Successfully installed rails-0.14.4 Successfully installed rubyzip-0.9.9
Итак, общий вид команды для установки:
gem install ПАКЕТ -v ВЕРСИЯ
Для удаления общий вид команды:
gem uninstall ПАКЕТ -v ВЕРСИЯ
Ошибка «ERROR: Failed to build gem native extension.» (РЕШЕНО)
При установке с помощью gem вы можете столкнуться с ошибкой:
gem install nokogiri -v 1.10.9 Fetching mini_portile2-2.4.0.gem Fetching nokogiri-1.10.9.gem Successfully installed mini_portile2-2.4.0 Building native extensions. This could take a while... ERROR: Error installing nokogiri: ERROR: Failed to build gem native extension. current directory: /var/lib/gems/2.7.0/gems/nokogiri-1.10.9/ext/nokogiri /usr/bin/ruby2.7 -I /usr/lib/ruby/vendor_ruby -r ./siteconf20210129-188888-195u5tn.rb extconf.rb mkmf.rb can't find header files for ruby at /usr/lib/ruby/include/ruby.h You might have to install separate package for the ruby development environment, ruby-dev or ruby-devel for example. extconf failed, exit code 1 Gem files will remain installed in /var/lib/gems/2.7.0/gems/nokogiri-1.10.9 for inspection. Results logged to /var/lib/gems/2.7.0/extensions/x86_64-linux/2.7.0/nokogiri-1.10.9/gem_make.out
Подсказка дана в самой ошибке, а именно: «You might have to install separate package for the ruby development environment, ruby-dev or ruby-devel for example». То есть необходимо установить пакет разработчика с заголовками ruby. В Debian, Linux Mint, Kali Linux, Ubuntu и их производных это делается командой:
sudo apt install ruby-dev
Связанные статьи:
- Ошибка «Could not find 'nokogiri'» (РЕШЕНО) (93.8%)
- Решение проблемы с ошибкой cannot load such file -- test/unit (LoadError) (44.9%)
- Как запустить bundle install от root (44.9%)
- Как преобразовать строку в нижний регистр в Bash (43.8%)
- Как преобразовать строку в верхний регистр в Bash (43.8%)
- Как отремонтировать диск LVM с помощью fsck (RANDOM - 1.2%)