作为上下文,它位于具有防火墙的远程服务器上。我正在通过代理设置环境。我有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
因为我不确定是什么问题,我谷歌了一下,找到了这些
gem安装:构建gem本地扩展失败(找不到头文件)-这里的说明似乎是特定于正在安装的gem。
如何安装json gem -未能建立gem本地扩展这似乎是略有不同的错误。
有提示吗?谢谢!
现代更新,如mimoralea所述:
如果你正在使用ruby 2.0或2.2(谢谢@patrick-davey)。
安装ruby2.0-dev
安装ruby2.2-dev
Sudo apt-get安装ruby2.3-dev
或者,一般来说:
安装ruby-dev
或
sudo apt-get install ruby ' ruby -e '将RUBY_VERSION[/\d+\.\d+/]' ' -dev
你发布的第一个链接正是你的情况:没有安装ruby开发环境。需要开发环境来编译ruby扩展,这些扩展大多是用c编写的,Proxy与这个问题无关:下载一切都很好,只是编译失败。
我建议你在目标机器上安装ruby-dev (ruby-devel用于基于rpm的发行版)包。
可能还需要GCC包。
Try:
$ sudo apt-get install ruby-dev
或者,对于Redhat发行版:
$ sudo yum install ruby-devel
或者,对于[open]SuSE:
$ sudo zypper install ruby-devel
对于macOS 10.14上的Xcode 11,即使在安装Xcode和安装命令行工具并接受许可证之后,也会发生这种情况
sudo xcode-select --install
sudo xcodebuild -license accept
问题是Xcode 11发布了macOS 10.15 SDK,其中包括ruby2.6的头文件,但不包括macOS 10.14的ruby2.3。你可以通过运行来验证这就是你的问题所在
ruby -rrbconfig -e 'puts RbConfig::CONFIG["rubyhdrdir"]'
在macOS 10.14和Xcode 11上打印不存在的路径
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.15.sdk/System/Library/Frameworks/Ruby.framework/Versions/2.3/usr/include/ruby-2.3.0
然而,Xcode 11在/Library/Developer/CommandLineTools/SDK /MacOS10.14.sdk中安装了一个macOS 10.14 SDK。没有必要像其他回答中建议的那样通过安装旧的头文件来污染系统目录。相反,通过选择该SDK,将找到合适的ruby2.3头文件:
sudo xcode-select --switch /Library/Developer/CommandLineTools
ruby -rrbconfig -e 'puts RbConfig::CONFIG["rubyhdrdir"]'
现在应该正确打印了
/Library/Developer/CommandLineTools/SDKs/MacOSX10.14.sdk/System/Library/Frameworks/Ruby.framework/Versions/2.3/usr/include/ruby-2.3.0
同样地,gem安装应该在选择SDK时正常工作。
要切换回当前的Xcode SDK,使用
sudo xcode-select --switch /Applications/Xcode.app