当我通过runnig'sudo gem install rails'在OSX中安装rails时,我得到了以下内容。
构建原生扩展。这可能需要一段时间...... 错误:安装rails时出错: 错误:无法构建gem原生扩展。
/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/bin/ruby -r ./siteconf20150702-37637-10z8fhh.rb extconf.rb
检查C编译器是否接受...是 检查C编译器是否接受-Wno-error = unused-command-line-argument-hard-error-in-future ... no 使用打包库构建nokogiri。 检查-lz中的gzdopen()...是的 检查iconv ...是的
重要通知:
使用打包版本的libxml2-2.9.2构建Nokogiri 应用以下补丁: - 0001-Revert-Missing-initialization-for-catalog-module.patch - 0002-Fix-missing-entities-after-CVE-2014-3660-fix.patch
Nokogiri团队将继续尽最大努力提供安全保障 及时更新,但如果这是您关注的问题 改为使用系统库;中止此安装过程和 重新安装nokogiri如下:
gem install nokogiri -- --use-system-libraries
[--with-xml2-config=/path/to/xml2-config]
[--with-xslt-config=/path/to/xslt-config]
如果您使用的是Bundler,请告诉它使用选项:
bundle config build.nokogiri --use-system-libraries
bundle install
但请注意,nokogiri与任意不完全兼容 操作系统/软件包供应商提供的libxml2版本。
将libxml2-2.9.2.tar.gz解压缩到tmp / x86_64-apple-darwin14 / ports / libxml2 / 2.9.2 ......好的 使用/Library/Ruby/Gems/2.0.0/gems/nokogiri-1.6.6.2/ports/patches/libxml2/0001-Revert-Missing-initialization-for-the-catalog-module.patch运行补丁... 为libxml2 2.9.2运行'patch'...好的 使用/Library/Ruby/Gems/2.0.0/gems/nokogiri-1.6.6.2/ports/patches/libxml2/0002-Fix-missing-entities-after-CVE-2014-3660-fix.patch运行补丁... 为libxml2 2.9.2运行'patch'...好的 为libxml2 2.9.2运行'configure'...确定 为libxml2运行'compile'2.9.2 ... ERROR,查看'/Library/Ruby/Gems/2.0.0/gems/nokogiri-1.6.6.2/ext/nokogiri/tmp/x86_64-apple-darwin14/ports/libxml2 /2.9.2/compile.log'看看发生了什么。 * extconf.rb失败* 由于某些原因无法创建Makefile,可能缺少必要的 库和/或标题。检查mkmf.log文件以获取更多详细信息。你可以 需要配置选项。
提供配置选项:
--with-OPT-DIR
--without-OPT-DIR
--with-OPT-包括
--without-OPT-包括= $ {停用DIR} /包括
--with-OPT-LIB
--without-OPT-LIB = $ {选择-DIR} / lib目录
--with-MAKE-PROG
--without-MAKE-PROG
--srcdir =。
--curdir
--ruby = /系统/库/框架/ Ruby.framework /版本/ 2.0的/ usr /斌/红宝石
- 救命
- 清洁
--use-系统库
--enable-静
--disable静电
--with-zlib的-DIR
--without-zlib的-DIR
--with-zlib的,包括
--without-ZLIB-包括= $ {的zlib-DIR} /包括
--with-zlib的-LIB
--without-ZLIB-LIB = $ {的zlib-DIR} / lib中
--enable-交叉编译
--disable交叉编译
/Library/Ruby/Gems/2.0.0/gems/mini_portile-0.6.2/lib/mini_portile.rb:279:in block in execute': Failed to complete compile task (RuntimeError)
from /Library/Ruby/Gems/2.0.0/gems/mini_portile-0.6.2/lib/mini_portile.rb:271:in
chdir'
from /Library/Ruby/Gems/2.0.0/gems/mini_portile-0.6.2/lib/mini_portile.rb:271:in execute'
from /Library/Ruby/Gems/2.0.0/gems/mini_portile-0.6.2/lib/mini_portile.rb:70:in
compile'
from /Library/Ruby/Gems/2.0.0/gems/mini_portile-0.6.2/lib/mini_portile.rb:110:in cook'
from extconf.rb:278:in
block in process_recipe'
来自extconf.rb:177:在tap'
from extconf.rb:177:in
process_recipe'中
来自extconf.rb:475:在''
extconf失败,退出代码1
Gem文件将保留在/Library/Ruby/Gems/2.0.0/gems/nokogiri-1.6.6.2中以供检查。 结果记录到/Library/Ruby/Gems/2.0.0/extensions/universal-darwin-14/2.0.0/nokogiri-1.6.6.2/gem_make.out
答案 0 :(得分:1)
使用原生扩展构建gem始终是一件痛苦的事。您需要安装几个库或编译工具。在nokogiri的情况下它是libxml。出于这个原因,我建议使用rvm开始。在谈到unix哲学时,RVM并不是最干净的工具,但它是一个全栈解决方案,这意味着它只是开箱即用。它将使用默认的osx包管理器为您安装所有依赖项。作为包管理员,我推荐homebrew。
#install homebrew
ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
#install rvm into $HOME
brew install gpg
gpg --keyserver hkp://pool.sks-keyservers.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3 7D2BAF1CF37B13E2069D6956105BD0E739499BDB
\curl -sSL https://get.rvm.io | bash -s stable
rvm install ruby --latest
gem install rails #no sudo, as ruby is in $HOME