【问题标题】:Error installing nokogiri: Failed to build gem native extension & libiconv is missing (OSX)安装 nokogiri 时出错:无法构建 gem 原生扩展 & libiconv 丢失 (OSX)
【发布时间】:2016-03-03 23:11:15
【问题描述】:

我尝试克隆this repo 并运行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

我尝试关注this answer,但仍然遇到上述相同的错误。

我也尝试再次卸载并安装我的 brew (based on this answer),但还是一样。

另外,我尝试this solution,但仍然收到错误。

我现在应该怎么做才能确保成功安装这个 nokogiri gem?

注意:我使用的是 OSX 10.11.1 El Capitan。

【问题讨论】:

  • 你已经安装了xcode 吗?命令 xcode-select --install 的输出是什么?你也检查nokogiri OSX installation instruction吗?
  • 是的,我已经安装了 xcode 并运行 xcode-select --install。 xcode 开发者工具安装成功。
  • 是什么让大家知道xcode涉及的错误?
  • @JeremyThomas 我也想知道。

标签: ruby-on-rails ruby nokogiri homebrew osx-yosemite


【解决方案1】:

似乎这是由于 nokogiri 1.6.2.1 特定问题。

我在我的 Gemfile 中添加了这个:

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

然后运行bundle update nokogiri,然后运行bundle。现在一切正常。

【讨论】:

    【解决方案2】:

    删除 rbenv gem 文件夹中的 nokogiri 并重新安装为我解决了它。

    【讨论】:

      【解决方案3】:

      bundle install使用 ruby​​ 2.3 进行代码传送时,我遇到了与 1.6.7.2 类似的问题。

      对我有用的是添加:

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

      之前

      bundle install

      【讨论】:

      • 这是在更持久的解决方案中解决问题的最佳方法。 gem install nokogiri -v 1.6.6.2 -- --use-system-libraries
      • 是的,gem install nokogiri -v 1.6.6 -- --use-system-libraries 似乎有效
      【解决方案4】:

      运行这些命令:

      gem uninstall nokogiri
      xcode-select --install
      gem install nokogiri
      

      来源:http://www.nokogiri.org/tutorials/installing_nokogiri.html#mac_os_x

      有时 mac 更新可能会破坏 xcode CLI,因此重新安装可以解决问题: https://github.com/sparklemotion/nokogiri/issues/1445

      【讨论】:

      • 你是最棒的!谢谢你!
      • 谢谢。在xcode-select --install 被允许运行之前,我实际上必须将我的 MacOS 版本更新到 Catalina!
      【解决方案5】:

      我在其他答案中做了所有事情,但还必须做一件事:

      1. 打开 Xcode
      2. 点击“同意”
      3. 稍等,关闭 Xcode
      4. 欢喜

      【讨论】:

        【解决方案6】:

        对我有用(在 ma​​cOS Sierra 上)是 Sam's answer 和以下内容的组合:

        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
        

        【讨论】:

        • 这对我尝试安装 nokogiri -v 1.8.0 有用
        • 我用同样的东西来安装rails,它成功了!谢谢。
        • 这对我有用,只需确保确认文件夹,因为我的是 /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.13.sdk/ usr/include/libxml2
        【解决方案7】:

        如果您使用的是捆绑包:

        brew install libxml2
        
        # If using Bundle
        bundle config build.nokogiri --use-system-libraries \
          --with-xml2-include=$(brew --prefix libxml2)/include/libxml2
        bundle install
        

        来自http://www.nokogiri.org/tutorials/installing_nokogiri.html

        【讨论】:

        • 太好了,在尝试了上述所有操作后,这对我在 High Sierra 上有效。
        • 哇。这是唯一对我有用的东西。感谢您分享这个安迪(一直到 2017 年!)
        • 太棒了!谢谢。
        【解决方案8】:

        我有类似的问题。原因已过时xcode

        如果您运行brew doctor,您可能会看到它。只需打开AppStore,进入updates 选项卡并更新您的xcode。

        【讨论】:

        • brew doctor 向我介绍了较新的命令行工具版本,并提供了有关如何强制更新它的说明。这为我解决了问题:sudo rm -rf /Library/Developer/CommandLineTools && sudo xcode-select --install
        【解决方案9】:

        Spencer's 答案对我有用,但我还需要使用 -n 参数来克服记录在 here. 的权限问题

        所以最后,对我有用的命令是:

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

        【讨论】:

        • 永远不要将 gems 安装为 sudo
        【解决方案10】:

        我在更新到 xcode 10 时遇到了同样的问题。我通过以下步骤解决了这个问题:

        1. xcode-select --install
        2. 捆绑安装--部署
        3. gem install nokogiri

        【讨论】:

          【解决方案11】:

          如果以上都不起作用, 尝试删除Gemfile.lock,然后重新安装gem。

          【讨论】:

          • 你应该小心删除Gemfile.lock。您不仅会重新安装 gems。但是执行bundle install 会更新那些gem 的版本
          • 删除 Gemfile.lock 文件帮助我在按照 Nokogiri official website 上的说明本地安装 Nokogiri 后解决了这个问题
          【解决方案12】:

          这帮我解决了这个问题

          • 我重新安装了 Xcode 并将 xcode-select 指向它的路径
          sudo xcode-select -s /Applications/Xcode.app/Contents/Developer
          

          参考: https://stackoverflow.com/a/17980786/3861525

          【讨论】:

            【解决方案13】:

            试试这个

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

            然后安装 Nokogiri

            sudo gem install nokogiri
            

            【讨论】:

            • 恰清!谢谢。让我在ubuntu 18.04上度过难关
            • 避免安装任何 ruby​​ 库。您应该使用rvm,因此不需要安装ruby-dev
            【解决方案14】:

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

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

            为我工作。

            【讨论】:

              【解决方案15】:

              Github Answer

              sudo installer -pkg /Library/Developer/CommandLineTools/Packages/macOS_SDK_headers_for_macOS_10.14.pkg -target /
              
              bundle install
              

              【讨论】:

                猜你喜欢
                • 1970-01-01
                • 2014-08-18
                • 1970-01-01
                • 2012-03-13
                • 1970-01-01
                • 2011-04-06
                • 2015-04-11
                • 2016-01-11
                • 2013-04-08
                相关资源
                最近更新 更多