pol*_*lau 156 ruby macos libxml2 nokogiri libiconv
我一直在尝试在Mac OS 10.9.3上安装Nokogiri,无论我尝试什么,安装最终都会失败,并显示以下错误消息:
$ sudo gem install nokogiri -- --with-xml2-include=/usr/local/Cellar/libxml2/2.9.1/include/libxml2 --with-xml2-lib=/usr/local/Cellar/libxml2/2.9.1/lib --with-xslt-dir=/usr/local/Cellar/libxslt/1.1.28 --with-iconv-include=/usr/local/Cellar/libiconv/1.14/include --with-iconv-lib=/usr/local/Cellar/libiconv/1.14/lib
Building native extensions with: '--with-xml2-include=/usr/local/Cellar/libxml2/2.9.1/include/libxml2 --with-xml2-lib=/usr/local/Cellar/libxml2/2.9.1/lib --with-xslt-dir=/usr/local/Cellar/libxslt/1.1.28 --with-iconv-include=/usr/local/Cellar/libiconv/1.14/include --with-iconv-lib=/usr/local/Cellar/libiconv/1.14/lib'
This could take a while...
Building nokogiri using packaged libraries.
ERROR: Error installing nokogiri:
ERROR: Failed to build gem native extension.
/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/bin/ruby extconf.rb --with-xml2-include=/usr/local/Cellar/libxml2/2.9.1/include/libxml2 --with-xml2-lib=/usr/local/Cellar/libxml2/2.9.1/lib --with-xslt-dir=/usr/local/Cellar/libxslt/1.1.28 --with-iconv-include=/usr/local/Cellar/libiconv/1.14/include --with-iconv-lib=/usr/local/Cellar/libiconv/1.14/lib
Building nokogiri using packaged libraries.
checking for iconv.h... yes
checking for iconv_open() in iconv.h... no
checking for iconv_open() in -liconv... no
checking for libiconv_open() in iconv.h... no
checking for libiconv_open() in -liconv... no
-----
libiconv 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
--help
--clean
--use-system-libraries
--enable-static
--disable-static
--with-zlib-dir
--without-zlib-dir
--with-zlib-include
--without-zlib-include=${zlib-dir}/include
--with-zlib-lib
--without-zlib-lib=${zlib-dir}/lib
--enable-cross-build
--disable-cross-build
Gem files will remain installed in /Library/Ruby/Gems/2.0.0/gems/nokogiri-1.6.2.1 for inspection.
Results logged to /Library/Ruby/Gems/2.0.0/gems/nokogiri-1.6.2.1/ext/nokogiri/gem_make.out
Run Code Online (Sandbox Code Playgroud)
在网上找到很多帮助之后,包括使用brew构建和安装libxml2和libxslt以及从源代码构建libiconv(如" 安装Nokogiri "中所述),错误保持不变.
当试图运行Nokogiri的安装时,似乎可以找到libxml2和libxslt,但不是libiconv.
任何对这些事情有更好了解的人都知道如何安装Nokogiri?
Cor*_*ory 234
我遇到过同样的问题.不幸的是," 安装Nokogiri "并没有涵盖Iconv问题.以下是我解决问题的方法.
首先安装自制软件,它会让你的生活更轻松.如果您已经安装了它,请务必通过更新来获取最新的公式:
brew update
Run Code Online (Sandbox Code Playgroud)
注意:在OSX 10.9+中,您可能需要安装xCode命令工具才能安装libiconv.
xcode-select --install
Run Code Online (Sandbox Code Playgroud)
然后安装较新版本的libiconv
brew install libiconv
Run Code Online (Sandbox Code Playgroud)
然后链接你的新iconv libs:
gem install nokogiri -- --with-iconv-dir=/usr/local/Cellar/libiconv/1.14
Run Code Online (Sandbox Code Playgroud)
然后安装你的宝石
brew update
Run Code Online (Sandbox Code Playgroud)
Fil*_*Kis 80
尝试使用系统库.OSX在较新版本中附带libiconv,但默认安装脚本似乎有问题
gem install nokogiri -- --use-system-libraries
Run Code Online (Sandbox Code Playgroud)
编辑:如果使用捆绑器,如Geoff所述,您可以:
bundle config build.nokogiri --use-system-libraries
Run Code Online (Sandbox Code Playgroud)
Mic*_*cht 36
@Cory的解决方案包含正确的答案,但是Mavericks的解决方案实际上比顶级解决方案简单得多,所以我只需要重新发布必要的步骤.
On Mavericks(OSX 10.9+):
安装Xcode命令行工具:
xcode-select --install
Run Code Online (Sandbox Code Playgroud)
然后安装你的宝石:
gem install nokogiri
Run Code Online (Sandbox Code Playgroud)
Mic*_*cht 19
我终于能够解决这个问题了.以上解决方案都没有为我完全修复它.
尝试gem install nokogiri使用OSX Lion 10.7.2 时出现此错误.首先,这个错误掩盖了真正的问题,说libiconv丢失,因为即使nokogiri找不到libxslt或libxml2,你也会得到同样的错误,在我的情况下,它不能.
所以我按照Homebrew部分下的http://nokogiri.org/tutorials/installing_nokogiri.html上的说明进行了修改(略微修改以考虑更新版本的libxml2):
brew install libxml2
brew link libxml2
# install libxslt from source
wget ftp://xmlsoft.org/libxml2/libxslt-1.1.26.tar.gz
tar -zxvf libxslt-1.1.26.tar.gz
cd libxslt-1.1.26
./configure --prefix=/usr/local/Cellar/libxslt/1.1.26 --with-libxml-prefix=/usr/local/Cellar/libxml2/2.7.8
make
sudo make install
Run Code Online (Sandbox Code Playgroud)
此时我按照nokogiri网站上的指示进行了尝试
gem install nokogiri -- --with-xslt-dir=/usr/local/Cellar/libxslt/1.1.26
Run Code Online (Sandbox Code Playgroud)
但是,这仍然失败,因为从源代码构建libxslt时,它会将/include文件夹安装在一个时髦的地方.所以你需要单独指定lib和include文件夹,如下所示:
gem install nokogiri -- --with-xslt-lib=/usr/local/Cellar/libxslt/1.1.26/lib --with-xslt-include=/usr/local/Cellar/libxslt/1.1.26/include/libxslt
Run Code Online (Sandbox Code Playgroud)
这仍然无效(相同的libiconv错误),所以我试图指定所有三个必需的库(libxslt,libxml2和libiconv):
gem install nokogiri -- --with-xslt-lib=/usr/local/Cellar/libxslt/1.1.26/lib --with-xslt-include=/usr/local/Cellar/libxslt/1.1.26/include/libxslt --with-iconv-dir=/usr/local/Cellar/libiconv/1.14 --with-xml2-dir=/usr/local/Cellar/libxml2/2.7.8
Run Code Online (Sandbox Code Playgroud)
现在我得到了一个不同的错误!这仍然是一个错误,但至少它是不同的.制作过程失败了:
in /opt/local/lib/libz.1.dylib, file was built for unsupported file format which is not the architecture being linked (x86_64) for architecture x86_64
Run Code Online (Sandbox Code Playgroud)
呃,什么?经过大量的谷歌搜索,我遇到了这个奇迹的帖子:http://www.refresherate.com/2010/01/08/fixing-ld-warning-in-usrlocalliblibz-dylib-file-is-not-of-required -建筑/
显然,OSX Lion附带了一些不良版本的libz库(libz.dylib, libz.1.dylib, libz.1.2.4.dylib),并且需要用Xcode SDK中的最新版本替换它们.文章解释得比我更好,所以请阅读上面的链接以获取具体说明.
一旦这些被替换,我跑了
gem install nokogiri -- --with-xslt-lib=/usr/local/Cellar/libxslt/1.1.26/lib --with-xslt-include=/usr/local/Cellar/libxslt/1.1.26/include/libxslt --with-iconv-dir=/usr/local/Cellar/libiconv/1.14 --with-xml2-dir=/usr/local/Cellar/libxml2/2.7.8
Run Code Online (Sandbox Code Playgroud)
再一次,一切都很好.我希望这有助于其他人.
nbe*_*ing 15
只是将我的声音添加到人群中,但mkmf.log表示无法找到x86_64架构的符号.我偶然发现了这个解决方案:
sudo env ARCHFLAGS="-arch x86_64" gem install nokogiri -- --use-system-libraries
Run Code Online (Sandbox Code Playgroud)
可能无法为原始提问者解决任何问题,但这可能有助于某人.
旁注:nokogiri是我使用ruby应用程序的最大障碍.每当有人依赖于不同的版本时,我必须弄清楚如何构建它.我的问题每次都不一样.
Pra*_*ale 13
gem install nokogiri -v '1.6.6.2' -- --use-system-libraries --with-xml2-include=$(brew --prefix libxml2)/include/libxml2
这在 macos 上对我有用。它也适用于版本1.6.6.4
我正在使用.. OS X 10.9.4 Homebrew 0.9.4
这是我从这个线程成功安装nokogiri,修复丢失的libiconv的总结.
安装Homebrew http://brew.sh/ 或者使用下面的命令更新到最新版本
brew update
Run Code Online (Sandbox Code Playgroud)
安装libxml2 libxslt
brew install libxml2 libxslt
Run Code Online (Sandbox Code Playgroud)
链接libxml2 libxslt
brew link libxml2 libxslt
Run Code Online (Sandbox Code Playgroud)
如果您收到使用--force的警告,请使用下面的命令
brew link --force libxml2 libxslt
Run Code Online (Sandbox Code Playgroud)
安装xCode命令工具以使您能够安装libiconv
xcode-select --install
Run Code Online (Sandbox Code Playgroud)
安装libiconv
wget http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.13.1.tar.gz
tar xvfz libiconv-1.13.1.tar.gz
cd libiconv-1.13.1
./configure --prefix=/usr/local/Cellar/libiconv/1.13.1
make
sudo make install
Run Code Online (Sandbox Code Playgroud)
最后一步,安装nokogiri!
gem install nokogiri -- --with-xml2-include=/usr/local/Cellar/libxml2/2.8.0/include/libxml2 --with-xml2-lib=/usr/local/Cellar/libxml2/2.8.0/lib --with-xslt-dir=/usr/local/Cellar/libxslt/1.1.26 --with-iconv-include=/usr/local/Cellar/libiconv/1.13.1/include --with-iconv-lib=/usr/local/Cellar/libiconv/1.13.1/lib
Run Code Online (Sandbox Code Playgroud)
我解决了这个上Yosemite运行Ruby 2.1.4的
xcode-select --install, 然后xcode-select --install不做 - 感叹)bundle install正常工作.我也做过,brew install libiconv但我不相信需要采取措施.
| 归档时间: |
|
| 查看次数: |
71952 次 |
| 最近记录: |