无法安装gem-无法构建gem本机扩展-无法加载此类文件-mkmf(LoadError)


172

Ruby 1.9.3

Gemfile的一部分

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

当我尝试安装gems时,出现错误

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.

那我在做

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

并得到一个错误。

我错过了什么?


Answers:


426

还有类似的问题:

通常,解决方案是:

须藤apt-get install ruby​​-dev

或者,如果这不起作用,则取决于您的ruby版本,请运行以下命令:

须藤apt-get install ruby​​1.9.1-dev

应该解决您的问题。


还是行不通?安装ruby-dev后,尝试以下操作:

sudo apt-get安装make


但是我只有1.9.3红宝石。
亚历山大

5
ruby 1.9.3是ruby 1.9.1的别名

6
安装完后ruby1.9.1-dev我也要sudo apt-get install make。谢谢!
wasatchwizard 2013年

6
如果您已经使用命令安装了ruby sudo apt-get install ruby(未指定版本),那么只需安装就不必担心版本sudo apt-get install ruby-dev
kellins 2014年

7
我发现在Ubuntu 16.04上,您还需要sudo apt-get install gcc make
Treur

13

对于WSL(Linux的Windows子系统),您需要安装build-essential软件包:

sudo apt install build-essential

1
在没有其他建议可以解决之后,为我解决了这个问题。我的设置:Win10 Pro + WSL和Ubuntu 18.04 + Ruby 2.5。谢谢!
cjs1978'9

1
对于Ubuntu Server Hyper-V VM也是如此。
Jorge Yanes Diez

1
在Docker内的Ubuntu上为我工作
Miguel Mota

在尝试安装Typhoeus时,这对我在Ubuntu 18.04 LTS的常规安装中起作用。花了很长时间才能到达那里,谢谢!
RemakingEden

8

我在尝试安装jquery-rails时遇到了同样的问题。解决方法是

sudo apt-get install zlibc zlib1g zlib1g-dev

1
只需安装即可zlib1g-dev为您提供所需的东西,或者至少对我有用。
lindes

4

我发现我需要安装另一个版本的ruby。所以运行命令

$ sudo apt-get install ruby1.9.1-dev

然后尝试安装扩展

如果遇到提示您没有g ++的问题,则可以运行以下命令进行安装

$ sudo apt-get install g++

4

刚刚完成了2小时的大雁追捕尝试以解决此问题。没有发布的答案对我有用。在Mac上的即时消息(Mojave版本10.14.6,Xcode版本11.3)。

原来红宝石文件头丢失了,所以我不得不运行 open /Library/Developer/CommandLineTools/Packages/macOS_SDK_headers_for_macOS_10.14.pkg

起初这对我没有用,因为我安装的CommandLineTools版本没有“ Packages”文件夹。所以我这样卸载并重新安装:

rm -rf /Library/Developer/CommandLineTools

xcode-select --install

然后我再次运行上一个命令:

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

安装后,错误已修复!


这对我有用。我在macOS 10.14.6(18G1012)上。Xcode 11.3。
palmi

谢谢。当您为颤振开发安装“ sudo gem install cocoapods”时,您的解决方案对我有用。
Venkataraman K

3

万一以后有人遇到此问题,我使用的是Mac,只需使用'xcode-select --install'安装命令行工具


1
这对我有用。就我而言,我一直在挠头,因为在升级到El Capitan之前,我的建筑工作正常。
bruce1337 2015年

2
  1. 确保ruby-dev已安装
  2. 确保make已安装
  3. 如果仍然出现错误,请查找建议的软件包。如果您尝试安装类似的东西gem install pg,则还需要安装lib libpq-devsudo apt-get install libpq-dev)。

1

它还有助于确保已安装libmysqlclient-dev(Ubuntu 14.04)


1

这对我有用。 bundle config --global build.snappy --with-opt-dir="$(brew --prefix snappy)"


0

在Mac中,对我来说这有效:

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

0

在寻找解决方案后,结果是需要-dev软件包,而不仅仅是ruby1.8。所以如果你有ruby1.9.1在做

sudo apt-get install ruby1.9.1-dev

或安装通用红宝石版本,请使用(按照@lamplightdev注释):

sudo apt-get install ruby-dev

应该修复它。

尝试找到mkmf以查看该文件是否实际存在。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.