`require':没有要加载的此类文件-mkmf(LoadError)


563

我试图使用ruby1.9.1在Ubuntu Natty Narwhal 11.04上安装rails。

我安装了ruby,apt-get install ruby1.9.1-full其中包含dev软件包。我搜索了这个错误,所有的人都建议我安装我已经拥有的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

1
尝试安装watir-webdriver时出现并行错误。通过安装ruby1.0.1-dev也已得到纠正
-kaleidic

Answers:


979

在寻找解决方案后,事实证明该-dev软件包是必需的,而不仅仅是ruby1.8。所以如果你在ruby1.9.1

sudo apt-get install ruby1.9.1-dev

或安装通用红宝石版本,请使用(按照@lamplightdev注释):

sudo apt-get install ruby-dev

应该修复它。

尝试locate mkmf查看该文件是否实际存在。


220
以下将安装与您当前安装的ruby版本匹配的dev软件包:sudo apt-get install ruby​​-dev
lamplightdev

是的,为我工作。如果只想安装当前的ruby版本,请运行ruby -v查找版本。
丹·布拉德伯里

3
@lamplightdev Didnt为我工作,ruby版本为1.9.3,它正在安装1.8如果我尝试安装ruby-dev
Karthik T T

1
我已经安装了ruby-all-dev,它可能适用于所有版本。
jcubic 2014年

由于AWS不推荐使用SOAP,因此aws-sdk也需要这样做。如果利益相关者对生产构建中的任何内容-dev表示担忧,则会令人担忧。(SDK也不会让他们感到兴奋)。
mckenzm 2014年

185

这是对我有用的答案。在上面的评论中,但作为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的附件,选择“用于编译扩展模块的头文件”。
RightHandedMonkey

sudo apt-get install ruby1.9.1-dev在看到注释或这个答案之前,我使用了ruby 1.9.3,这使我能够构建rails扩展。不知道这样的不匹配版本以后是否会引起我的头痛,但是应该注意的是,使用官方接受的答案稍作改动即可正确安装滑轨。
DWils

如果您有RVM,该怎么办?那您是否已经拥有所需的红宝石版本?
thesecretmaster

37

我还需要安装build-essential:

sudo apt-get install build-essential

这是这张票。.我想我也必须安装ruby-dev,但是直到我也安装了build-essential,它才起作用。一百万美元的感谢
联合国

30

问题仍然在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,此方法也有效。这是因为存储库中没有可用的ruby1.9.3-dev ...


1
是的,这个在ruby1.9.3上也对我有用。ubuntu存储库中没有ruby1.9.3-dev的软件包。
DWils 2014年

再也没有...在使用--ruby从rvm.io安装rvm之后工作了-也许最好在此之前易于获得删除红宝石
dagelf





0

您可以使用RVM(Ruby版本管理器)来帮助管理计算机上所有版本的ruby,这对您的开发非常有用(当从不稳定版本迁移到稳定版本时)

或对于Linux(ubuntu)而言 sudo apt-get install ruby1.8-dev

然后sudo gem install rails进行验证, rails -v它将在导轨上显示版本

之后,您可以安装捆绑包(开发需要的gems)


您仍然可以在Linux上使用RVM。我这样做(但仍然有这样的MKMF错误的问题在安装导轨时)
thesecretmaster
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.