ChatGPT解决这个技术问题 Extra ChatGPT

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

我试图使用 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 得到纠正

J
Jeshua Lacock

在寻找解决方案后发现需要 -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 已弃用 SOAP,因此 aws-sdk 也需要这样做。如果利益相关者反对生产构建中的任何东西-dev,则令人担忧。 (SDK 也不会让他们兴奋)。
j
jmontross

这是对我有用的答案。在上面的评论中,但值得作为 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 版本吗?
J
James Dunmore

我还需要安装 build-essential:

sudo apt-get install build-essential

这就是这里的票。我想我还必须安装 ruby-dev ,但是直到我也安装了 build-essential 之后它才起作用。一百万谢谢
k
kenju254

问题在 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 可用...


是的,这个在 ruby1.9.3 上也对我有用。 ruby1.9.3-dev 的 ubuntu 存储库中没有包。
不再......在使用 --ruby 从 rvm.io 安装 rvm 后工作 - 并且可能最好先 apt-get remove ruby
M
Matteo Alessani

你有没有尝试过:

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
S
Sergey Nikolaev

安装捆绑包时出现类似错误

sudo apt-get install ruby-dev

对我很有用,解决了 Mint 16 ruby1.9.3 的问题


J
JGutierrezC

我觉得有点晚了,但是

sudo yum install -y gcc ruby-devel libxml2 libxml2-devel libxslt libxslt-devel

在 Fedora 上为我工作。

http://nokogiri.org/tutorials/installing_nokogiri.html


C
Community

您拥有 Ruby 1.8,因此您需要至少升级到 1.9 才能使其正常工作。

如果是,请检查 How to install a specific version of a ruby gem?

如果这没有帮助,请再次重新安装 ruby-dev


M
Mohit Verma

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

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

然后 sudo gem install rails 验证它是否执行 rails -v 它会在 rails 上显示版本

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


你仍然可以在 Linux 上使用 RVM。我正在这样做(但在安装导轨时仍然遇到此 mkmf 错误的问题)
C
Caleb Santos

Ruby 版本:2.7.1 gem 版本:3.1.3

您需要检查无法安装的扩展,并找出原因。

阅读安装错误时显示的 mkmf.log 文件“要查看此扩展无法编译的原因,请检查可在此处找到的 mkmf.log”,可能缺少 lib(有时为 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 到 package makepkg 软件包

希望有所帮助!


关注公众号,不定期副业成功案例分享
关注公众号

不定期副业成功案例分享

领先一步获取最新的外包任务吗?

立即订阅