Невозможно установить gem - Не удалось создать собственное расширение gem - невозможно загрузить такой файл - mkmf (LoadError)

Ruby 1.9.3

Часть Gemfile

#...............
gem "pony"
gem "bcrypt-ruby", :require => "bcrypt"
gem "nokogiri" 
#..................

Когда я пытаюсь установить драгоценные камни, я получаю сообщение об ошибке

[email protected]:~/$ bundle
Fetching gem metadata from http://rubygems.org/.........
Fetching gem metadata from http://rubygems.org/..
Enter your password to install the bundled RubyGems to your system: 
#####............................................................
Installing bcrypt-ruby (3.0.1) with native extensions 
Gem::Installer::ExtensionBuildError: ERROR: Failed to build gem native extension.

        /usr/bin/ruby1.9.1 extconf.rb 
/usr/lib/ruby/1.9.1/rubygems/custom_require.rb:36:in `require': cannot load such file -- mkmf (LoadError)
        from /usr/lib/ruby/1.9.1/rubygems/custom_require.rb:36:in `require'
        from extconf.rb:36:in `<main>'


Gem files will remain installed in /home/alex/.bundler/tmp/5526/gems/bcrypt-ruby-3.0.1 for inspection.
Results logged to /home/alex/.bundler/tmp/5526/gems/bcrypt-ruby-3.0.1/ext/mri/gem_make.out
An error occurred while installing bcrypt-ruby (3.0.1), and Bundler cannot continue.
Make sure that `gem install bcrypt-ruby -v '3.0.1'` succeeds before bundling.

Тогда я делаю это

sudo gem install bcrypt-ruby -v '3.0.1'
Building native extensions.  This could take a while...
ERROR:  Error installing bcrypt-ruby:
        ERROR: Failed to build gem native extension.

        /usr/bin/ruby1.9.1 extconf.rb
/usr/lib/ruby/1.9.1/rubygems/custom_require.rb:36:in `require': cannot load such file -- mkmf (LoadError)
        from /usr/lib/ruby/1.9.1/rubygems/custom_require.rb:36:in `require'
        from extconf.rb:36:in `<main>'


Gem files will remain installed in /var/lib/gems/1.9.1/gems/bcrypt-ruby-3.0.1 for inspection.
Results logged to /var/lib/gems/1.9.1/gems/bcrypt-ruby-3.0.1/ext/mri/gem_make.out

и получить сообщение об ошибке.

Что я пропустил?

Ответ 1

Есть похожие вопросы:

Обычно решение:

sudo apt-get install ruby-dev

Или, если это не работает, в зависимости от вашей рубиновой версии, запустите что-то вроде:

sudo apt-get install ruby1.9.1-dev

Должно исправить вашу проблему.


Все еще не работает? Попробуйте следующее после установки ruby-dev:

sudo apt-get install make

Ответ 2

У меня была та же проблема, что и при попытке установить jquery-rails. Исправление было

sudo apt-get install zlibc zlib1g zlib1g-dev

Ответ 3

Я обнаружил, что мне нужно установить еще одну версию ruby. Итак, запустите команду

$ sudo apt-get install ruby1.9.1-dev

а затем попытайтесь установить расширение

Если у вас возникли проблемы, когда он говорит вам, что у вас нет g++, вы можете запустить следующую команду для его установки

$ sudo apt-get install g++

Ответ 4

  • Убедитесь, что установлен ruby-dev
  • Убедитесь, что установлен make
  • Если вы все еще получаете ошибку, найдите предлагаемые пакеты. Если вы пытаетесь установить что-то вроде gem install pg, вам также потребуется установить lib libpq-dev (sudo apt-get install libpq-dev).

Ответ 5

Если у кого-то в будущем возникла эта проблема, я использую Mac и просто должен был установить средства командной строки с помощью "xcode-select -install"

Ответ 6

Это также помогает обеспечить установку libmysqlclient-dev (Ubuntu 14.04)

Ответ 7

В Mac для меня это работает:

CONFIGURE_OPTS="--enable-shared" rbenv install 2.2.2

Ответ 8

После некоторого поиска решения получается пакет -dev, а не только ruby1.8. Итак, если у вас есть ruby1.9.1, делающий

sudo apt-get install ruby1.9.1-dev

или для установки родовой версии ruby, используйте (согласно комментарию @lamplightdev):

sudo apt-get install ruby-dev

должен исправить это.

Попробуйте найти mkmf, чтобы увидеть, действительно ли файл там.

Ответ 9

Для WSL (подсистема Windows для Linux) вам необходимо установить пакет build-essential:

sudo apt install build-essential