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

时间:2012-12-07 17:08:20

标签: ruby-on-rails ruby ubuntu gem bcrypt

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

也会出错。

我错过了什么?

15 个答案:

答案 0 :(得分:397)

有类似的问题:

通常,解决方案是:

  

sudo apt-get install ruby​​-dev

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

  

sudo apt-get install ruby​​1.9.1-dev

应该解决你的问题。


仍然无法使用?安装ruby-dev后,请尝试以下操作:

  

sudo apt-get install make

答案 1 :(得分:5)

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

sudo apt-get install zlibc zlib1g zlib1g-dev

答案 2 :(得分:4)

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

$ sudo apt-get install ruby1.9.1-dev

然后尝试安装扩展程序

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

$ sudo apt-get install g++

答案 3 :(得分:2)

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

答案 4 :(得分:2)

如果将来有人遇到此问题,我使用的是Mac,只需使用&#39; xcode-select --install&#39;安装命令行工具。

答案 5 :(得分:2)

我创建了一个小型hackMD,用于在MacOS 10.15(Catalina)和11(Big Sur)上安装cocoapods

https://hackmd.io/@sBJPlhRESGqCKCqV8ZjP1A/S1UY3W7HP

在MacOS Catalina(MacOS 10.15.X)和Big Sur(MacOS 11)上安装Cocoapods

  1. 确保已安装xcode组件。

  2. 直接从此链接下载“命令行工具”(约500MB)(要求您具有Apple帐户) https://developer.apple.com/downloads/index.action

  3. 安装下载的文件

  4. 单击“安装”

  5. 在终端中安装COCOAPODS文件 sudo gem install -n /usr/local/bin cocoapods

答案 6 :(得分:1)

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

答案 7 :(得分:1)

对于 MacOS 用户:

只需执行此操作,即可轻松解决您的问题:

brew install cocoapods

答案 8 :(得分:1)

在经历了几个小时的痛苦之后,什么对我有用..

如果您正在运行 brew..

brew install ruby

在终端输出/日志中,确定安装 ruby​​ 的路径,brew 建议“您可能想要将其添加到您的 PATH”,这就是我们要做的。例如,我的是

/usr/local/lib/ruby/gems/3.0.0/bin

通过运行(省略大括号)将其添加到您的路径中

echo 'export PATH"{the_path_you_found_above}:$PATH"' >> ~/.bash_profile

然后通过运行更新您的环境

source ~/.bash_profile

现在,尝试运行您的安装,即

sudo gem install middleman

答案 9 :(得分:1)

我正在制作一个 word search 应用程序,我必须安装 cocoapods,在格式化我的 mac 并重新安装 xcode 后,当我想安装 cocoapods 时仍然出现错误。

对此的解决方案如下:

看起来 CocoaPods 1.9.0(撰写本文时的最新版本)依赖于比 2.3.7 更新的 Ruby 版本。但 macOS Mojave 仅包含 Ruby 2.3.7,因此您有几个不同的选择。

    Upgrade to macOS Catalina and get Ruby 2.6.3
    Use Ruby Version Manager to install a newer version of Ruby
    Install an older version of CocoaPods
    sudo gem install cocoapods -v 1.8.4

我做了 3 个:

sudo gem install cocoapods -v 1.8.4

答案 10 :(得分:0)

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

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

答案 11 :(得分:0)

在搜索了一些解决方案之后,事实证明需要-dev包,而不仅仅是ruby1.8。所以,如果你有ruby1.9.1做

sudo apt-get install ruby1.9.1-dev

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

sudo apt-get install ruby-dev

应该修复它。

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

答案 12 :(得分:0)

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

sudo apt install build-essential

答案 13 :(得分:0)

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

结果是缺少ruby文件头,所以我不得不运行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

安装后,错误已修复!

答案 14 :(得分:0)

如果您是 mac 用户,则必须更新正在使用的 clang 版本 我花了几个小时搜索这个并安装了卸载的 xcode 命令行工具,但它没有帮助。 我运行了 gcc -v 并且 Apple clang version 11.0.0 (clang-1100.0.33.8 是输出。 然后我运行 xcode-select -s /Library/Developer/CommandLineTools/,clang 版本更新为 Apple clang version 12.0.0 (clang-1200.0.32.29)。 之后捆绑安装成功。 我希望这会有所帮助。