【问题标题】:Unable to install gem - Failed to build gem native extension - cannot load such file -- mkmf (LoadError)无法安装 gem - 无法构建 gem 本机扩展 - 无法加载此类文件 - mkmf (LoadError)
【发布时间】:2012-11-25 21:43:25
【问题描述】:

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

也会出现错误。

我错过了什么?

【问题讨论】:

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


【解决方案1】:

还有类似的问题:

通常,解决方法是:

sudo apt-get install ruby​​-dev

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

sudo apt-get install ruby​​1.9.1-dev

应该可以解决您的问题。


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

sudo apt-get install make

【讨论】:

  • 但我只有 1.9.3 ruby​​。
  • ruby 1.9.3 是 ruby​​ 1.9.1 的别名
  • 安装ruby1.9.1-dev 后,我还必须安装sudo apt-get install make。谢谢!
  • 如果你已经使用命令sudo apt-get install ruby 安装了你的ruby(没有指定版本)那么你不需要太担心你的版本如果你只是安装sudo apt-get install ruby-dev
  • 我发现在 Ubuntu 16.04 上你还需要sudo apt-get install gcc make
【解决方案2】:

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

sudo apt install build-essential

【讨论】:

  • 在其他建议似乎都没有解决之后为我解决了这个问题。我的设置:Win10 Pro + WSL 和 Ubuntu 18.04 + Ruby 2.5。谢谢!
  • Ubuntu Server Hyper-V VM 也是如此。
  • 在 Docker 中的 Ubuntu 上为我工作
  • 在尝试安装 Typhoeus 时,这对我来说适用于常规安装 Ubuntu 18.04 LTS。花了很长时间才到达那里,谢谢!
【解决方案3】:

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

安装后错误已修复!

【讨论】:

  • 这对我有用。我使用的是 macOS 10.14.6 (18G1012)。 Xcode 11.3.
  • 谢谢。在为颤振开发安装“sudo gem install cocoapods”时,您的解决方案对我有用。
  • 重新安装后我没有得到“Packages/”文件夹。
【解决方案4】:

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

sudo apt-get install zlibc zlib1g zlib1g-dev

【讨论】:

  • 只要安装 zlib1g-dev 就可以满足您的需要,或者至少对我有用。
【解决方案5】:

如果以后有人遇到这个问题,我使用的是 Mac,只需要使用 'xcode-select --install' 安装命令行工具

【讨论】:

  • 这对我有用。就我而言,我一直在摸不着头脑,因为在升级到 El Capitan 之前,我的构建工作正常。
【解决方案6】:

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

$ sudo apt-get install ruby1.9.1-dev

然后尝试安装扩展程序

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

$ sudo apt-get install g++

【讨论】:

    【解决方案7】:

    我创建了一个小型 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 并且是最新的)
    【解决方案8】:
    1. 确保已安装ruby-dev
    2. 确保已安装make
    3. 如果仍然出现错误,请查找建议的软件包。如果您尝试安装 gem install pg 之类的东西,您还需要安装 lib libpq-dev (sudo apt-get install libpq-dev)。

    【讨论】:

      【解决方案9】:

      对于 MacOS 用户:

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

      brew install cocoapods
      

      【讨论】:

        【解决方案10】:

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

        【讨论】:

          【解决方案11】:

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

          【讨论】:

            【解决方案12】:

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

            如果你正在运行 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
            

            【讨论】:

              【解决方案13】:

              如果您是 mac 用户,则必须更新正在使用的 clang 版本 我花了几个小时搜索这个并安装了卸载的 xcode 命令行工具,但它没有帮助。 我跑了gcc -vApple 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)。 之后捆绑安装成功。 我希望这可能会有所帮助。

              【讨论】:

                【解决方案14】:

                我正在制作一个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

                【讨论】:

                  【解决方案15】:

                  在 Mac 中,对我来说这是可行的:

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

                  【讨论】:

                    【解决方案16】:

                    在搜索了一些解决方案后,发现需要 -dev 包,而不仅仅是 ruby​​1.8。所以如果你有 ruby​​1.9.1 做

                    sudo apt-get install ruby1.9.1-dev
                    

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

                    sudo apt-get install ruby-dev
                    

                    应该修复它。

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

                    【讨论】:

                      猜你喜欢
                      • 1970-01-01
                      • 2013-08-21
                      • 1970-01-01
                      • 1970-01-01
                      • 2017-11-02
                      • 1970-01-01
                      • 2019-06-20
                      • 1970-01-01
                      • 1970-01-01
                      相关资源
                      最近更新 更多