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

Ale*_*dre 165 ruby ubuntu gem ruby-on-rails bcrypt

Ruby 1.9.3

Gemfile的一部分

#...............
gem "pony"
gem "bcrypt-ruby", :require => "bcrypt"
gem "nokogiri" 
#..................
Run Code Online (Sandbox Code Playgroud)

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

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.
Run Code Online (Sandbox Code Playgroud)

然后我就这样做了

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
Run Code Online (Sandbox Code Playgroud)

并得到一个错误.

我错过了什么?

MrY*_*iji 413

有类似的问题:

通常,解决方案是:

sudo apt-get install ruby​​-dev

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

sudo apt-get install ruby​​1.9.1-dev

应该解决你的问题.


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

sudo apt-get install make

  • 安装`ruby1.9.1-dev`之后我还要`sudo apt-get install make`.谢谢! (6认同)
  • 如果你用命令`sudo apt-get install ruby​​`(没有指定版本)安装你的ruby,那么你只需要安装`sudo apt-get install ruby​​-dev`就不用担心你的版本太多了. (6认同)
  • 我发现在Ubuntu 16.04上你还需要`sudo apt-get install gcc make` (6认同)
  • ruby 1.9.3是ruby的别名1.9.1 (5认同)
  • 适用于Ubuntu 14.04并使用puppet gem install (2认同)

Dmi*_* S. 19

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

sudo apt install build-essential
Run Code Online (Sandbox Code Playgroud)


小智 14

对于 MacOS 用户:

只要这样做,它就能轻松解决您的问题:

brew install cocoapods
Run Code Online (Sandbox Code Playgroud)


Jer*_*ome 11

刚刚完成了 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

安装后错误已修复!

  • 重新安装后我没有得到“Packages/”文件夹。 (2认同)

Nat*_*teW 6

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


小智 6

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

sudo apt-get install zlibc zlib1g zlib1g-dev
Run Code Online (Sandbox Code Playgroud)


hmj*_*jha 6

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

$ sudo apt-get install ruby1.9.1-dev
Run Code Online (Sandbox Code Playgroud)

然后尝试安装扩展

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

$ sudo apt-get install g++
Run Code Online (Sandbox Code Playgroud)


haz*_*mat 5

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


小智 5

我创建了一个小型 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)(需要您有苹果帐户) https://developer.apple.com/downloads/index.action

  3. 安装下载的文件

  4. 单击安装

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

  • `brew install cocoapods` 对我有用(假设你已经安装了brew并且是最新的) (6认同)