Nokogiri安装失败-libxml2丢失

Roh*_* A. 155 ruby rubygems ruby-on-rails

我总是按照" 安装Nokogiri "教程中的文档来解决Nokogiri安装问题.

但这一次,即使安装了所有依赖项,Nokogiri也没有安装.我收到以下错误:

libxml2 is missing.  please visit <http://nokogiri.org/tutorials/installing_nokogiri.html>
Run Code Online (Sandbox Code Playgroud)

我尝试通过指定libxml2和libxslt目录来安装它:

sudo gem install nokogiri -- --with-xml2-include=/usr/include/libxml2 --with-xml2-lib=/usr/lib --with-xslt-dir=/usr/
Run Code Online (Sandbox Code Playgroud)

但它返回了同样的错误.

我遵循了所有其他相关的Stack Overflow文章,没有人帮忙.有没有人有办法解决吗?

Rya*_*yan 244

您实际上可能需要安装这两个软件包

sudo apt-get install libxslt-dev libxml2-dev
Run Code Online (Sandbox Code Playgroud)

  • 评论如何评价这个评价高于接受的答案? (7认同)
  • 因为问题"甚至在安装了所有依赖项之后".所以接受的答案是正确的答案. (3认同)

Eri*_*son 158

首先,安装依赖项:

sudo apt-get install libxslt-dev libxml2-dev
Run Code Online (Sandbox Code Playgroud)

如果仍然收到错误,则可能缺少编译器工具链:

sudo apt-get install build-essential
Run Code Online (Sandbox Code Playgroud)

如果你错过了一个构建工具链,你会得到"libxml2 is missing"错误(至少我在Debian Lenny遇到过这个问题).

Nokogiri构建测试编译libxml2头文件以验证它是否存在,但是,它没有区分"缺少libxml2"和"缺少测试libxml2的编译器".

  • 如果这不是问题,您可能需要安装libxml2-dev (44认同)
  • 如果你在mac:brew install libxslt然后brew install libxml2 (7认同)

Edu*_*rdo 59

在Mac OS X(Mavericks)中,在安装gem之前安装库brew和设置NOKOGIRI_USE_SYSTEM_LIBRARIES=1对我来说是个窍门.

总结:

  • 在OS X上使用port而不是brew,只需要`$ NOKOGIRI_USE_SYSTEM_LIBRARIES = 1 gem install nokogiri`就可以了 (2认同)
  • 在OSX El Capitan 10.11.2中,我使用`brew install libxml2 libxslt homebrew/dupes/libiconv`来使用它 (2认同)
  • 此外,我需要为`gem install nokogiri`命令添加`--with-xml2-include ="/ usr/local/opt/libxml2/include/libxml2"`.否则,它将显示`libxml2版本2.6.21或更高版本是必需的!`(我的libxml2版本是2.9.2) (2认同)

Soj*_*odi 21

我在Fedora 13上遇到了同样的问题.经过令人沮丧和不成功的搜索

gem install nokogiri
Run Code Online (Sandbox Code Playgroud)

为我工作,我能够安装它并解决libxml2错误yum.

只需安装gem via yum而不是gem命令:

su
yum search rubygem-nokogiri   #this find the proper package name
yum install rubygem-nokogiri.i686
Run Code Online (Sandbox Code Playgroud)

这有助于我找到适合Fedora的正确答案,因为我使用RVM进行Ruby包管理,

yum install rubygem-nokogiri
Run Code Online (Sandbox Code Playgroud)

将所有Ruby宝石和依赖项引入系统,而不是进入我的RVM环境,并根据我的经验导致非常令人沮丧和谦卑的体验.

所以,你可以使用以下的Nokogiri yum gem:

yum provides  rubygem-nokogiri
Run Code Online (Sandbox Code Playgroud)

并获取rubygem-Nokogiri的依赖项列表,其中显示了缺少的库.之后我跑了:

yum install libxml2-devel libxslt libxslt-devel
Run Code Online (Sandbox Code Playgroud)

现在Nokogiri编译Fedora和Nokogiri安装程序.D'哦!,我们需要标题从devel库编译Nokogiri.


pdu*_*ler 13

您通常需要用于构建gem的开发文件.尝试:

sudo apt-get install libxslt-dev libxml2-dev
Run Code Online (Sandbox Code Playgroud)

(我刚才看到埃里克在评论中提出了同样的建议.)


ril*_*lla 12

在Mac OS X(Mavericks)中,如果这些解决方案都不起作用,请尝试:

ARCHFLAGS="-arch x86_64" gem install nokogiri
Run Code Online (Sandbox Code Playgroud)

要么

ARCHFLAGS="-arch i386" gem install nokogiri
Run Code Online (Sandbox Code Playgroud)

取决于您系统的架构.


hoh*_*ner 11

这将是:

sudo yum install -y libxml2 libxml2-devel
Run Code Online (Sandbox Code Playgroud)

在RHEL服务器上.


Chl*_*loe 11

我能够安装Chocolatey,Windows 8.1 x64和DevKit x64.

cinst libxml2
cinst libxslt
cinst libiconv

gem install nokogiri -- 
  --with-xml2-include=C:\Chocolatey\lib\libxml2.2.7.8.7\build\native\include 
  --with-xml2-lib=C:\Chocolatey\lib\libxml2.redist.2.7.8.7\build\native\bin\v110\x64\Release\dynamic\cdecl 
  --with-iconv-include=C:\Chocolatey\lib\libiconv.1.14.0.11\build\native\include 
  --with-iconv-lib=C:\Chocolatey\lib\libiconv.redist.1.14.0.11\build\native\bin\v110\x64\Release\dynamic\cdecl 
  --with-xslt-include=C:\Chocolatey\lib\libxslt.1.1.28.0\build\native\include 
  --with-xslt-lib=C:\Chocolatey\lib\libxslt.redist.1.1.28.0\build\native\bin\v110\x64\Release\dynamic
Run Code Online (Sandbox Code Playgroud)

您必须验证路径中的版本号是否正确.

您可能需要添加Microsoft的NuGet存储库:

-Source "https://go.microsoft.com/fwlink/?LinkID=230477"
Run Code Online (Sandbox Code Playgroud)

  • 发现问题了!在Chocolatey的源文件中禁用了Nuget源!但是gem不起作用:[tid-1789500] 126:找不到指定的模块. - C:/Ruby200/lib/ruby/gems/2.0.0/gems/nokogiri-1.6.1/lib/nokogiri/nokogiri.so(LoadError) (3认同)

sob*_*tel 6

在macOS上,在我明确提供XCode libxml2路径之前,以上/以下内容对我来说都不起作用--with-xml2-include

gem install nokogiri -- --with-xml2-include=/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/libxml2 --use-system-libraries
Run Code Online (Sandbox Code Playgroud)