`require': 没有要加载的文件 -- mkmf (LoadError)
Posted
技术标签:
【中文标题】`require\': 没有要加载的文件 -- mkmf (LoadError)【英文标题】:`require': no such file to load -- mkmf (LoadError)`require': 没有要加载的文件 -- mkmf (LoadError) 【发布时间】:2011-11-30 13:09:50 【问题描述】:我正在尝试使用 ruby1.9.1 在 Ubuntu Natty Narwhal 11.04 上安装 rails。
我使用包含开发包的apt-get install ruby1.9.1-full
安装了 ruby。我用谷歌搜索了这个错误,所有人都建议我安装我已经拥有的 1.9.1-dev。
Building native extensions. This could take a while...
ERROR: Error installing rails:
ERROR: Failed to build gem native extension.
/usr/bin/ruby1.8 extconf.rb
extconf.rb:36:in `require': no such file to load -- mkmf (LoadError)
from extconf.rb:36
Gem files will remain installed in /usr/lib/ruby/gems/1.8/gems/bcrypt-ruby-3.0.1 for inspection.
Results logged to /usr/lib/ruby/gems/1.8/gems/bcrypt-ruby-3.0.1/ext/mri/gem_make.out
【问题讨论】:
我在尝试安装 watir-webdriver 时遇到了并行错误。它也通过安装 ruby1.0.1-dev 得到纠正 Rails installation failed on Ubuntu with "cannot load such file -- mkmf" 的可能重复项 【参考方案1】:你试过了吗:
sudo apt-get install ruby1.8-dev
【讨论】:
我用的是1.9.1,为什么要安装ruby1.8-dev? 这真是太奇怪了,我安装了 1.9.1 但它读取 1.8,当我运行 ruby -v 我得到: ruby 1.8.7 (2010-08-16 patchlevel 302) [x86_64-linux] 您已将 ruby 1.8 设置为系统上的默认 ruby【参考方案2】:在寻找解决方案后发现需要-dev
包,而不仅仅是ruby1.8
。所以如果你有ruby1.9.1
在做
sudo apt-get install ruby1.9.1-dev
或安装通用 ruby 版本,使用(根据@lamplightdev 评论):
sudo apt-get install ruby-dev
应该修复它。
尝试locate mkmf
以查看该文件是否确实存在。
【讨论】:
以下将安装与您当前安装的 ruby 版本匹配的开发包:sudo apt-get install ruby-dev 是的,为我工作。如果您只想安装当前的 ruby 版本,请运行 ruby -v 查找版本。 @lamplightdev 对我没用,ruby 版本是 1.9.3,它正在安装 1.8 如果我尝试安装 ruby-dev 我已经安装了ruby-all-dev
,它可能适用于所有版本。
这对于 aws-sdk 也是必需的,因为 AWS 已弃用 SOAP。如果利益相关者反对生产构建中的任何东西-dev,则令人担忧。 (SDK 也不会让他们兴奋)。【参考方案3】:
您可以使用 RVM(Ruby 版本管理器),它有助于管理您机器上的所有 ruby 版本,这对您的开发非常有帮助(从不稳定版本迁移到稳定版本时)
或者对于 Linux (ubuntu) 去
sudo apt-get install ruby1.8-dev
然后sudo gem install rails
验证它是否执行rails -v
它会在rails 上显示版本
之后,您可以安装捆绑包(开发所需的 gem)
【讨论】:
你仍然可以在 linux 上使用 RVM。我正在这样做(但在安装 rails 时仍然存在这个 mkmf 错误的问题)【参考方案4】:这是对我有用的答案。在上面的 cmets 中,但应该作为 ubuntu 12.04 ruby 1.8.7 的答案而获得应有的位置
sudo apt-get install ruby-dev
# if above doesnt work make sure you have build essential
sudo apt-get install build-essential
【讨论】:
另外值得注意的是,如果你想使用 ubuntu 软件中心,有一个 ruby-dev 插件,你可以选择“用于编译扩展模块的头文件”。 在我看到评论或这个答案之前,我使用了sudo apt-get install ruby1.9.1-dev
和 ruby 1.9.3,这让我能够构建 rails 扩展。不确定这样的不匹配版本是否会在以后让我感到头疼,但应该注意的是,使用官方接受的答案的轻微改动来正确安装导轨。
如果你有 RVM 怎么办?那你不是已经有你需要的 ruby 版本了吗?【参考方案5】:
我还需要安装 build-essential:
sudo apt-get install build-essential
【讨论】:
这张票就在这里.. 我想我还必须安装 ruby-dev 但是直到我安装了 build-essential 之后它才起作用。一百万谢谢【参考方案6】:问题在 Ubuntu 13/04/13.10/14.04 上仍然是递归的
和
sudo apt-get install ruby1.9.1-dev
对我来说很好。因此,如果您使用的是 Ubuntu 13.04/13.10/14.04,那么使用它真的会派上用场。
即使 ruby 版本是 1.9.3,这也有效。这是因为 Repository 中没有 ruby1.9.3-dev 可用...
【讨论】:
是的,这个在 ruby1.9.3 上也对我有用。 ubuntu 存储库中没有 ruby1.9.3-dev 的包。 不再...在使用 --ruby 从 rvm.io 安装 rvm 后工作 - 并且可能最好在之前 apt-get remove ruby【参考方案7】:我觉得有点晚了,但是
sudo yum install -y gcc ruby-devel libxml2 libxml2-devel libxslt libxslt-devel
在 Fedora 上为我工作。
http://nokogiri.org/tutorials/installing_nokogiri.html
【讨论】:
【参考方案8】:我在安装 bundle 时遇到了类似的错误
sudo apt-get install ruby-dev
非常适合我并解决问题 薄荷 16 ruby1.9.3
【讨论】:
【参考方案9】:您拥有 Ruby 1.8,因此您需要至少升级到 1.9 才能使其正常工作。
如果是,请检查How to install a specific version of a ruby gem?
如果这没有帮助,请重新安装ruby-dev
。
【讨论】:
【参考方案10】:Ruby 版本:2.7.1 宝石版本:3.1.3
您需要检查无法安装的扩展,并找出原因。
阅读下安装错误中显示的mkmf.log文件“要查看此扩展无法编译的原因,请查看可在此处找到的mkmf.log” ,可能缺少一个库(有时是 iconv ),您必须安装它。
您也可以使用包管理器(apt、yum、pacman...)搜索扩展。
(个人案例)Arch Linux->nokogiri
gem install rails
给我看了:
要查看此扩展无法编译的原因,请查看 mkmf.log 可以在这里找到: /home/user/.gem/ruby/2.7.0/extensions/x86_64-linux/2.7.0/nokogiri-1.10.9/mkmf.log
转至:https://aur.archlinux.org/packages/ruby-nokogiri/
-
确保您已安装所有依赖项
确保您已安装
make
git clone
包裹
cd
打包
makepkg
包裹
希望能提供帮助!
【讨论】:
以上是关于`require': 没有要加载的文件 -- mkmf (LoadError)的主要内容,如果未能解决你的问题,请参考以下文章
在“要求”中:没有要加载的文件 -- active_record (LoadError)