问题
I recently upgrade to the 10.10 Yosemite beta, but I\'m having trouble getting Nokogiri installed. I\'m using RVM and Ruby 1.9.3. I\'ve also followed the steps here and tried following the instructions on Nokogiri\'s homepage.
I\'ve installed libxml2 (2.9.1) and libxslt (1.1.28) via homebrew, and have tried using the command line tools from both my Xcode 5 install and Xcode 6 beta.
gem install nokogiri -v \'1.5.5\'
Building native extensions. This could take a while...
ERROR: Error installing nokogiri:
ERROR: Failed to build gem native extension.
/Users/grantdavis/.rvm/rubies/ruby-1.9.3-p362/bin/ruby extconf.rb
checking for libxml/parser.h... *** 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
--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=/Users/grantdavis/.rvm/rubies/ruby-1.9.3-p362/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-libiconv-config
--without-libiconv-config
/Users/grantdavis/.rvm/rubies/ruby-1.9.3-p362/lib/ruby/1.9.1/mkmf.rb:381:in `try_do\': The compiler failed to generate an executable file. (RuntimeError)
You have to install development tools first.
from /Users/grantdavis/.rvm/rubies/ruby-1.9.3-p362/lib/ruby/1.9.1/mkmf.rb:506:in `try_cpp\'
from /Users/grantdavis/.rvm/rubies/ruby-1.9.3-p362/lib/ruby/1.9.1/mkmf.rb:970:in `block in find_header\'
from /Users/grantdavis/.rvm/rubies/ruby-1.9.3-p362/lib/ruby/1.9.1/mkmf.rb:790:in `block in checking_for\'
from /Users/grantdavis/.rvm/rubies/ruby-1.9.3-p362/lib/ruby/1.9.1/mkmf.rb:284:in `block (2 levels) in postpone\'
from /Users/grantdavis/.rvm/rubies/ruby-1.9.3-p362/lib/ruby/1.9.1/mkmf.rb:254:in `open\'
from /Users/grantdavis/.rvm/rubies/ruby-1.9.3-p362/lib/ruby/1.9.1/mkmf.rb:284:in `block in postpone\'
from /Users/grantdavis/.rvm/rubies/ruby-1.9.3-p362/lib/ruby/1.9.1/mkmf.rb:254:in `open\'
from /Users/grantdavis/.rvm/rubies/ruby-1.9.3-p362/lib/ruby/1.9.1/mkmf.rb:280:in `postpone\'
from /Users/grantdavis/.rvm/rubies/ruby-1.9.3-p362/lib/ruby/1.9.1/mkmf.rb:789:in `checking_for\'
from /Users/grantdavis/.rvm/rubies/ruby-1.9.3-p362/lib/ruby/1.9.1/mkmf.rb:969:in `find_header\'
from extconf.rb:114:in `<main>\'
Anyone have an idea on how to fix these install errors?
EDIT 6/10/14: After trying for a couple days to get Nokogiri installed on OSX 10.10, I ended up abandoning the task and restored 10.9 on my machine. Several libraries and bundles need to be updated in order to work in the 10.10 environment.
回答1:
I managed to install Nokogiri under Yosemite (OS X 10.10 Preview).
Step 1: Install Brew
Skip this if brew was installed.
ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
Step 2: Install brew libs
brew tap homebrew/dupes
brew install libxml2 libxslt
brew install libiconv
Step 3: Download and install Apple Commandline Tools for 10.10
It's important that you need to restart after installation.
Link: command_line_tools_for_osx_10_10_june_2014.dmg
After restarted, you can check installation in Terminal:
> xcode-select --install
-> xcode-select: error: command line tools are already installed, use "Software Update" to install updates
This error means you have commandline tool installed correctly.
Installing Nokogiri
Try using n previous version 1.6.1 in your Gemfile, version 1.6.2.1 has issues currently with "10.10 Preview". It only works with my rbenv Ruby 2.0.0p247, failed to install on 2.1.1. You can give your existing Ruby versions a couple of tries.
gem install nokogiri -v '1.6.1' -- --with-iconv-dir=/usr/local/Cellar/libiconv/1.14/
回答2:
libxml2 - 1.6.6.2 in Yosemite:
sudo env ARCHFLAGS="-arch x86_64" gem install nokogiri -- --use-system-libraries -- --with-xml2-include=/usr/local/Cellar/libxml2/2.9.2/include/libxml2 --with-xml2-lib=/usr/local/Cellar/libxml2/2.9.2/lib --with-xslt-lib=/usr/local/lib --with-xslt-include=/usr/local/include
回答3:
For Mac OS El Capitan:
gem install nokogiri -v '1.6.7.1' -- --use-system-libraries=true --with-xml2-include=/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.11.sdk/usr/include/libxml2
回答4:
This worked for me:
ARCHFLAGS="-arch x86_64" gem install nokogiri -v '1.6.0'
回答5:
I had the same problem with MacPorts ruby2.1:
can not gem install nokogiri on osx10.10 with macports ruby2.1
The install starts, the cpu goes to 50% on a single core at 100%, then CPU drops to near zero, but iostat tps
goes through the wall.
This helped:
# port install libiconv libxslt libxml2
# gem install nokogiri -- --use-system-libraries --with-iconv-dir=/opt/local --with-xml2-dir=/opt/local --with-xslt-dir=/opt/local
回答6:
This finally worked for me:
sudo gem install nokogiri -- --use-system-libraries --with-xml2-include=/usr/include/libxml2 --with-xml2-lib=/usr/lib/
回答7:
For anyone else that hasn't been able to get this to work on El Capitan, what finally worked for me was:
sudo gem install nokogiri -- --use-system-libraries --with-xslt-dir=/usr/local/opt/libxslt --with-iconv-dir=/usr/local/opt/libiconv --with-xml2-dir=/usr/local/opt/libxml2 --with-xml2-config=/usr/local/opt/libxml2/bin/xml2-config --with-xml2-include=/usr/local/opt/libxml2/include/libxml2 --with-xslt-config=/usr/local/opt/libxslt/bin/xslt-config
I don't have macports installed, and my system is a weird hodge-podge. Forcing specific installations for each dependency is the only way that I can get Nokogiri to compile. Super annoying, but at least it works.
回答8:
The instructions from the Nokogiri website worked for me on both OSX 10.9 and 10.10.
brew unlink gcc-4.2 # you might not need this step
gem uninstall nokogiri
xcode-select --install
gem install nokogiri
回答9:
sudo gem update --system
sudo gem install nokogiri -v '1.6.6.2' -- --use-system-libraries --with-xml2-include=/usr/include/libxml2 --with-xml2-lib=/usr/lib
回答10:
(full answer here https://gist.github.com/chrisb/4d6a09c6cc1ca2e1b14e)
It looks like Homebrew somehow depends on Ruby being in Versions/1.8 (though even Mavericks ships with 2.0). Until Homebrew addresses this, we'll symlink our system version of Ruby to the one Homebrew looks for.
Create the folder:
sudo mkdir -p /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/bin
Then symlink the binary:
sudo ln -s /usr/bin/ruby /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/bin/ruby
回答11:
This worked for me:
$ brew install libxml2 libxslt # optional?
$ brew install libiconv # optional?
$ gem install nokogiri -v 1.6.8 -- --use-system-libraries --with-xml2-include=/usr/local/opt/libxml2
on environment like this:
$ sw_vers -productVersion
10.9.4
$ brew -v
Homebrew 0.9.9 (git revision aa747; last commit 2016-05-26)
$ gem env
RubyGems Environment:
- RUBYGEMS VERSION: 2.0.14
- RUBY VERSION: 2.0.0 (2014-02-24 patchlevel 451) [universal.x86_64-darwin13]
回答12:
The only thing that worked for me was to upgrade the compiler from apple-gcc42 to gcc48:
brew uninstall apple-gcc42
brew install gcc48 # this might take an hour or so
rvm implode
\curl -sSL https://get.rvm.io | bash -s stable # reinstall RVM
rvm install ruby-1.9.3-p551
bundle update libv8 # 3.16.14.3 doesn't work but 3.16.14.7 does
bundle
回答13:
If you're using OS X 10.10 and MacPorts you have to install pkgconfig as well:
sudo port install pkgconfig libxml2 libxslt libiconv
Also if you want to use MacPorts libraries automagically without adding configure options you'll need to add this to your .profile or .bashrc:
export PATH=/opt/local/bin:/opt/local/sbin:$PATH
export MANPATH=/opt/local/share/man:$MANPATH
export LDFLAGS="-L/opt/local/lib"
export CPPFLAGS="-I/opt/local/include"
And also you may want to add this to tell Nokogiri to always use your system libraries:
export NOKOGIRI_USE_SYSTEM_LIBRARIES=Y
Restart terminal after adding all these exports.
Using this configuration you can install Nokogiri using:
gem install nokogiri
回答14:
I got the same error message on OS X Yosemite version 10.10.5
I had recently done various OS updates and it turned out I only needed to accept the new xcode license agreement using the following command:
sudo xcodebuild -license
回答15:
In my case, the error message was written below and the accordingly solution as well.
Error message:
...
libxml2 is missing. Please locate mkmf.log to investigate how it is failing.
...
Solution:
gem install nokogiri -- --use-system-libraries --with-libxml2lib=/usr/local/opt/libxml2/lib/libxml2.a
I directly gave it the path of the library of libxml2.a
回答16:
Install the full Xcode. It was the only thing that worked for me for old Nokogiri versions.
回答17:
For me switching to Xcode 5 rather than using Xcode 6's CLI tool:
sudo xcode-select --switch /Applications/Xcode.app/Contents/Developer/
回答18:
I think the issue is related to the system Ruby not being found or multiple Rubies are installed.
- Do you use RVM to manage rubies?
- What is the output of
ruby -v
?
Those should be the starting point to finding a solution.
The bad interpreter
error is related to a problem with the Ruby installation.
Ideally, you should start with the system Ruby, the one that ships with Xcode. So, you would uninstall Xcode completely using:
http://osxdaily.com/2012/02/20/uninstall-xcode/
Uninstall brew
, rvm
and reinstall them.
回答19:
Just try:
xcode-select --install
回答20:
This worked:
gem install nokogiri -- --with-xml2-include=/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.11.sdk/usr/include/libxml2 --use-system-libraries
Source
回答21:
solve the "Can't write /usr/bin/nokogiri while Installing on Mac OS El Capitan" problem on mac os x:
sudo gem install nokogiri -n /usr/local/bin
Reference: https://www.bountysource.com/issues/28085261-can-t-write-usr-bin-nokogiri-while-installing-on-mac-os-ei-capitan
回答22:
Try this out:
Install these packages in the given order:
brew install libxml2 libxslt
brew link libxml2 libxslt
gem install nokogiri
Try updating gcc version:
- Update GCC on OSX
- https://superuser.com/questions/517218/how-do-i-install-gcc-4-7-2-on-os-x-10-8
- Installing libv8 gem on OS X 10.9+
- libv8 (3.11.8.17) bundle install error on Mac
来源:https://stackoverflow.com/questions/24091869/installing-nokogiri-on-osx-10-10-yosemite