首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >为什么在Mac OS上安装Nokogiri失败,并缺少libiconv?

为什么在Mac OS上安装Nokogiri失败,并缺少libiconv?
EN

Stack Overflow用户
提问于 2011-04-03 09:54:50
回答 26查看 76.5K关注 0票数 162

我一直在尝试在Mac OS 10.9.3上安装Nokogiri,无论我如何尝试,最终安装都会失败,并显示以下错误消息:

代码语言:javascript
运行
AI代码解释
复制
$ 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

在遵循web上提供的大量帮助(包括使用brew构建和安装libxml2和libxslt以及从源代码构建libiconv (如“Installing Nokogiri”中所述))之后,错误仍然存在。

当尝试运行Nokogiri的安装时,libxml2和libxslt似乎可以正常运行,但libiconv却不行。

有没有更了解这些的人知道如何安装Nokogiri?

EN

回答 26

Stack Overflow用户

发布于 2011-11-30 08:26:58

我终于能够解决这个问题了。上面的解决方案都不能完全解决我的问题。

当我尝试在OSX Lion 10.7.2上使用gem install nokogiri时,我得到了这个错误。首先,这个错误通过说libiconv缺失来掩盖真正的问题,因为即使nokogiri找不到libxslt或libxml2,你也会得到同样的错误,在我的例子中,它找不到。

因此,我在http://nokogiri.org/tutorials/installing_nokogiri.html上的Homebrew部分(稍微做了一些修改,以适应更新版本的libxml2)中遵循了说明:

代码语言:javascript
运行
AI代码解释
复制
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

在这一点上,我按照nokogiri站点上的说明进行了尝试

代码语言:javascript
运行
AI代码解释
复制
gem install nokogiri -- --with-xslt-dir=/usr/local/Cellar/libxslt/1.1.26

然而,这仍然失败了,因为当从源代码构建libxslt时,它会将/include文件夹安装在一个很时髦的地方。因此您需要分别指定libinclude文件夹,如下所示:

代码语言:javascript
运行
AI代码解释
复制
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

这仍然不起作用(同样的libiconv错误),所以我尝试指定所有三个必需的库(libxslt、libxml2和libiconv):

代码语言:javascript
运行
AI代码解释
复制
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

现在我得到了一个不同的错误!这仍然是一个错误,但至少它是不同的。make进程失败,出现以下错误:

代码语言:javascript
运行
AI代码解释
复制
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

呃,怎么了?在谷歌了很多次之后,我偶然发现了这个神奇的帖子:http://www.refresherate.com/2010/01/08/fixing-ld-warning-in-usrlocalliblibz-dylib-file-is-not-of-required-architecture/

显然,OSX Lion附带了一些糟糕版本的libz库(libz.dylib, libz.1.dylib, libz.1.2.4.dylib),需要用Xcode SDK的最新版本来替换它们。这篇文章比我更好地解释了它,所以请阅读上面的链接以获得具体的说明。

一旦这些文件被替换,我就运行

代码语言:javascript
运行
AI代码解释
复制
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

再一次,一切都很好。我希望这对其他人有帮助。

票数 20
EN

Stack Overflow用户

发布于 2014-11-28 04:22:17

我只是在人群中加入我的声音,但是mkmf.log说了一些关于找不到x86_64架构的符号的事情。我偶然发现了这个解决方案:

代码语言:javascript
运行
AI代码解释
复制
sudo env ARCHFLAGS="-arch x86_64" gem install nokogiri -- --use-system-libraries

对于最初的提问者来说,这可能解决不了任何问题,但这可能会对某些人有所帮助。

附注: nokogiri一直是我使用ruby应用程序的最高障碍。每次有人依赖于不同的版本时,我都必须弄清楚如何构建它。我的问题每次都不同。

票数 18
EN

Stack Overflow用户

发布于 2019-09-10 12:00:07

gem install nokogiri -v '1.6.6.2' -- --use-system-libraries --with-xml2-include=$(brew --prefix libxml2)/include/libxml2

这对我在macos上很有效。它也适用于1.6.6.4版本

票数 13
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5528839

复制
相关文章
一、导航菜单_苹果cms什么导航菜单
即页面样式,组成很简单,即一个文本输入框<input>和一个搜索图标,这里图标可以自行搜索下载一个,或者像下面一样使用在线图标,全部代码如下:
全栈程序员站长
2022/09/19
4.1K0
一、导航菜单_苹果cms什么导航菜单
Jekyll 文章侧边索引导航
  Jekyll 与 Hexo 不同之处有很多,其中一处是在文章页面中不支持原生 [TOC] Markdown 语法来自动生成目录。而在 Hexo 中,即使主题不支持侧边悬浮的优化目录导航,也可以通过最简单的方式在文章的开始位置生成目录。虽然这种目录永远固定在文章开始的地方,但是总算是能够通过大小标题来给读者一个大概的思路。
zhonger
2022/10/28
1.6K0
Jekyll x Liquid 控制文章列表只显示特定类别的Post
这个也很简单, 只需要立一个 Flag循环判断是否含有这个 Tag 就行 o(
szhshp
2022/08/15
4830
转义,解决花括号在 Jekyll 被识别成 Liquid 代码的问题
发布于 2017-10-12 16:08 更新于 2018-08-12 06:49
walterlv
2018/09/18
1.4K0
各类导航菜单
以下内容由于涉及到很多学习DEMO 和 下载链接,建议在PC端查看。以下资料都来自站长素材。
用户7293182
2022/01/17
2.4K0
HTML导航菜单
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/159456.html原文链接:https://javaforall.cn
全栈程序员站长
2022/09/17
6.1K0
使用 WordPress 的导航菜单
WordPress 原来默认的导航菜单只能是页面,或者分类,或者两者,如果想自己加入一个自定义链接都需要修改主题,非常不方便,所以一个完全可定制化的自定义的 WordPress 导航菜单成了所有人的需求。
Denis
2023/04/14
2K0
使用 WordPress 的导航菜单
导航菜单优化制作
摘要总结:本文主要介绍了如何利用JavaScript语言实现一个具有轮播效果和鼠标悬浮弹出菜单的导航菜单。首先介绍了JavaScript语言的基础知识,然后详细讲解了如何利用JavaScript语言实现轮播效果和鼠标悬浮弹出菜单。最后介绍了如何使用JavaScript语言实现导航菜单的交互功能。
IMWeb前端团队
2017/12/29
3.7K0
导航菜单优化制作
导航菜单优化制作
以前制作导航菜单,总要加许多id在HTML中,js代码也要将id挨个加上去,今日终于习得破解之法,不在用以前那种笨拙的方法了。
IMWeb前端团队
2019/12/03
2.7K0
wordpress输出导航菜单
更多参照 https://developer.wordpress.org/reference/functions/wp_get_nav_menu_items/
切图仔
2022/09/14
1.8K0
wordpress输出导航菜单
bootstrap nav 导航菜单
nav nav-tabs <p>标签式的导航菜单</p> <ul class="nav nav-tabs"> <li class="active"><a href="#">Home</a></li> <li><a href="#">SVN</a></li> <li><a href="#">iOS</a></li> <li><a href="#">VB.Net</a></li> <li><a href="#">Java</a></li> <li><a href="#">PHP</a></li> </ul>
用户5760343
2019/07/05
4.9K0
bootstrap nav 导航菜单
layui响应式导航(菜单)
今天来分享一套自己写的layui响应式导航栏菜单,网络上搜索无果,只能自己写了,现在分享出来。
申霖
2019/12/27
5.1K0
layui响应式导航(菜单)
为带有多种语言的 Jekyll 博客添加多语言选择
发布于 2018-03-06 06:47 更新于 2018-09-01 00:13
walterlv
2018/09/18
1.6K0
二级导航菜单[通俗易懂]
本文用html5+css实现了二级导航菜单,二级导航菜单在网站建设中使用的越来越广泛。 效果图如下:
全栈程序员站长
2022/09/19
5.1K0
二级导航菜单[通俗易懂]
jquery导航菜单「建议收藏」
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/159432.html原文链接:https://javaforall.cn
全栈程序员站长
2022/09/17
5.9K0
jquery导航菜单「建议收藏」
bootstrap 常用导航菜单样式
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>Bootstrap 实例 - 标签页与胶囊式标签页</title> <link rel="stylesheet" href="https://cdn.staticfile.org/twitter-bootstrap/3.3.7/css/bootstrap.min.css"> <script src="https://cdn.staticfile.org/jquery/2.1.1/jquery.min.js"></script> <script src="https://cdn.staticfile.org/twitter-bootstrap/3.3.7/js/bootstrap.min.js"></script> </head> <body>
用户5760343
2019/07/05
6.3K0
Suffusion设置主导航菜单
换用Suffusion主题之后,把菜单栏变成导航横到网站上方了,但是过了很久之后发现不知道以前从哪里设置的这些东西,今天偶然又找到,赶紧记录下来,以防忘记。
the5fire
2019/02/28
1.4K0
Element UI导航菜单(NavMenu),动态多级菜单实现
今天同事封装一个导航栏的组件,使用的 Element UI 的 NavMenu 组件。
德顺
2020/12/28
15.2K0
html导航栏可以展开的下拉菜单,html导航栏下拉菜单如何制作[通俗易懂]
小编给大家分享一下html导航栏下拉菜单如何制作,希望大家阅读完这篇文章后大所收获,下面让我们一起去探讨吧!
全栈程序员站长
2022/09/01
8.9K0
点击加载更多

相似问题

如何在mysql工作台中更改字体大小?

10

在控制台中动态更改字体

41

如何在mysql工作台中更改varchar

14

在MySQL工作台中连接MySQL失败

14

如何在mysql工作台中更改用户

33
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文