安装json gem时出错'mkmf.rb找不到ruby的头文件'

对于上下文,它在具有防火墙的远程服务器上。 我正在通过代理设置我的环境。 我有ruby 1.8.7 。 当我尝试gem安装..

 sudo gem install --http-proxy <host address>:<port> json 

我得到以下错误:

 Building native extensions. This could take a while... ERROR: Error installing json: ERROR: Failed to build gem native extension. /usr/bin/ruby extconf.rb mkmf.rb can't find header files for ruby at /usr/lib/ruby/ruby.h Gem files will remain installed in /usr/lib64/ruby/gems/1.8/gems/json-1.8.1 for inspection. Results logged to /usr/lib64/ruby/gems/1.8/gems/json-1.8.1/ext/json/ext/generator/gem_make.out 

由于我不确定问题是什么,我search了一下,发现了这些

  • gem install:无法构buildgem原生扩展(无法find头文件) – 这里的说明似乎是特定于正在安装的gem。

  • 如何安装json gem – 无法构buildgem原生扩展这似乎是稍有不同的错误。

任何提示? 谢谢!

现代时代更新,如mimoralea所述 :

如果你使用的是Ruby 2.0或者2.2(谢谢@patrick-davey)。

 sudo apt-get install ruby-dev sudo apt-get install ruby2.0-dev sudo apt-get install ruby2.2-dev 

或者,通用的方式:

 sudo apt-get install ruby`ruby -e 'puts RUBY_VERSION[/\d+\.\d+/]'`-dev 

你发布的第一个链接就是你的情况:没有安装ruby开发环境。 编译ruby扩展需要开发env,这些扩展主要是用C编写的。 代理与问题无关:一切正常下载正常,只是编译失败。

我build议你安装ruby-dev (基于rpm的发行版的ruby-devel )包到你的目标机器上。 gcc包可能也需要。

尝试:

 $ sudo apt-get install ruby-dev 

或者,对于Redhat发行版:

 $ sudo yum install ruby-devel 

或者,对于[开放] SuSE:

 $ sudo zypper install ruby-devel 

如果你使用的是Ruby 2.0或者2.2(谢谢@patrick-davey)或者2.3(谢谢@juanitofatas)。

 sudo apt-get install ruby-dev sudo apt-get install ruby2.0-dev sudo apt-get install ruby2.2-dev sudo apt-get install ruby2.3-dev 

你在这里得到的模式…

我也遇到了这个问题,因为我通过brightbox在Ubuntu上安装了Ruby ,我认为ruby-dev是ruby的主干。 所以我没有安装。 安装ruby2.3-dev修复它:

 sudo apt-get install ruby2.3-dev 

以防你使用SUSE

 sudo yast2 -i ruby-devel 

我有一个类似的问题使用cygwin运行以下命令:

 $ gem install rerun 

我通过安装下面的cygwin包来解决它:

  • rubydevel的
  • libffi-devel的
  • GCC核心
  • GCC-克++
  • 使
  • automake1.15

在Fedora 21中,只需打开一个terminal并以root用户身份安装Ruby Development文件即可。

 dnf install ruby-devel 

安装ruby-devel之后,你可能需要安装gcc