Некоторые программы корректно работают только когда пакет, который является для них зависимостью, имеет определённую версию. Отсюда возникает вопрос, как я могу установить определённую версию 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
