`require ': нет такого файла для загрузки - mkmf (LoadError)

563

Я пытался установить рельсы на Ubuntu Natty Narwhal 11.04, используя ruby1.9.1.

Я установил ruby, используя apt-get install ruby1.9.1-fullпакет dev. Я погуглил ошибку, и все предложили мне установить 1.9.1-dev, который у меня уже есть.

Building native extensions.  This could take a while...
ERROR:  Error installing rails:
    ERROR: Failed to build gem native extension.

        /usr/bin/ruby1.8 extconf.rb
extconf.rb:36:in `require': no such file to load -- mkmf (LoadError)
    from extconf.rb:36


Gem files will remain installed in /usr/lib/ruby/gems/1.8/gems/bcrypt-ruby-3.0.1 for inspection.
Results logged to /usr/lib/ruby/gems/1.8/gems/bcrypt-ruby-3.0.1/ext/mri/gem_make.out
Омар С.
источник
1
У меня была параллельная ошибка при попытке установить watir-webdriver. Это также было исправлено установкой ruby1.0.1-dev
kaleidic

Ответы:

979

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

sudo apt-get install ruby1.9.1-dev

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

sudo apt-get install ruby-dev

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

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

Эмиль Иванов
источник
220
следующее установит пакет dev, соответствующий вашей текущей установленной версии ruby: sudo apt-get install ruby-dev
lamplightdev
да, работал на меня. запустите ruby ​​-v, чтобы найти версию, если вы хотите установить только текущую версию ruby.
Дэн Брэдбери
3
@lamplightdev У меня не сработало, версия ruby ​​была 1.9.3 и она устанавливала 1.8 Если я попытался установить ruby-dev
Karthik T
1
Я установил ruby-all-dev, это, вероятно, будет работать для всех версий.
jcubic
Это также требуется для aws-sdk теперь, когда SOAP устарела для AWS. Беспокойство, если заинтересованные стороны возражают против чего-либо на производственной сборке. (SDK тоже их не волнуют).
mckenzm
185

Это ответ, который работал для меня. Был в комментариях выше, но заслуживает своего законного места в качестве ответа для ubuntu 12.04 ruby ​​1.8.7

sudo apt-get install ruby-dev
# if above doesnt work make sure you have build essential
sudo apt-get install build-essential
jmontross
источник
Стоит также отметить, что если вы хотите использовать программный центр Ubuntu, есть дополнение для ruby-dev, которое вы можете выбрать для «Заголовочные файлы для компиляции модулей расширения».
RightHandedMonkey
Я использовал sudo apt-get install ruby1.9.1-devс ruby ​​1.9.3 до того, как увидел комментарий или этот ответ, и это позволило мне построить расширение rails. Не уверен, что несоответствие версий, подобных этой, вызовет у меня какую-то головную боль позже, но следует отметить, что рельсы установлены правильно с небольшим изменением официально принятого ответа.
DWils
Что делать, если у вас есть RVM? Тогда разве у вас нет нужной версии ruby?
Этим секретарем
37

Мне также нужно было установить build-essential:

sudo apt-get install build-essential
Джеймс Данмор
источник
Это был билет прямо здесь .. Я думаю, мне пришлось установить ruby-dev, но он не работал, пока я не установил build-essential. миллион спасибо
unc0nnected
30

Проблема все еще остается рекурсивной в Ubuntu 13/04 / 13.10 / 14.04

а также

sudo apt-get install ruby1.9.1-dev

сработало для меня хорошо. Так что, если вы используете Ubuntu 13.04 / 13.10 / 14.04, то использование этого действительно пригодится.

Это работает, даже если версия ruby ​​1.9.3. Это потому, что в репозитории нет ruby1.9.3-dev ...

kenju254
источник
1
Да, этот работает и для меня на ruby1.9.3. В хранилище ubuntu для ruby1.9.3-dev не было пакета.
DWils
не больше ... работал после установки rvm из rvm.io с --ruby - и, вероятно, лучше всего apt-get удалить ruby ​​до
dagelf
18

Ты пытался:

sudo apt-get install ruby1.8-dev
Маттео Алессани
источник
3
Я использую 1.9.1, зачем мне устанавливать ruby1.8-dev?
Омар С.
Это действительно так странно, я установил 1.9.1, но он читает 1.8, когда я запускаю ruby ​​-v, я получаю: ruby ​​1.8.7 (2010-08-16 patchlevel 302) [x86_64-linux]
Омар С.
2
в вашей системе по умолчанию установлен ruby ​​1.8
Matteo Alessani,
10

Я получил похожую ошибку при установке комплекта

sudo apt-get install ruby-dev

Прекрасно работает для меня и решить проблему Mint 16 ruby1.9.3

Сергей Николаев
источник
0

Вы можете использовать RVM (менеджер версий Ruby), который помогает управлять всеми версиями ruby ​​на вашем компьютере, что очень полезно для разработки (при переходе с нестабильного выпуска на стабильный выпуск).

или для Linux (Ubuntu) перейти на sudo apt-get install ruby1.8-dev

затем, sudo gem install railsчтобы проверить это, rails -vон покажет версию на рельсах.

после этого вы можете установить пакеты (необходимые для разработки гемы)

Мохит Верма
источник
Вы все еще можете использовать RVM на Linux. Я делаю это (но все еще есть проблема этой ошибки mkmf при установке рельсов)
thesecretmaster