安装' sudo gem install mechanize'时出错。

时间:2018-04-17 04:21:36

标签: ruby ubuntu

即使我已经安装了ruby-dev和ruby-make,但仍然会出现同样的错误?如何修复错误?

sudo gem install mechanize
    Building native extensions.  This could take a while...
    ERROR:  Error installing mechanize:
        ERROR: Failed to build gem native extension.

        current directory: /var/lib/gems/2.4.0/gems/unf_ext-0.0.7.5/ext/unf_ext
    /usr/bin/ruby2.4 -r ./siteconf20180417-8728-15wdd1s.rb extconf.rb
    mkmf.rb can't find header files for ruby at /usr/lib/ruby/include/ruby.h

    extconf failed, exit code 1

    Gem files will remain installed in /var/lib/gems/2.4.0/gems/unf_ext-0.0.7.5 for inspection.
    Results logged to /var/lib/gems/2.4.0/extensions/x86_64-linux/2.4.0/unf_ext-0.0.7.5/gem_make.out

1 个答案:

答案 0 :(得分:1)

你没有Ruby的源代码,所以当它试图编译gem时它会失败。它正在寻找/usr/lib/ruby/include/ruby.h但该文件不存在于您的系统中。

通常,使用Ruby的系统版本不是一个好主意。 (出于这个原因,以及其他人)您应该使用Ruby管理器将Ruby安装到您的用户配置文件中,因为这将使编译gem更加容易。

例如,您可以使用RVM安装Ruby:

\curl -sSL https://get.rvm.io | bash -s stable

这将安装最新版本的rvm,然后您可以使用它来安装Ruby 2.4:

rvm install 2.4

您可以通过指定其版本来安装几乎任何版本的Ruby,例如Ruby 2.5:

rvm install 2.5

之后,运行ruby将自动运行RVM安装的版本。由于它已安装在您的个人资料中,因此您无需使用sudo进行任何操作。 (使用sudorvm安装的Rubies时,不应使用rvm

在您的情况下,您将能够成功运行gem install mechanize,因为它将在您的主目录中使用包含源代码和头文件副本的Ruby安装。

如果由于某种原因您无法使用RVM或者不想使用RVM,那么您需要安装Ruby头文件。安装这些标头的方式因操作系统而异,所以我无法给你答案。例如,如果您的操作系统是基于Debian的Linux版本,则可以使用以下命令安装标头:

sudo apt-get install ruby2.4-dev

有更多信息in another answer on stackoverflow