`wajib ': tidak ada file seperti itu untuk memuat - mkmf (LoadError)

563

Saya mencoba menginstal rel pada Ubuntu Natty Narwhal 11.04, menggunakan ruby1.9.1.

Saya menginstal ruby ​​using apt-get install ruby1.9.1-fullyang berisi paket dev. Saya mencari kesalahan di Google dan semuanya menyarankan agar saya menginstal 1.9.1-dev yang sudah saya miliki.

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
Omar S.
sumber
1
Saya mengalami kesalahan paralel ketika mencoba menginstal watir-webdriver. Itu juga diperbaiki dengan menginstal ruby1.0.1-dev
kaleidic

Jawaban:

979

Setelah beberapa pencarian solusi ternyata -devpaket diperlukan, bukan hanya ruby1.8. Jadi, jika Anda ruby1.9.1melakukannya

sudo apt-get install ruby1.9.1-dev

atau untuk menginstal versi ruby ​​umum, gunakan (sesuai komentar @lamplightdev):

sudo apt-get install ruby-dev

harus memperbaikinya.

Cobalah locate mkmfuntuk melihat apakah file tersebut benar-benar ada.

Emil Ivanov
sumber
220
yang berikut ini akan menginstal paket dev yang cocok dengan versi ruby ​​yang saat ini Anda instal: sudo apt-get install ruby-dev
lamplightdev
ya bekerja untukku. jalankan ruby ​​-v untuk menemukan versi jika Anda hanya ingin menginstal versi ruby ​​saat ini.
Dan Bradbury
3
@lamplightdev Tidak berfungsi untuk saya, versi ruby ​​adalah 1.9.3 dan menginstal 1.8 Jika saya mencoba menginstal ruby-dev
Karthik T
1
Saya sudah menginstal ruby-all-dev, mungkin akan bekerja untuk semua versi.
jcubic
Ini juga diperlukan untuk aws-sdk sekarang karena SOAP sudah tidak digunakan lagi untuk AWS. Kekhawatiran jika para pemangku kepentingan keberatan dengan apa pun -dev pada membangun produksi. (SDK juga tidak menggetarkan mereka).
mckenzm
185

Ini adalah jawaban yang berhasil untuk saya. Ada di komentar di atas, tetapi layak mendapatkan tempat yang layak sebagai jawaban untuk 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
sumber
Perlu juga dicatat bahwa jika Anda ingin menggunakan pusat perangkat lunak ubuntu ada add-on untuk ruby-dev Anda dapat memilih 'File Header untuk menyusun modul ekstensi'.
RightHandedMonkey
Saya menggunakan sudo apt-get install ruby1.9.1-devruby 1.9.3 sebelum saya melihat komentar atau jawaban ini, dan itu memungkinkan saya untuk membangun ekstensi rel. Tidak yakin apakah versi yang tidak cocok seperti itu akan membuat saya sakit kepala nanti, tetapi harus dicatat bahwa rel dipasang dengan benar menggunakan sedikit perubahan pada jawaban yang diterima secara resmi.
DWils
Bagaimana jika Anda memiliki RVM? Maka bukankah Anda sudah memiliki versi ruby ​​yang Anda butuhkan?
kepala sekolah
37

Saya juga perlu menginstal build-essential:

sudo apt-get install build-essential
James Dunmore
sumber
Ini tiketnya di sini .. Saya pikir saya juga harus menginstal ruby-dev tetapi tidak berfungsi sampai saya menginstal build-essential juga. satu juta terima kasih
terdeteksi
30

Masalahnya masih rekursif pada Ubuntu 13/04 / 13.10 / 14.04

dan

sudo apt-get install ruby1.9.1-dev

bekerja untukku oke. Jadi, jika Anda menggunakan Ubuntu 13.04 / 13.10 / 14.04 maka menggunakan ini akan sangat berguna.

Ini berfungsi bahkan jika versi ruby ​​adalah 1.9.3. Ini karena tidak ada ruby1.9.3-dev yang tersedia di Repositori ...

kenju254
sumber
1
Yap, ini juga bekerja untuk saya pada ruby1.9.3. Tidak ada paket di repositori ubuntu untuk ruby1.9.3-dev.
DWils
tidak lagi ... bekerja setelah menginstal rvm dari rvm.io dengan --ruby - dan mungkin yang terbaik untuk menghapus apt-get ruby ​​sebelum
dagelf
18

Sudahkah Anda mencoba:

sudo apt-get install ruby1.8-dev
Matteo Alessani
sumber
3
Saya menggunakan 1.9.1, mengapa saya harus menginstal ruby1.8-dev?
Omar S.
Ini sangat aneh memang saya menginstal 1.9.1 tetapi berbunyi 1.8, ketika saya menjalankan ruby ​​-v saya mendapatkan: ruby ​​1.8.7 (2010-08-16 patchlevel 302) [x86_64-linux]
Omar S.
2
Anda memiliki ruby ​​1.8 yang ditetapkan sebagai ruby ​​default pada sistem Anda
Matteo Alessani
10

Saya mendapat kesalahan serupa ketika menginstal bundel

sudo apt-get install ruby-dev

Bekerja bagus untuk saya dan menyelesaikan masalah Mint 16 ruby1.9.3

Sergey Nikolaev
sumber
0

Anda dapat menggunakan RVM (manajer versi Ruby) yang membantu dalam mengelola semua versi ruby ​​pada mesin Anda, yang sangat membantu pengembangan Anda (saat bermigrasi ke rilis yang tidak stabil ke rilis yang stabil)

atau untuk Linux (ubuntu) sudo apt-get install ruby1.8-dev

kemudian sudo gem install railsuntuk memverifikasi lakukan rails -vitu akan menampilkan versi pada rel

setelah itu Anda dapat menginstal bundel (permata yang diperlukan untuk pengembangan)

Mohit Verma
sumber
Anda masih dapat menggunakan RVM di linux. Saya melakukan itu (tetapi masih memiliki masalah kesalahan mkmf ini ketika menginstal rel)
theecretmaster