当前位置: 首页 > 知识库问答 >
问题:

如何在Ubuntu上修复Nokogiri?

司空默
2023-03-14

我用ruby 2.0在我的工作站上运行Ubuntu13.04。0,通过RVM安装。

$aptitude show libxml2

包:libxml2
状态:已安装自动安装:无多拱:相同版本:2.9.0 dfsg1-4ubuntu4.1

$aptitude show libxml2 dev

包:libxml2-dev
状态:已安装自动安装:无多拱:相同版本:2.9.0 dfsg1-4ubuntu4.1

开发能力

Package:libxslt1 dev
状态:已自动安装:无版本:1.1。27-1ubuntu2优先级:可选

v.

警告:Nokogiri是根据LibXML版本2.9构建的。0,但已动态加载2.8。0#Nokogiri(1.6.0)--警告:-Nokogiri是根据LibXML版本2.9构建的。0,但已动态加载2.8。0诺科吉里:1.6。0红宝石:版本:2.0。0平台:x86_64-linux描述:ruby 2.0。0p195(2013-05-14修订版40734)[x86_64-linux]引擎:ruby libxml:binding:扩展源:打包的libxml2_路径:/home/pb/。rvm/gems/ruby-2.0。0-p195/gems/nokogiri-1.6。0/ports/x86_64-linux-gnu/libxml2/2.8。0 libxslt_路径:/home/pb/。rvm/gems/ruby-2.0。0-p195/gems/nokogiri-1.6。0/ports/x86_64-linux-gnu/libxslt/1.1。26:2.9。0加载:2.8。0

我用这个命令安装了nokogiri,因为它使用的是libxml2版本2.8。0,但我不确定它是从哪里来的,因为只有libxml2是通过apt安装的。

gem安装nokogiri--with-xml2-include=/usr/include/libxml2/libxml--with-xslt dir=/usr/include/libxslt

当我运行应用程序时,出现以下错误:

/home/pb/。rvm/rubies/ruby-2.0。0-p195/lib/ruby/site\u ruby/2.0。0/rubygems/core\u ext/kernel\u require。rb:45:inrequire':/home/pb/。rvm/gems/ruby-2.0。0-p195/gems/nokogiri-1.6。0/ports/x86_64-linux-gnu/libxml2/2.8。0/lib/libxml2。所以2:versionLIBXML2_2.9。找不到0(由/home/pb/.rvm/gems/ruby-2.0.0-p195/gems/libxml-ruby-2.6.0/lib/libxml_ruby.so要求)-/home/pb/。rvm/gems/ruby-2.0。0-p195/gems/libxml-ruby-2.6。0/lib/libxml\u ruby。so(加载错误)

谁能告诉我如何摆脱libxml2版本2.8.0?

谢啦


共有3个答案

松亦
2023-03-14

在研究我自己的问题时遇到了你的问题。有一段时间,nokogiri团队似乎在gem安装时覆盖了libxml的系统安装,如下面的评论所示:https://github.com/sparklemotion/nokogiri/issues/829#issuecomment-16877522.不确定这是否对你有帮助,但这似乎是相关的。也许新版本的Nokogiri即将问世。

万开畅
2023-03-14

最终,这是14.04对我唯一有用的东西

gem uninstall nokogiri
NOKOGIRI_USE_SYSTEM_LIBRARIES=1 bundle install # or use gem install instead
席乐童
2023-03-14

默认情况下,Nokogiri使用自己版本的libxml。可能是因为Mac OS提供了一个日期为2001年(!)的libxml版本,旧库也不提供Nokogiri依赖的特性。但是,这可能会导致保持最新的系统出现问题。要解决这个问题,您需要根据操作系统提供的库构建Nokogiri。

这可能是这样的,它来自Arch Linux:

gem install nokogiri -- \
  --with-xml2-include=/usr/include/libxml2/libxml \
  --with-xml2-lib=/usr/lib \
  --with-xslt-include=/usr/include/libxslt \
  --with-xslt-lib=/usr/lib

如果使用Ubuntu或Fedora等发行版,您可能需要安装开发包。在Ubuntu上应该是libxml2devlibxslt1dev,但如果我错了,请纠正我。

 类似资料:
  • 我对Unix系统很陌生,我只是不明白为什么在Ubuntu 20.04焦点窝上安装R时会出现这个问题。 我使用以下过程安装了 R: 在我的 /etc/apt/sources.list文件中检查是否存在字符串debhttps://cloud.r-project.org/bin/linux/ubuntu焦距-起重机40/; 使用命令:sudo apt-get update,然后命令sudo apt-ge

  • 这是我在这个论坛上找到的提供会话工厂的类,但我一直得到JndiException:解析JNDI名称[]时出错 javax。命名。NoInitialContextException:需要在环境或系统属性中指定类名,或者作为applet参数,或者在应用程序资源文件中指定类名:java。命名。工厂以javax开头。命名。spi。NamingManager。javax上的getInitialContext

  • 我正在努力修复安装postgres客户端时的一个错误。我在一个持续集成构建上安装这个,所以我需要它安装无误。问题是,客户机已经安装,如果我进入服务器,我甚至可以运行命令,但我需要在没有触摸的情况下运行这些命令,这意味着安装必须在没有错误的情况下进行。我已经做了所有的google-foo,但我在Ubuntu论坛或这里看到的建议似乎都没有指向正确的方向。这都是Ubuntu14.04上的。 或者,只要客

  • 问题内容: 我正在创建一个标头,一旦滚动到一定数量的像素,它就会固定并保持在原位。 我可以只使用CSS和html来执行此操作吗,还是也需要jquery? 我创建了一个演示,以便您可以理解。任何帮助将是巨大的! 问题答案: 您需要一些JS来进行滚动事件。最好的方法是为固定位置设置一个新的CSS类,当滚动超过某个点时,该类将分配给相关的div。 HTML CSS jQuery 编辑:扩展示例 如果触发

  • 问题内容: 我在Java应用程序中使用了一些AWT代码,这些代码运行良好,直到我通过Jenkins和Gradle在Linux Mint Debian Edition上对其进行了单元测试:现在,我对此感到讨厌,在此进行了说明。 单元测试失败导致我的构建失败;我该如何解决? 问题答案: 这些步骤使我摆脱了HeadlessException: 将Xvnc插件添加到Jenkins 安装VNC: 确保Jen

  • 问题内容: 如果在命令提示符终端中启动python并尝试打开一些url,尽管名称可以通过DNS解析,但我得到以下结果: 我禁用了防火墙,以管理员身份启动命令提示符,但这几乎是我能想到的。nslookup可以正常工作,所以我看不出有什么问题。有什么建议? 问题答案: 显然,在Internet Explorer连接设置中,定义了无法访问的代理,并且urllib出于某种原因考虑了此设置,从而导致了错误。