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

问题描述 投票:152回答:9

Ruby 1.9.3

Gemfile的一部分

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

当我尝试安装宝石时,我收到一个错误

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

并得到一个错误。

我错过了什么?

ruby-on-rails ruby ubuntu gem bcrypt
9个回答
401
投票

有类似的问题:

通常,解决方案是:

sudo apt-get install ruby​​-dev

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

sudo apt-get install ruby​​1.9.1-dev

应该解决你的问题。


还是行不通?安装ruby-dev后尝试以下方法:

sudo apt-get install make


5
投票

我在尝试安装jquery-rails时遇到了同样的问题。修复是

sudo apt-get install zlibc zlib1g zlib1g-dev

4
投票

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

$ sudo apt-get install ruby1.9.1-dev

然后尝试安装扩展

如果遇到问题,告诉您没有g ++,可以运行以下命令进行安装

$ sudo apt-get install g++

2
投票
  1. 确保安装了ruby-dev
  2. 确保安装了make
  3. 如果仍然出现错误,请查找建议的包。如果你想安装类似gem install pg的东西,你还需要安装lib libpq-devsudo apt-get install libpq-dev)。

2
投票

如果将来有人遇到这个问题,我正在使用Mac,只需使用'xcode-select --install'安装命令行工具


1
投票

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


1
投票

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

sudo apt install build-essential

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

或者要安装通用的ruby版本,请使用(根据@lamplightdev评论):

sudo apt-get install ruby-dev

应该解决它。

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

© www.soinside.com 2019 - 2024. All rights reserved.