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

Руби 1.9.3

Часть Gemfile

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

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

alex@ubuntu:~/$ 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

и тоже получаю ошибку.

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


person Alexandre    schedule 07.12.2012    source источник
comment
возможный дубликат `require': нет такого файла для загрузки -- mkmf ( Ошибка загрузки)   -  person guest    schedule 09.10.2014
comment
Для macOS это также может быть полезно: заголовок stackoverflow.com/questions/20939568/   -  person Priyanshu Jain    schedule 02.02.2021


Ответы (16)


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

Обычно решение такое:

sudo apt-get установить ruby-dev

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

sudo apt-get установить ruby1.9.1-dev

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


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

sudo apt-get установить сделать

person MrYoshiji    schedule 07.12.2012
comment
Но у меня 1.9.3 только рубин. - person Alexandre; 07.12.2012
comment
ruby 1.9.3 является псевдонимом ruby ​​1.9.1 - person ; 16.03.2013
comment
После установки ruby1.9.1-dev пришлось еще и sudo apt-get install make. Спасибо! - person kodybrown; 14.11.2013
comment
Если вы установили свой ruby ​​​​с помощью команды sudo apt-get install ruby (без указания версии), вам не нужно слишком беспокоиться о своей версии, если вы просто установите sudo apt-get install ruby-dev - person kellins; 01.02.2014
comment
Спасибо @wasatchwizard, после того, как вы сделали то, что вы предложили, у меня сработало :) - person lbramos; 29.04.2014
comment
Сработало для меня, спасибо. Но в итоге я запустил установку пакета как sudo. - person jerome; 30.08.2014
comment
Спасибо - использование sudo apt-get install make наконец помогло мне, после того как я нашел первую часть вашего решения в другом месте. - person Kjeld Schmidt; 07.09.2014
comment
Я обнаружил, что в Ubuntu 16.04 вам также нужно sudo apt-get install gcc make - person Treur; 28.12.2016
comment
Я получаю эту ошибку: sudo: apt-get: команда не найдена, могу ли я установить ее с помощью brew? - person GOrozco58; 05.05.2017

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

sudo apt install build-essential
person Dmitry S.    schedule 25.04.2019
comment
Решил это для меня после того, как ни одно из других предложений не помогло. Моя установка: Win10 Pro + WSL с Ubuntu 18.04 + Ruby 2.5. Спасибо! - person cjs1978; 02.09.2019
comment
То же самое для виртуальной машины Ubuntu Server Hyper-V. - person Jorge Yanes Diez; 14.10.2019
comment
Работал у меня на Ubuntu в Docker - person Miguel Mota; 14.01.2020
comment
Это сработало для меня при обычной установке Ubuntu 18.04 LTS при попытке установить Typhoeus. Потребовались годы, чтобы добраться туда, спасибо! - person RemakingEden; 05.04.2020

Только что закончил двухчасовую погоню за дикими гусями, пытаясь решить эту проблему. Ни один из опубликованных ответов не работал у меня. Я на Mac (версия Mojave 10.14.6, версия Xcode 11.3).

Оказывается, заголовки файлов ruby ​​отсутствовали, поэтому мне пришлось запустить open /Library/Developer/CommandLineTools/Packages/macOS_SDK_headers_for_macOS_10.14.pkg

Сначала у меня это не сработало, потому что в версии CommandLineTools, которую я установил, не было папки «Пакеты». Итак, я удалил и переустановил так:

rm -rf /Library/Developer/CommandLineTools

xcode-select --install

Затем я снова запустил предыдущую команду:

open /Library/Developer/CommandLineTools/Packages/macOS_SDK_headers_for_macOS_10.14.pkg

После установки ошибка была исправлена!

person Jerome    schedule 12.12.2019
comment
Это сработало для меня. У меня macOS 10.14.6 (18G1012). Xкод 11.3. - person palmi; 06.01.2020
comment
Спасибо. Ваше решение сработало для меня при установке sudo gem install CocoPods для разработки флаттера. - person Venkataraman K; 02.03.2020
comment
У меня не появляется папка Packages/ после переустановки. - person Bright Lee; 19.11.2020

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

sudo apt-get install zlibc zlib1g zlib1g-dev
person B2Pi    schedule 11.11.2015
comment
Просто установка zlib1g-dev даст вам то, что вам здесь нужно, или, по крайней мере, это было для меня. - person lindes; 03.07.2019

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

person NateW    schedule 11.07.2015
comment
Это сработало для меня. В моем случае я ломал голову, потому что моя сборка работала нормально, пока я не обновился до El Capitan. - person bruce1337; 09.12.2015

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

$ sudo apt-get install ruby1.9.1-dev

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

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

$ sudo apt-get install g++
person hmjha    schedule 19.11.2015

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

Я создал небольшой hackMD для установки Cocopods на MacOS 10.15 (Catalina) и 11 (Big Sur).

https://hackmd.io/@sBJPlhRESGqCKCqV8ZjP1A/S1UY3W7HP

Установка Cocoapods на MacOS Catalina (MacOS 10.15.X) и Big Sur (MacOS 11)

  1. Убедитесь, что у вас установлены компоненты xcode.

  2. Загрузите «Инструменты командной строки» (около 500 МБ) прямо по этой ссылке (требуется учетная запись Apple) https://developer.apple.com/downloads/index.action

  3. Установить загруженный файл

  4. Нажмите «Установить»

  5. Установите файлы COCOAPODS в терминал sudo gem install -n /usr/local/bin cocoapods

person Anand Sai Mishra    schedule 19.09.2020
comment
brew install cocoapods сработало для меня (при условии, что у вас установлен и обновлен brew) - person kbpontius; 28.12.2020

Для пользователей MacOS:

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

brew install cocoapods
person Jr Relampagos    schedule 22.01.2021
comment
работает для меня и нужна ссылка - person Ping Woo; 18.07.2021

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

person KLaw    schedule 10.12.2015

Это сработало для меня. bundle config --global build.snappy --with-opt-dir="$(brew --prefix snappy)"

person Mohammed    schedule 08.05.2020

Что в итоге сработало для меня после нескольких часов боли ..

если вы используете пиво ..

brew install ruby

в выводе/журнале терминала укажите путь, по которому был установлен ruby, brew предлагает: «Возможно, вы захотите добавить это в свой PATH», вот что мы сделаем. Например, мой

/usr/local/lib/ruby/gems/3.0.0/bin

Добавьте это на свой путь, запустив (без фигурных скобок)

echo 'export PATH"{the_path_you_found_above}:$PATH"' >> ~/.bash_profile

затем обновите свою среду, запустив

source ~/.bash_profile

теперь попробуйте запустить установку, т.е.

sudo gem install middleman
person Corey Byrum    schedule 22.01.2021

Я создавал приложение для поиска слов и Мне пришлось установить Cocoapods, и после форматирования моего Mac и переустановки xcode я все еще получал сообщение об ошибке, когда хотел установить Cocoapods.

И решение для этого было следующим:

Похоже, что CocoaPods 1.9.0, последняя версия на момент написания этой статьи, зависит от более новой версии Ruby, чем 2.3.7. Но macOS Mojave включает только Ruby 2.3.7, поэтому у вас есть несколько вариантов.

    Upgrade to macOS Catalina and get Ruby 2.6.3
    Use Ruby Version Manager to install a newer version of Ruby
    Install an older version of CocoaPods
    sudo gem install cocoapods -v 1.8.4

Я сделал 3:

sudo gem установить Cocopods -v 1.8.4

person dustindiaz    schedule 22.04.2021

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

CONFIGURE_OPTS="--enable-shared" rbenv install 2.2.2
person rubyu2    schedule 19.08.2016

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

sudo apt-get install ruby1.9.1-dev

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

sudo apt-get install ruby-dev

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

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

person Rahi.Shah    schedule 01.08.2017

Если вы являетесь пользователем Mac, вам необходимо обновить используемую версию clang. Я потратил часы на поиск этого и установил удаленные инструменты командной строки xcode, но это не помогло. Я запустил gcc -v и Apple clang version 11.0.0 (clang-1100.0.33.8 был выход. Затем я запустил xcode-select -s /Library/Developer/CommandLineTools/, и версия clang была обновлена ​​до Apple clang version 12.0.0 (clang-1200.0.32.29). После этого установка пакета прошла успешно. Я надеюсь, что это может помочь.

person Aqib    schedule 03.03.2021