如果您从 nokogiri 收到分段错误错误,例如,当您打开 rails 控制台时,并且您正在使用 RVM 并且您的 ruby 版本是 1.9.2(我目前是 1.9.2p136)并且您注意到对ruby 1.8.7 就在 nokogiri 分段错误消息之后,那么以下内容可能会有所帮助...
错误
$ rails c
/Users/lex/.rvm/gems/ruby-1.9.2-p136@lmi/gems/nokogiri-1.4.4/lib/nokogiri/nokogiri.bundle: [BUG] Segmentation fault
ruby 1.8.7 (2009-06-12 patchlevel 174) [universal-darwin10.0]
Abort trap
解决方案
(1) 确保 ruby 1.8.7 不是 rvm ruby 版本:
- 运行rvm list
如果是,则将其删除:例如:rvm uninstall ree-1.8.7-2010.02
(2)卸载nokogiri和libxml2相关依赖:
$ gem uninstall nokogiri
$ brew uninstall libxml2
(3) 使用自制软件安装 libxml2
$ brew install libxml2
$ brew link libxml2
(4) 从源代码安装 libxslt
$ 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.7
$ make
$ sudo make install
(5) 安装 nokogiri
gem install nokogiri
替代方案(确保您的路径正确):gem install nokogiri -- --with-xml2-include=/usr/local/Cellar/libxml2/2.7.7/include --with-xml2-lib=/usr/local/Cellar/libxml2/2.7.7/lib --with-xslt-dir=/usr/local/Cellar/libxslt/1.1.26
(6) 测试
$ rails c
Loading development environment (Rails 3.0.3)
>>
获取并保持 Ruby XML 解析库正常运行可能是个问题。以下是一些替代方案:LibXML、Hpricot、REXML