无法安装gem -未能建立gem本地扩展-无法加载这样的文件——mkmf (LoadError)

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

也会得到一个错误。

我错过了什么?

256269 次浏览

还有类似的问题:

通常,解决方案是:

sudo apt-get install ruby-dev

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

sudo apt-get install ruby1.9.1-dev

应该能解决你的问题。


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

sudo apt-get install make
  1. 确保安装了ruby-dev
  2. 确保安装了make
  3. 如果仍然得到错误,请查找建议的包。如果你试图安装类似gem install pg的东西,你还需要安装库libpq-dev (sudo apt-get install libpq-dev)。

以防将来有人遇到这个问题,我使用的是Mac,必须使用“xcode-select——install”安装命令行工具。

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

sudo apt-get install zlibc zlib1g zlib1g-dev

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

$ sudo apt-get install ruby1.9.1-dev

然后尝试安装扩展

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

$ sudo apt-get install g++

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

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

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

在寻找了一些解决方案后,发现-dev包是需要的,而不仅仅是ruby1.8。如果你有ruby1.9.1

sudo apt-get install ruby1.9.1-dev

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

sudo apt-get install ruby-dev

应该把它修好。

尝试定位mkmf以查看该文件是否确实存在。

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

sudo apt install build-essential

为了破案,我花了两个小时白费力气。贴出来的答案没有一个对我有用。我在Mac上(Mojave版本10.14.6,Xcode版本11.3)。

结果发现ruby文件头不见了,所以我必须运行open /Library/Developer/CommandLineTools/Packages/macOS_SDK_headers_for_macOS_10.14.pkg < /代码> < / p >

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

rm -rf /Library/Developer/CommandLineTools

xcode-select --install

然后我再次运行前面的命令:

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

安装后错误被修复!

这对我很管用。 捆绑包配置——全局构建。Snappy——with-opt-dir="$(brew -前缀Snappy)" < /代码> < / p >

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

< a href = " https://hackmd。io / @sBJPlhRESGqCKCqV8ZjP1A S1UY3W7HP noreferrer“rel = > 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 < / p >

  3. 安装下载的文件

  4. 单击安装

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

MacOS用户:

只要这么做,问题就迎刃而解了:

brew install cocoapods

在经历了几个小时的痛苦后,我终于找到了工作。

如果你正在运行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
如果你是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)。 Bundle安装之后就成功了。

.

.

我正在制作一个单词搜索应用程序,我必须安装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安装cocoapods

首先在终端上设置Xcode版本:

sudo xcode-select -switch /Applications/Xcode.app

然后安装:

sudo gem install cocoapods