即使我已经安装了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
答案 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
进行任何操作。 (使用sudo
或rvm
安装的Rubies时,不应使用rvm
在您的情况下,您将能够成功运行gem install mechanize
,因为它将在您的主目录中使用包含源代码和头文件副本的Ruby安装。
如果由于某种原因您无法使用RVM或者不想使用RVM,那么您需要安装Ruby头文件。安装这些标头的方式因操作系统而异,所以我无法给你答案。例如,如果您的操作系统是基于Debian的Linux版本,则可以使用以下命令安装标头:
sudo apt-get install ruby2.4-dev