【问题标题】:rails : install nokogiri fails on Mac OSX Yosemiterails : 在 Mac OSX Yosemite 上安装 nokogiri 失败
【发布时间】:2015-10-24 08:30:50
【问题描述】:

我在 Mac OS X Yosemite 上安装了 Rails 4.2.3,但是当我尝试启动服务器时,我收到此错误消息

Companys-MacBook-Pro:App MyUser$ rails server
Could not find nokogiri-1.6.1 in any of the sources
Run `bundle install` to install missing gems.
Companys-MacBook-Pro:App MyUser$

所以我尝试了这个

sudo gem install nokogiri -v=1.6.1

然后我得到了这些错误

Companys-MacBook-Pro:~ MyUser$ sudo gem install nokogiri -v=1.6.1
Building native extensions.  This could take a while...
ERROR:  Error installing nokogiri:
ERROR: Failed to build gem native extension.

/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/bin/ruby extconf.rb
Extracting libxml2-2.8.0.tar.gz into tmp/x86_64-apple-darwin14.4.0/ports/libxml2/2.8.0... OK
Running 'configure' for libxml2 2.8.0... OK
Running 'compile' for libxml2 2.8.0... OK
Running 'install' for libxml2 2.8.0... OK
Activating libxml2 2.8.0 (from /Library/Ruby/Gems/2.0.0/gems/nokogiri-1.6.1/ports/x86_64-apple-darwin14.4.0/libxml2/2.8.0)...
Extracting libxslt-1.1.26.tar.gz into tmp/x86_64-apple-darwin14.4.0/ports/libxslt/1.1.26... OK
Running 'configure' for libxslt 1.1.26... OK
Running 'compile' for libxslt 1.1.26... OK
Running 'install' for libxslt 1.1.26... OK
Activating libxslt 1.1.26 (from /Library/Ruby/Gems/2.0.0/gems/nokogiri-1.6.1/ports/x86_64-apple-darwin14.4.0/libxslt/1.1.26)...
checking for libxml/parser.h... yes
checking for libxslt/xslt.h... yes
checking for libexslt/exslt.h... yes
checking for iconv_open() in iconv.h... no
checking for iconv_open() in -liconv... yes
checking for xmlParseDoc() in -lxml2... no
-----
libxml2 is missing.  please visit http://nokogiri.org/tutorials/installing_nokogiri.html for help with installing dependencies.
-----
*** extconf.rb failed ***
Could not create Makefile due to some reason, probably lack of necessary
libraries and/or headers.  Check the mkmf.log file for more details.  You may
need configuration options.

Provided configuration options:
--with-opt-dir
--without-opt-dir
--with-opt-include
--without-opt-include=${opt-dir}/include
--with-opt-lib
--without-opt-lib=${opt-dir}/lib
--with-make-prog
--without-make-prog
--srcdir=.
--curdir
--ruby=/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/bin/ruby
--with-zlib-dir
--without-zlib-dir
--with-zlib-include
--without-zlib-include=${zlib-dir}/include
--with-zlib-lib
--without-zlib-lib=${zlib-dir}/lib
--with-iconv-dir
--without-iconv-dir
--with-iconv-include
--without-iconv-include=${iconv-dir}/include
--with-iconv-lib
--without-iconv-lib=${iconv-dir}/lib
--with-xml2-dir
--without-xml2-dir
--with-xml2-include
--without-xml2-include=${xml2-dir}/include
--with-xml2-lib
--without-xml2-lib=${xml2-dir}/lib
--with-xslt-dir
--without-xslt-dir
--with-xslt-include
--without-xslt-include=${xslt-dir}/include
--with-xslt-lib
--without-xslt-lib=${xslt-dir}/lib
--with-libxslt-config
--without-libxslt-config
--with-pkg-config
--without-pkg-config
--with-libxml-2.0-config
--without-libxml-2.0-config
--with-pkg-config
--without-pkg-config
--with-libiconv-config
--without-libiconv-config
--with-pkg-config
--without-pkg-config
--with-iconvlib
--without-iconvlib
--with-xml2lib
--without-xml2lib


Gem files will remain installed in /Library/Ruby/Gems/2.0.0/gems/nokogiri-1.6.1 for inspection.
Results logged to /Library/Ruby/Gems/2.0.0/gems/nokogiri-1.6.1/ext/nokogiri/gem_make.out
Companys-MacBook-Pro:~ MyUser$ 

然后我按照 nokogiri 网站上的说明安装 libxslt、libxml2 和 libiconv

Companys-MacBook-Pro:~ MyUser$ brew install libxml2
Warning: libxml2-2.9.2 already installed
Companys-MacBook-Pro:~ MyUser$ brew install libxslt
Warning: libxslt-1.1.28_1 already installed
Companys-MacBook-Pro:~ MyUser$ brew install libiconv
Error: No available formula for libiconv 
==> Searching formulae...
==> Searching taps...
Companys-MacBook-Pro:~ MyUser$ 

仍然没有运气。我也试过了

Companys-MacBook-Pro:~ MyUser$ sudo gem install nokogiri
Building native extensions.  This could take a while...
Successfully installed nokogiri-1.6.6.2
Parsing documentation for nokogiri-1.6.6.2
unable to convert "\xCA" from ASCII-8BIT to UTF-8 for lib/nokogiri/nokogiri.bundle, skipping
1 gem installed
Companys-MacBook-Pro:~ MyUser$ 

但 Rails 服务器仍然无法启动,因为它需要 nokogiri 1.6.1

Companys-MacBook-Pro:App MyUser$ rails server
Could not find nokogiri-1.6.1 in any of the sources
Run `bundle install` to install missing gems.
Companys-MacBook-Pro:App MyUser$ 

有人知道这里发生了什么吗?

编辑 1 我确实运行了 bundle install 仍然是同样的问题;这是输出

Companys-MacBook-Pro:App MyUser$ bundle install
Fetching gem metadata from http://rubygems.org/............
Fetching version metadata from http://rubygems.org/...
Fetching dependency metadata from http://rubygems.org/..
Resolving dependencies...
Using rake 0.9.2.2
Using multi_json 1.0.3
Using activesupport 3.1.0
Using bcrypt-ruby 3.0.0
Using builder 3.0.0
Using i18n 0.6.0
Using activemodel 3.1.0
Using erubis 2.7.0
Using rack 1.3.2
Using rack-cache 1.0.3
Using rack-mount 0.8.3
Using rack-test 0.6.1
Using hike 1.2.1
Using tilt 1.3.3
Using sprockets 2.0.0
Using actionpack 3.1.0
Using mime-types 1.16
Using polyglot 0.3.2
Using treetop 1.4.10
Using mail 2.3.0
Using actionmailer 3.1.0
Using arel 2.2.1
Using tzinfo 0.3.29
Using activerecord 3.1.0
Using activeresource 3.1.0
Using addressable 2.3.6
Using bundler 1.10.6
Using coderay 1.0.8
Using coffee-script-source 1.1.2
Using execjs 1.2.4
Using coffee-script 2.2.0
Using rack-ssl 1.3.2
Using rdoc 3.9.4
Using thor 0.14.6
Using railties 3.1.0
Using coffee-rails 3.1.0
Using crack 0.3.1
Using diff-lcs 1.1.3
Using multipart-post 1.2.0
Using faraday 0.7.6
Using git 1.2.6
Using hashie 1.2.0
Using oauth2 0.5.2
Using github_api 0.4.10
Using highline 1.6.21
Using mini_portile 0.5.3
Installing nokogiri 1.6.1 with native extensions

Gem::Installer::ExtensionBuildError: ERROR: Failed to build gem native extension.

    /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/bin/ruby extconf.rb --with-xml2-dir=/usr --with-xslt-dir=/opt/local --with-iconv-dir=/opt/local
Extracting libxml2-2.8.0.tar.gz into tmp/x86_64-apple-darwin14.4.0/ports/libxml2/2.8.0... OK
Running 'configure' for libxml2 2.8.0... OK
Running 'compile' for libxml2 2.8.0... OK
Running 'install' for libxml2 2.8.0... OK
Activating libxml2 2.8.0 (from /private/var/folders/x4/01wntm8j66lf6mwbtmg8t3lm0000gn/T/bundler20150801-30338-1m943xrnokogiri-1.6.1/gems/nokogiri-1.6.1/ports/x86_64-apple-darwin14.4.0/libxml2/2.8.0)...
Extracting libxslt-1.1.26.tar.gz into tmp/x86_64-apple-darwin14.4.0/ports/libxslt/1.1.26... OK
Running 'configure' for libxslt 1.1.26... OK
Running 'compile' for libxslt 1.1.26... OK
Running 'install' for libxslt 1.1.26... OK
Activating libxslt 1.1.26 (from /private/var/folders/x4/01wntm8j66lf6mwbtmg8t3lm0000gn/T/bundler20150801-30338-1m943xrnokogiri-1.6.1/gems/nokogiri-1.6.1/ports/x86_64-apple-darwin14.4.0/libxslt/1.1.26)...
checking for libxml/parser.h... no
-----
libxml2 is missing.  please visit http://nokogiri.org/tutorials/installing_nokogiri.html for help with installing dependencies.
-----
*** extconf.rb failed ***
Could not create Makefile due to some reason, probably lack of necessary
libraries and/or headers.  Check the mkmf.log file for more details.  You may
need configuration options.

Provided configuration options:
--with-opt-dir
--without-opt-dir
--with-opt-include
--without-opt-include=${opt-dir}/include
--with-opt-lib
--without-opt-lib=${opt-dir}/lib
--with-make-prog
--without-make-prog
--srcdir=.
--curdir
--ruby=/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/bin/ruby
--with-zlib-dir
--without-zlib-dir
--with-zlib-include
--without-zlib-include=${zlib-dir}/include
--with-zlib-lib
--without-zlib-lib=${zlib-dir}/lib
--with-iconv-dir
--with-iconv-include
--without-iconv-include=${iconv-dir}/include
--with-iconv-lib
--without-iconv-lib=${iconv-dir}/lib
--with-xml2-dir
--with-xml2-include
--without-xml2-include=${xml2-dir}/include
--with-xml2-lib
--without-xml2-lib=${xml2-dir}/lib
--with-xslt-dir
--with-xslt-include
--without-xslt-include=${xslt-dir}/include
--with-xslt-lib
--without-xslt-lib=${xslt-dir}/lib
--with-libxslt-config
--without-libxslt-config
--with-pkg-config
--without-pkg-config
--with-libxml-2.0-config
--without-libxml-2.0-config
--with-pkg-config
--without-pkg-config
--with-libiconv-config
--without-libiconv-config
--with-pkg-config
--without-pkg-config


Gem files will remain installed in /var/folders/x4/01wntm8j66lf6mwbtmg8t3lm0000gn/T/bundler20150801-30338-1m943xrnokogiri-1.6.1/gems/nokogiri-1.6.1 for inspection.
Results logged to /var/folders/x4/01wntm8j66lf6mwbtmg8t3lm0000gn/T/bundler20150801-30338-1m943xrnokogiri-1.6.1/gems/nokogiri-1.6.1/ext/nokogiri/gem_make.out
An error occurred while installing nokogiri (1.6.1), and Bundler cannot continue.
Make sure that `gem install nokogiri -v '1.6.1'` succeeds before bundling.
Companys-MacBook-Pro:App MyUser$

【问题讨论】:

  • 您的 Gemfile 中是否列出了 nokogiri?如果不添加它,如果是它指定的版本是什么?
  • 感谢@xkickflip 的及时答复。我在 Gemfile 中添加了“gem 'nokogiri', '~> 1.6.1'”并运行了“bundle install”,但我仍然遇到同样的问题
  • 是否有另一个 Gem 专门依赖于 1.6.1?它将在 Gemfile.lock 中列为依赖项。您可以尝试将该 gem 升级到可以与 nokogiri 1.6.6.2(如果存在这样的版本)一起运行的新版本,因为它已经为您安装好了。
  • 感谢@xkickflip 的想法。我确实将 Gemfile 和 Gemfile.lock 中的版本更改为 1.6.6.2,再次运行“捆绑安装”,一切正常。你让我今天一整天都感觉很好 !请将您的评论更改为并回答,以便我对此表示赞赏。谢谢一百万。
  • “sudo gem install nokogiri -v=1.6.1”。您正在将软件安装到 Apple 的 Ruby 安装中。别。相反,请使用 RVMrbenv 在沙箱中安装 Ruby,您可以随心所欲地使用它。

标签: ruby-on-rails ruby osx-yosemite


【解决方案1】:

其中一个问题是您手动安装了 Nokogiri 1.6.6.2,但没有在 Gemfile 中包含 nokogiri gem 条目。 Bundler 将专门仅向您的应用显示文件中列出的 gem。

我不清楚您是否与 nokogiri 1.6.1 相关联,因为它是另一个 gem 的依赖项。如果有另一个 gem 需要 1.6.1,那么您将研究该 gem 的较新版本,希望它依赖于较新的 Nokogiri。 bundle update <othergem> 会尝试这样做。

只是想明确一点,我并不是建议在您的锁定文件中修改另一个 gem 的依赖项,因为它们是由该 gem 的作者设置的。

由于您最初在 Gemfile 中指定了 gem 'nokogiri', '~> 1.6.1',因此您在第一次安装包后就被锁定了。 bundle update nokogiri 会尝试将您更新到最新版本。或者手动将 Gemfile 更改为 1.6.6.2 或更宽松的版本 ~> 1.6 或 1.6.6。

另外,正如@the Tin Man 提到的,使用 sudo install 将 gem 放入 Apple 系统 ruby​​ 并不是最好的方法。我绝对推荐使用他在评论中链接的 Ruby 版本管理器之一,例如 RVM 或 rbenv。

【讨论】:

  • 感谢@xkickflip 的澄清。我没有选择 1.6.1,但是当我尝试启动服务器时,它说“在任何源中都找不到 nokogiri-1.6.1”。当时,当我运行“捆绑安装”时,它并没有改变任何东西,因为 Gemfile 没有 nokogiri 的条目。我在您的第一条评论之后添加了它,但 Gemfile.lock 仍然指向 1.6.1。在我将它们都更改为 1.6.6.2 后,一切正常。感谢您的帮助。
猜你喜欢
  • 2014-07-28
  • 2014-09-02
  • 1970-01-01
  • 2015-02-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-06-15
相关资源
最近更新 更多