我在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$
答案 0 :(得分:0)
其中一个问题是您手动安装Nokogiri 1.6.6.2,但不包括Gemfile中的nokogiri gem条目。 Bundler将专门向您的应用显示文件中列出的宝石。
如果你被绑在nokogiri 1.6.1上,我不清楚,因为它是另一个宝石的依赖。如果还有另一个宝石要求1.6.1那么你会调查那个宝石的更新版本,这有望取决于新的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将宝石放入Apple系统时,ruby并不是最好的方法。我绝对建议在他的评论中使用RVM或rbenv之类的Ruby版本管理器。