Ruby gem Nokogiri 1.9.1在具有不同LibXML版本的Mac上失败
我真的很讨厌Ruby/Rails中的这些更新 我有一台Mac High Sierra OSX 10.13。我上次使用Ruby/Rails大约是一年前,所以我当然需要更新东西。我已经在更新转盘上转了一圈又一圈,但我坚持的是:Ruby gem Nokogiri 1.9.1在具有不同LibXML版本的Mac上失败,ruby,nokogiri,libxml2,macos-high-sierra,Ruby,Nokogiri,Libxml2,Macos High Sierra,我真的很讨厌Ruby/Rails中的这些更新 我有一台Mac High Sierra OSX 10.13。我上次使用Ruby/Rails大约是一年前,所以我当然需要更新东西。我已经在更新转盘上转了一圈又一圈,但我坚持的是: Nokogiri was built against LibXML version 2.9.4, but has dynamically loaded 2.7.8 我在旧版本的Nokogiri和LibXML中发现了很多问题,但在这些新版本中却没有。我也试过了所有的答案 我想
Nokogiri was built against LibXML version 2.9.4, but has dynamically loaded 2.7.8
我在旧版本的Nokogiri和LibXML中发现了很多问题,但在这些新版本中却没有。我也试过了所有的答案
我想问题可能是我在旅行前更新了xcode(尽管我从来没有使用过它,我更喜欢sublime),现在我已经安装了OSX 10.14的xcode
有没有什么方法可以让Nokogiri根据2.7.8构建?我只想向一个班级演示RubyonRails有多酷(现在我一点也不觉得它酷)。我试过了
但它仍然是基于libxml2.9.4构建的
很想在2018年解决这个问题:)根据它的:
brew安装libxml2
如果直接安装
gem安装nokogiri--use系统库--with-xml2-include=$(brew--前缀libxml2)/include/libxml2
如果使用Bundle
bundle config build.nokogiri--使用系统库--with-xml2-include=$(brew--前缀libxml2)/include/libxml2
捆绑安装根据其:
brew安装libxml2
如果直接安装
gem安装nokogiri--use系统库--with-xml2-include=$(brew--前缀libxml2)/include/libxml2
如果使用Bundle
bundle config build.nokogiri--使用系统库--with-xml2-include=$(brew--前缀libxml2)/include/libxml2
捆绑安装。。。它在我的机器上工作…;-) 尽管Nokogiri教程建议以复杂的方式手工制作本地环境-请参阅 -如果我坚持这些建议中的任何一个,我都会提前退出并尝试更新系统库的方向,而不是试图让Nokogiri在旧的基础上构建,如果你使用bundler安装gem,你无论如何都不会想手工安装gem。(除了故障排除,反复尝试这个gem,直到它工作,然后确保bundler也可以这样做-但是安装Nokogiri不是这里的问题) 。。。因为:虽然最终您可能不想在web服务器上安装,但遵循中所述的声明和隔离应用程序依赖项的原则仍然是一个好主意 bundler和rvm(或rbenv)是ruby/rails世界中实现这一点的工具(或者,就这点而言,bundler和docker,在那种情况下我不推荐) 如果它仍然不能与rvm一起工作,我将执行以下操作:
- 将rvm与宝石一起使用李>
- 确保当前shell使用您想要的确切gemset和ruby版本。总是
rvm使用2.5。1@my-gemset--create--ruby版本
- 删除gemset中的所有gems:
$rvm gemset empty
- 并重新安装:
- 运行:
$gem安装捆绑程序
- 然后:
$bundle安装
注意:本主题的堆栈溢出答案之一建议将
gemrails
放在Gemfile的顶部:
事实上,启动rails时,文件顺序非常重要:
所以这可能也是个好主意 。。。它在我的机器上工作…;-) 尽管Nokogiri教程建议以复杂的方式手工制作本地环境-请参阅 -如果我坚持这些建议中的任何一个,我都会提前退出并尝试更新系统库的方向,而不是试图让Nokogiri在旧的基础上构建,如果你使用bundler安装gem,你无论如何都不会想手工安装gem。(除了故障排除,反复尝试这个gem,直到它工作,然后确保bundler也可以这样做-但是安装Nokogiri不是这里的问题) 。。。因为:虽然最终您可能不想在web服务器上安装,但遵循中所述的声明和隔离应用程序依赖项的原则仍然是一个好主意 bundler和rvm(或rbenv)是ruby/rails世界中实现这一点的工具(或者,就这点而言,bundler和docker,在那种情况下我不推荐) 如果它仍然不能与rvm一起工作,我将执行以下操作:
- 将rvm与宝石一起使用李>
- 确保当前shell使用您想要的确切gemset和ruby版本。总是
rvm使用2.5。1@my-gemset--create--ruby版本
- 删除gemset中的所有gems:
$rvm gemset empty
- 并重新安装:
- 运行:
$gem安装捆绑程序
- 然后:
$bundle安装
gem install nokogiri -- --use-system-libraries --with-libxml-prefix=/usr/local/Cellar/libxml2/2.7.8