Tidak dapat memasang permata - Gagal membangun ekstensi asli permata - tidak dapat memuat file seperti itu - mkmf (LoadError)

172

Ruby 1.9.3

Bagian dari Gemfile

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

Ketika saya mencoba memasang permata, saya mendapatkan kesalahan

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.

Lalu aku melakukan ini

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

dan mendapatkan kesalahan juga.

Apa yang saya lewatkan?

Alexandre
sumber

Jawaban:

428

Ada pertanyaan serupa:

Biasanya, solusinya adalah:

sudo apt-get install ruby-dev

Atau, jika itu tidak berhasil, tergantung pada versi ruby ​​Anda , jalankan sesuatu seperti:

sudo apt-get install ruby1.9.1-dev

Harus memperbaiki masalah Anda.


Masih tidak bekerja? Coba yang berikut ini setelah menginstal ruby-dev:

sudo apt-get install make

TuanYoshiji
sumber
Tapi saya hanya punya 1,9,3 ruby.
Alexandre
5
ruby 1.9.3 adalah alias dari ruby ​​1.9.1
6
Setelah menginstal ruby1.9.1-devsaya juga harus sudo apt-get install make. Terima kasih!
wasatchwizard
6
Jika Anda telah menginstal ruby ​​Anda dengan perintah sudo apt-get install ruby(tanpa menentukan versi) maka Anda tidak perlu terlalu khawatir tentang versi Anda jika Anda hanya menginstalsudo apt-get install ruby-dev
kellins
7
Saya menemukan bahwa pada Ubuntu 16.04 Anda juga perlusudo apt-get install gcc make
Treur
13

Untuk WSL (Windows Subsystem untuk Linux) Anda perlu menginstal build-essentialpaket:

sudo apt install build-essential
Dmitry S.
sumber
1
Memecahkannya untuk saya setelah tidak ada saran lain yang tampaknya melakukannya. Pengaturan saya: Win10 Pro + WSL dengan Ubuntu 18.04 + Ruby 2.5. Terima kasih!
cjs1978
1
Hal yang sama untuk VM Ubuntu Server Hyper-V.
Jorge Yanes Diez
1
Bekerja untuk saya di Ubuntu dalam Docker
Miguel Mota
Ini bekerja untuk saya pada instalasi reguler Ubuntu 18.04 LTS ketika mencoba menginstal Typhoeus. Butuh waktu lama untuk sampai di sana, terima kasih!
RemakingEden
8

Saya memiliki masalah yang sama ketika mencoba menginstal jquery-rails. Cara mengatasinya adalah

sudo apt-get install zlibc zlib1g zlib1g-dev
B2Pi
sumber
1
Hanya menginstal zlib1g-devakan memberi Anda apa yang Anda butuhkan di sini, atau setidaknya itu untuk saya.
lindes
4

Saya menemukan bahwa saya perlu menginstal ruby ​​versi lain. Jadi jalankan perintah

$ sudo apt-get install ruby1.9.1-dev

dan kemudian mencoba menginstal ekstensi

Jika Anda mengalami masalah di mana ia memberi tahu Anda bahwa Anda tidak memiliki g ++, Anda dapat menjalankan perintah berikut untuk menginstalnya

$ sudo apt-get install g++
hmjha
sumber
4

Baru saja menyelesaikan pengejaran angsa liar 2 jam mencoba menyelesaikan ini. Tidak ada jawaban yang diposting yang berfungsi untuk saya. Saya di Mac (Versi Mojave 10.14.6, Versi Xcode 11.3).

Ternyata header file ruby ​​hilang jadi saya harus menjalankan open /Library/Developer/CommandLineTools/Packages/macOS_SDK_headers_for_macOS_10.14.pkg

Awalnya itu tidak berhasil bagi saya karena versi CommandLineTools yang saya instal tidak memiliki folder "Paket". Jadi saya menghapus dan menginstal ulang seperti ini:

rm -rf /Library/Developer/CommandLineTools

xcode-select --install

Kemudian saya menjalankan perintah sebelumnya lagi:

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

Setelah menginstal kesalahan diperbaiki!

Jerome
sumber
Ini berhasil untuk saya. Saya menggunakan macOS 10.14.6 (18G1012). Xcode 11.3.
Palmi
Terima kasih. Solusi Anda bekerja untuk saya ketika menginstal "sudo gem install cocoapods" untuk pengembangan flutter.
Venkataraman K
3

Jika ada orang di masa depan yang memiliki masalah ini, saya menggunakan Mac dan hanya harus menginstal Command Line Tools menggunakan 'xcode-select --install'

NateW
sumber
1
Ini berhasil untuk saya. Dalam kasus saya, saya menggaruk-garuk kepala karena tubuh saya bekerja dengan baik sampai saya meningkatkan ke El Capitan.
bruce1337
2
  1. Pastikan ruby-devsudah terpasang
  2. Pastikan makesudah terpasang
  3. Jika Anda masih mendapatkan kesalahan, cari paket yang disarankan. Jika Anda mencoba menginstal sesuatu seperti gem install pgAnda, Anda juga harus menginstal lib libpq-dev( sudo apt-get install libpq-dev).
hazmat
sumber
1

Ini juga membantu memastikan libmysqlclient-dev diinstal (Ubuntu 14.04)

KLaw
sumber
1

Ini berhasil untuk saya. bundle config --global build.snappy --with-opt-dir="$(brew --prefix snappy)"

Mohammed
sumber
0

Di Mac, bagi saya ini berfungsi:

CONFIGURE_OPTS="--enable-shared" rbenv install 2.2.2
rubyu2
sumber
0

Setelah beberapa mencari solusi, ternyata paket -dev diperlukan, bukan hanya ruby1.8. Jadi, jika Anda memiliki ruby1.9.1 lakukan

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.

Coba cari mkmf untuk melihat apakah file tersebut benar-benar ada.

Rahi.Shah
sumber