Nav*_*eet 347 ruby json rubygems
对于上下文,它在具有防火墙的远程服务器上.我正在通过代理设置我的环境.我有ruby 1.8.7
.当我尝试宝石安装..
sudo gem install --http-proxy <host address>:<port> json
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
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
Run Code Online (Sandbox Code Playgroud)
由于我不确定问题是什么,我用Google搜索并找到了这些
gem install:无法构建gem原生扩展(找不到头文件) - 这里的说明似乎特定于正在安装的gem.
如何安装json gem - 无法构建gem native扩展 这似乎是略有不同的错误.
任何提示?谢谢!
Ale*_*kin 716
现代时代更新,如mimoralea所述:
如果您使用的是ruby 2.0或2.2(感谢@ patrick-davey).
Run Code Online (Sandbox Code Playgroud)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
或者,通用方式:
Run Code Online (Sandbox Code Playgroud)sudo apt-get install ruby`ruby -e 'puts RUBY_VERSION[/\d+\.\d+/]'`-dev
您发布的第一个环节是完全相同的情况:没有安装Ruby开发环境.编译ruby扩展需要开发环境,这些扩展主要是编写的C
.代理与问题无关:一切都下载得很好,只是编译失败.
我建议你安装ruby-dev
(ruby-devel
基于rpm的发行版)包到你的目标机器上.gcc
也可能需要包裹.
尝试:
$ sudo apt-get install ruby-dev
Run Code Online (Sandbox Code Playgroud)
或者,对于Redhat发行版:
$ sudo yum install ruby-devel
Run Code Online (Sandbox Code Playgroud)
或者,对于[open] SuSE:
$ sudo zypper install ruby-devel
Run Code Online (Sandbox Code Playgroud)
mim*_*lea 74
如果您使用的是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
Run Code Online (Sandbox Code Playgroud)
而你在这里得到的模式......
jok*_*oki 40
对于macOS 10.14上的Xcode 11,即使在安装Xcode和安装命令行工具并通过以下方式接受许可后,也会发生这种情况:
sudo xcode-select --install
sudo xcodebuild -license accept
Run Code Online (Sandbox Code Playgroud)
问题是Xcode 11附带了macOS 10.15 SDK,其中包含ruby2.6的标头,但不包含macOS 10.14的ruby2.3的标头。您可以通过运行来验证这是您的问题
ruby -rrbconfig -e 'puts RbConfig::CONFIG["rubyhdrdir"]'
Run Code Online (Sandbox Code Playgroud)
在具有Xcode 11的macOS 10.14上显示不存在的路径
/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
Run Code Online (Sandbox Code Playgroud)
但是,Xcode 11在中安装了macOS 10.14 SDK /Library/Developer/CommandLineTools/SDKs/MacOS10.14.sdk
。不必按照其他答案中的建议安装旧的头文件来污染系统目录。相反,通过选择该SDK,将找到适当的ruby2.3标头:
sudo xcode-select --switch /Library/Developer/CommandLineTools
ruby -rrbconfig -e 'puts RbConfig::CONFIG["rubyhdrdir"]'
Run Code Online (Sandbox Code Playgroud)
现在应该可以正确打印
/Library/Developer/CommandLineTools/SDKs/MacOSX10.14.sdk/System/Library/Frameworks/Ruby.framework/Versions/2.3/usr/include/ruby-2.3.0
Run Code Online (Sandbox Code Playgroud)
同样,gem install
应该在选择该SDK时起作用。
要切换回当前的Xcode SDK,请使用
sudo xcode-select --switch /Applications/Xcode.app
Run Code Online (Sandbox Code Playgroud)
Jua*_*tas 22
我也遇到过这个问题,因为我通过brightbox在Ubuntu上安装了Ruby,我认为ruby-dev是ruby的主干.所以我没有安装.安装ruby2.3-dev修复它:
sudo apt-get install ruby2.3-dev
Run Code Online (Sandbox Code Playgroud)
小智 15
对于那些在Mac OS X上获得此功能的人,您可能需要运行以下命令来安装XCode命令行工具,即使您已经安装了XCode:
sudo xcode-select --install
Run Code Online (Sandbox Code Playgroud)
您还必须通过运行以下命令来同意XCode的条款和条件:
sudo xcodebuild -license
Run Code Online (Sandbox Code Playgroud)
小智 11
我使用cygwin运行以下命令时遇到了类似的问题:
$ gem install rerun
Run Code Online (Sandbox Code Playgroud)
我通过安装以下cygwin包解决了这个问题:
Mil*_*vis 11
大多数投票解决方案都无法在我的机器上运行(linux mint 18.04).仔细观察后,我发现g ++丢失了.解决了
sudo apt-get install g ++
小智 9
如果您使用SUSE
sudo yast2 -i ruby-devel
Run Code Online (Sandbox Code Playgroud)
在 Xcode 11 / macOS Catalina 上,头文件不再位于旧位置,旧/Library/Developer/CommandLineTools/Packages/macOS_SDK_headers_for_macOS_10.14.pkg
文件不再可用。
相反,标头现在安装到/usr/include
当前 SDK 路径的目录中:
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include
Run Code Online (Sandbox Code Playgroud)
该目录的大部分内容可以通过使用xcrun --show-sdk-path
. 并且如果您将此路径添加到CPATH
环境变量中,那么构建脚本(包括那些调用 via 的脚本bundle
)通常能够找到它。
我通过CPATH
在我的.zshrc
文件中设置 my 解决了这个问题:
export CPATH="$(xcrun --show-sdk-path)/usr/include"
Run Code Online (Sandbox Code Playgroud)
在打开一个新的 shell(或运行source .zshrc
)后,我不再收到错误消息mkmf.rb 无法在 /usr/lib/ruby/ruby.h 中找到 ruby 的头文件并且 rubygems 安装正确。
构建到非 macOS 平台的注意事项
如果您要构建到非 macOS 平台,例如 iOS/tvOS/watchOS,此更改将尝试在这些平台中包含 macOS SDK,从而导致构建错误。要解决,请不要
CPATH
在登录时设置环境变量,或者在运行时暂时将其设置为空白,xcodebuild
如下所示:Run Code Online (Sandbox Code Playgroud)CPATH="" xcodebuild --some-args
在 Fedora 21 及更高版本中,您只需打开一个终端并以 root 身份安装 Ruby Development 文件。
dnf install ruby-devel
Run Code Online (Sandbox Code Playgroud)
在 Mac 10.14 上,头文件似乎没有安装在正确的位置。而不是像其他修复程序那样改变路径,我能够运行这个:
open /Library/Developer/CommandLineTools/Packages/macOS_SDK_headers_for_macOS_10.14.pkg
Run Code Online (Sandbox Code Playgroud)
按照说明操作,它为我解决了这个问题。
归档时间: |
|
查看次数: |
207776 次 |
最近记录: |