Không thể cài đặt gem - Không thể tạo tiện ích mở rộng riêng cho gem - không thể tải tệp đó - mkmf (LoadError)


172

Ruby 1.9.3

Một phần của Gemfile

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

Khi tôi đang cố gắng cài đặt đá quý, tôi gặp lỗi

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.

Sau đó, tôi đang làm điều này

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

và nhận được một lỗi là tốt.

Tôi đã bỏ lỡ cái gì?


Câu trả lời:


428

Có những câu hỏi tương tự:

Thông thường, giải pháp là:

sudo apt-get cài đặt ruby-dev

Hoặc, nếu điều đó không hoạt động, tùy thuộc vào phiên bản ruby ​​của bạn , hãy chạy một cái gì đó như:

sudo apt-get cài đặt ruby1.9.1-dev

Nên khắc phục vấn đề của bạn.


Vẫn không làm việc? Hãy thử các cách sau sau khi cài đặt ruby-dev:

sudo apt-get cài đặt thực hiện


Nhưng tôi chỉ có 1.9.3 viên ruby.
Alexandre

5
ruby 1.9.3 là bí danh của ruby ​​1.9.1

6
Sau khi cài đặt ruby1.9.1-devtôi cũng phải sudo apt-get install make. Cảm ơn bạn!
wasatchwizard

6
Nếu bạn đã cài đặt ruby ​​bằng lệnh sudo apt-get install ruby(mà không chỉ định phiên bản) thì bạn không cần phải lo lắng về phiên bản của mình quá nhiều nếu bạn chỉ cài đặtsudo apt-get install ruby-dev
kellins

7
Tôi thấy rằng trên Ubuntu 16.04 bạn cũng cầnsudo apt-get install gcc make
Treur

13

Đối với WSL (Hệ thống con Windows cho Linux), bạn cần build-essentialgói cài đặt :

sudo apt install build-essential

1
Đã giải quyết nó cho tôi sau khi không có bất kỳ đề nghị nào khác dường như làm điều đó. Thiết lập của tôi: Win10 Pro + WSL với Ubuntu 18.04 + Ruby 2.5. Cảm ơn!
cjs1978

1
Điều tương tự đối với máy chủ Ubuntu Hyper-V VM.
Jorge Yanes Diez

1
Làm việc cho tôi trên Ubuntu trong Docker
Miguel Mota

Điều này làm việc cho tôi khi cài đặt Ubuntu 18.04 LTS thường xuyên khi cố gắng cài đặt Typhoeus. Mất tuổi để đến đó, cảm ơn!
lạiEden

8

Tôi đã có cùng một vấn đề khi cố gắng cài đặt jquery-rails. Cách khắc phục là

sudo apt-get install zlibc zlib1g zlib1g-dev

1
Chỉ cần cài đặt zlib1g-devsẽ cung cấp cho bạn những gì bạn cần ở đây, hoặc ít nhất là nó đã làm cho tôi.
lindes

4

Tôi thấy rằng tôi cần phải cài đặt một phiên bản ruby ​​khác. Vì vậy, chạy lệnh

$ sudo apt-get install ruby1.9.1-dev

và sau đó cố gắng cài đặt tiện ích mở rộng

Nếu bạn gặp vấn đề trong đó nó nói với bạn rằng bạn không có g ++, bạn có thể chạy lệnh sau để cài đặt nó

$ sudo apt-get install g++

4

Chỉ cần kết thúc một cuộc rượt đuổi ngông cuồng 2 giờ cố gắng giải quyết điều này. Không có câu trả lời được đăng cho tôi. Im trên máy Mac (Mojave Phiên bản 10.14.6, Xcode Phiên bản 11.3).

Hóa ra các tiêu đề tập tin ruby ​​bị thiếu nên tôi phải chạy open /Library/Developer/CommandLineTools/Packages/macOS_SDK_headers_for_macOS_10.14.pkg

Điều đó ban đầu không hoạt động với tôi vì phiên bản CommandLineTools tôi đã cài đặt không có thư mục "Gói". Vì vậy, tôi đã gỡ cài đặt và cài đặt lại như thế này:

rm -rf /Library/Developer/CommandLineTools

xcode-select --install

Sau đó tôi chạy lại lệnh trước:

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

Sau khi cài đặt lỗi đã được sửa!


Điều này làm việc cho tôi. Tôi đang dùng macOS 10.14.6 (18G1012). Xcode 11.3.
palmi

Cảm ơn. Giải pháp của bạn đã làm việc cho tôi khi cài đặt "sudo gem install cocoapods" để phát triển rung.
Venkataraman K

3

Trong trường hợp bất kỳ ai trong tương lai gặp sự cố này, tôi đang sử dụng máy Mac và chỉ cần cài đặt Công cụ dòng lệnh bằng cách sử dụng 'xcode-select --install'


1
Điều này làm việc cho tôi. Trong trường hợp của tôi, tôi đã gãi đầu vì bản dựng của tôi hoạt động tốt cho đến khi tôi nâng cấp lên El Capitan.
bruce1337

2
  1. Đảm bảo đã ruby-devđược cài đặt
  2. Đảm bảo đã makeđược cài đặt
  3. Nếu bạn vẫn nhận được lỗi, hãy tìm các gói được đề xuất. Nếu bạn đang cố gắng cài đặt một cái gì đó giống như gem install pgbạn cũng sẽ cần phải cài đặt lib libpq-dev( sudo apt-get install libpq-dev).

1

Nó cũng giúp đảm bảo libmysqlclient-dev được cài đặt (Ubuntu 14.04)


1

Điều này làm việc cho tôi. bundle config --global build.snappy --with-opt-dir="$(brew --prefix snappy)"


0

Trong Mac, đối với tôi điều này hoạt động:

CONFIGURE_OPTS="--enable-shared" rbenv install 2.2.2

0

Sau một số tìm kiếm cho một giải pháp, hóa ra gói -dev là cần thiết, không chỉ là ruby1.8. Vì vậy, nếu bạn có ruby1.9.1 đang làm

sudo apt-get install ruby1.9.1-dev

hoặc để cài đặt phiên bản ruby ​​chung, hãy sử dụng (theo nhận xét @lamplightdev):

sudo apt-get install ruby-dev

nên sửa nó

Hãy thử xác định vị trí mkmf để xem tập tin có thực sự ở đó không.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.