`вимагати ': не завантажувати такий файл - mkmf (LoadError)


563

Я намагався встановити рейки на Ubuntu Natty Narwhal 11.04, використовуючи ruby1.9.1.

Я встановив рубін, використовуючи apt-get install ruby1.9.1-fullякий містить пакет dev. Я google помилку, і всі запропонували мені встановити 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

або для встановлення загальної рубінової версії використовуйте (відповідно до коментаря @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

Варто також відзначити, що якщо ви хочете використовувати центр програмного забезпечення ubuntu, є додатки для ruby-dev, ви можете вибрати "Заголовок файлів для компіляції модулів розширень".
RightHandedMonkey

Я використовував sudo apt-get install ruby1.9.1-devрубін 1.9.3, перш ніж побачив коментар або цю відповідь, і це дозволило мені створити розширення рейок. Не впевнений, чи невзгоджені версії, подібні до цього, пізніше викликають у мене головний біль, але слід зазначити, що рейки встановлені правильно, використовуючи незначну зміну офіційно прийнятої відповіді.
DWils

Що робити, якщо у вас RVM? Тоді у вас вже немає потрібної вам рубінової версії?
цікреммайстри

37

Мені також потрібна була встановлена ​​необхідна збірка:

sudo apt-get install build-essential

Це був квиток прямо тут. Я думаю, що мені довелося також встановити ruby-dev, але він не працював, поки я не встановив також істотну збірку. мільйон подяк
unc0підписано

30

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

і

sudo apt-get install ruby1.9.1-dev

добре для мене вийшло. Отже, якщо ви використовуєте Ubuntu 13.04 / 13.10 / 14.04, то використання цього дійсно стане у нагоді.

Це працює, навіть якщо версія рубіну 1.9.3. Це тому, що в сховищі немає доступних ruby1.9.3-dev ...


1
Так, цей працював і на мене на рубіні1.9.3. У сховищі ubuntu не було пакета для ruby1.9.3-dev.
DWils

не більше ... працював після встановлення rvm з rvm.io з --ruby - і, мабуть, найкраще apt-get
delete

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
у вас у
рублі

10

Я отримав подібну помилку під час встановлення пакета

sudo apt-get install ruby-dev

Для мене чудово працює і вирішує проблему Mint 16 ruby1.9.3




0

Ви можете використовувати RVM (менеджер версій Ruby), який допомагає керувати всіма версіями рубіну на вашій машині, що дуже корисно для вашої розробки (при переході на нестабільний реліз до стабільного випуску)

або для Linux (ubuntu) sudo apt-get install ruby1.8-dev

то sudo gem install railsдля того, щоб це зробити, rails -vце покаже версію на рейках

після цього ви можете встановити пачки (необхідні дорогоцінні камені для розробки)


Ви все ще можете використовувати RVM на Linux. Я роблю це (але все ж є проблема з цією помилкою mkmf при встановленні рейок)
Thesecretmaster
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.