安装nokogiri出错:构建本地宝石扩展失败 & libiconv丢失(OSX)

58

我尝试克隆这个存储库并运行bundle install。捆绑过程失败并抛出了以下错误:

    ...
    Installing nokogiri 1.6.2.1 with native extensions
    Building nokogiri using packaged libraries.

    Gem::Ext::BuildError: ERROR: Failed to build gem native extension.

        /Users/zulhilmizainudin/.rvm/rubies/ruby-2.2.0/bin/ruby -r ./siteconf20151130-43880-pntnc6.rb extconf.rb
    Building nokogiri using packaged libraries.
    -----
    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=/Users/zulhilmizainudin/.rvm/rubies/ruby-2.2.0/bin/$(RUBY_BASE_NAME)
        --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

    extconf failed, exit code 1

    Gem files will remain installed in /Users/zulhilmizainudin/.rvm/gems/ruby-2.2.0/gems/nokogiri-1.6.2.1 for inspection.
    Results logged to /Users/zulhilmizainudin/.rvm/gems/ruby-2.2.0/extensions/x86_64-darwin-14/2.2.0-static/nokogiri-1.6.2.1/gem_make.out
    An error occurred while installing nokogiri (1.6.2.1), and Bundler cannot continue.
    Make sure that `gem install nokogiri -v '1.6.2.1'` succeeds before bundling.

然后我尝试运行这个:

gem install nokogiri -v '1.6.2.1'

现在我遇到了这个错误:

Building native extensions.  This could take a while...
Building nokogiri using packaged libraries.
ERROR:  Error installing nokogiri:
    ERROR: Failed to build gem native extension.

    /Users/zulhilmizainudin/.rvm/rubies/ruby-2.2.0/bin/ruby -r ./siteconf20151130-43942-1axq4sj.rb extconf.rb
Building nokogiri using packaged libraries.
-----
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=/Users/zulhilmizainudin/.rvm/rubies/ruby-2.2.0/bin/$(RUBY_BASE_NAME)
    --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

extconf failed, exit code 1

Gem files will remain installed in /Users/zulhilmizainudin/.rvm/gems/ruby-2.2.0/gems/nokogiri-1.6.2.1 for inspection.
Results logged to /Users/zulhilmizainudin/.rvm/gems/ruby-2.2.0/extensions/x86_64-darwin-14/2.2.0-static/nokogiri-1.6.2.1/gem_make.out

我试图按照这个回答的步骤操作,但我仍然收到与上面相同的错误。

我也尝试卸载并重新安装brew(根据这个回答),但仍然出现同样的问题。

此外,我还尝试了这个解决方案,但仍然遇到了错误。

现在该怎么做才能确保nokogiri gem已成功安装?

注意:我正在使用OSX 10.11.1 El Capitan。


1
你已经安装了 xcode 吗?执行命令 xcode-select --install 的输出是什么?同时,你是否查看了 nokogiri OSX 安装说明 - Roman Kiselenko
是的,我已经安装了Xcode并运行xcode-select --install命令。 Xcode开发人员工具已成功安装。 - Zulhilmi Zainudin
2
大家是如何知道涉及Xcode的错误的? - Jeremy Thomas
@JeremyThomas 我也想知道。 - developer01
15个回答

121

1
相关答案:https://dev59.com/Y2Ik5IYBdhLWcg3wDKNb - zimkies
你是最棒的!谢谢你! - kdweber89
谢谢。实际上,在运行xcode-select --install之前,我必须将我的MacOS版本更新到Catalina! - alex

32

macOS Sierra上对我有效的是Sam的回答和以下内容的组合:

gem install nokogiri -- --with-xml2-include=/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/libxml2 --use-system-libraries

1
这对我来说有效,尝试安装nokogiri -v 1.8.0。 - margo
我用同样的东西安装Rails,它起作用了!谢谢。 - Andre Simon
1
这个对我有用,只需要确认文件夹是否正确,因为我的文件夹是/Applications/Xcode.app/ Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.13.sdk/usr/include/libxml2。 - Emad

30

当我在 Codeship 上使用 Ruby 2.3 进行 bundle install 安装时,遇到了与版本号为 1.6.7.2 的 Nokogiri 相关的问题。

我的解决方法是在执行 bundle install 命令之前添加以下命令:

bundle config build.nokogiri --use-system-libraries


3
这是解决问题的最佳方法,能够提供更长久的解决方案。gem install nokogiri -v 1.6.6.2 -- --use-system-libraries - User128848244
1
是的,似乎 gem install nokogiri -v 1.6.6 -- --use-system-libraries 可以工作。 - 0x4a6f4672

20

很好,这是在尝试了上面所有方法后对我有效的。 - Jimmy Huch
哇,这是唯一对我有效的东西。感谢您分享这个(安迪在2017年就分享了!) - piratetone
太棒了!谢谢。 - Nuha

13

试试这个

sudo apt-get install build-essential patch ruby-dev zlib1g-dev liblzma-dev

然后安装Nokogiri

sudo gem install nokogiri

1
cha-ching!谢谢这个。在ubuntu 18.04上帮我解决了问题。 - WestCoastProjects
避免安装任何 Ruby 库。您应该使用 rvm,因此不需要安装 ruby-dev - aarona

10

我已经按照其他答案所说的做了一切,但仍需要再做一件事:

  1. 打开Xcode
  2. 点击“同意”
  3. 等待片刻,关闭Xcode
  4. 欣喜若狂

6

看起来这是由于nokogiri 1.6.2.1 特定的问题导致的。

我在我的Gemfile文件中添加了以下内容:

gem 'nokogiri', '~> 1.6', '>= 1.6.7'

运行bundle update nokogiri,然后运行bundle。所有东西现在都正常工作。


2

这可能是一些库的anaconda版本问题。

注:Original Answer翻译成“最初的回答”

$ conda deactivate
$ gem uninstall nokogiri
$ gem install nokogiri
$ conda activate base

worked for me.


1
我遇到过类似的问题。原因是 xcode 版本过旧。
如果你运行 brew doctor ,可能就会看到这个问题。只需打开 AppStore,进入 更新 选项卡,更新你的 xcode 即可。

brew doctor told me about newer Command Line Tools release and gave instructions on how to force update it. That solved the problem for me:sudo rm -rf /Library/Developer/CommandLineTools && sudo xcode-select --install - stacker-baka

1
如果以上方法都不起作用,尝试删除 Gemfile.lock 文件,并重新安装 gem 包。

1
你应该小心删除 Gemfile.lock。不仅会重新安装 gem 包。而且执行 bundle install 将更新这些 gem 包的版本。 - Christian Fazzini
删除 Gemfile.lock 文件后,按照Nokogiri官方网站的指示本地安装Nokogiri后,问题得到了解决。 - Angelo Charmant Igitego

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接