【问题标题】:Failing to install Nokogiri gem无法安装 Nokogiri gem
【发布时间】:2015-02-14 06:49:08
【问题描述】:

我正在开发一个允许为每个使用帐户添加图像附件的 Rails 应用程序。我正在使用回形针和亚马逊网络服务:

gem 'paperclip'
gem 'aws-sdk'

当我运行捆绑安装时,我收到以下消息:

extconf 失败,退出代码 1

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

当我尝试运行“gem install nokogiri”时,我收到以下消息:

extconf 失败,退出代码 1

Gem files will remain installed in /usr/local/rvm/gems/ruby-2.1.2/gems/nokogiri-1.6.5 for inspection.
Results logged to /usr/local/rvm/gems/ruby-2.1.2/extensions/x86_64-darwin-13/2.1.0-static/nokogiri-1.6.5/gem_make.out

我的操作系统是 Mac OS X 10.9.4 Mavericks。 这是怎么回事?如何让 nokogiri 安装并正常运行?

完整的堆栈跟踪

Building native extensions with: '--use-system-libraries'
This could take a while...
ERROR:  Error installing nokogiri:
    ERROR: Failed to build gem native extension.

    /usr/local/rvm/rubies/ruby-2.1.2/bin/ruby extconf.rb --use-system-libraries
checking if the C compiler accepts ... yes
checking if the C compiler accepts -Wno-error=unused-command-line-argument-hard-error-in-future... yes
Building nokogiri using system libraries.
libxml2 version 2.6.21 or later is required!
*** 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=/usr/local/rvm/rubies/ruby-2.1.2/bin/ruby
    --help
    --clean
    --use-system-libraries
    --with-zlib-dir
    --without-zlib-dir
    --with-zlib-include
    --without-zlib-include=${zlib-dir}/include
    --with-zlib-lib
    --without-zlib-lib=${zlib-dir}/lib
    --with-xml2-dir
    --without-xml2-dir
    --with-xml2-include
    --without-xml2-include=${xml2-dir}/include
    --with-xml2-lib
    --without-xml2-lib=${xml2-dir}/lib
    --with-libxml-2.0-config
    --without-libxml-2.0-config
    --with-pkg-config
    --without-pkg-config
    --with-xslt-dir
    --without-xslt-dir
    --with-xslt-include
    --without-xslt-include=${xslt-dir}/include
    --with-xslt-lib
    --without-xslt-lib=${xslt-dir}/lib
    --with-libxslt-config
    --without-libxslt-config
    --with-exslt-dir
    --without-exslt-dir
    --with-exslt-include
    --without-exslt-include=${exslt-dir}/include
    --with-exslt-lib
    --without-exslt-lib=${exslt-dir}/lib
    --with-libexslt-config
    --without-libexslt-config

extconf failed, exit code 1

Gem files will remain installed in /usr/local/rvm/gems/ruby-2.1.2/gems/nokogiri-1.6.5 for inspection.
Results logged to /usr/local/rvm/gems/ruby-2.1.2/extensions/x86_64-darwin-13/2.1.0-static/nokogiri-1.6.5/gem_make.out

【问题讨论】:

    标签: ruby-on-rails ruby rvm paperclip nokogiri


    【解决方案1】:

    我今天早些时候遇到了同样的问题。我已经更新了我的 xcode 并没有 同意条款呢。运行 sudo xcodebuild -license 并同意 让我的包再次工作。

    【讨论】:

      【解决方案2】:

      按照nokogiri安装说明安装,

      sudo apt-get install zlib1g-dev

      为我解决了这个问题。

      【讨论】:

      • zlib1g-dev is already the newest version. 0 upgraded, 0 newly installed, 0 to remove and 8 not upgraded.
      • 在 Ubuntu 16.04 上也为我工作。
      【解决方案3】:

      取自dylanjhunt's awesome answer on Github,以防万一有人没有尝试过,

      补充一点,我遇到了一个非常相似的问题 通过更新开发工具解决。

      xcode-select --install

      希望有人看到这个还没有尝试过这样做 有帮助。

      【讨论】:

        【解决方案4】:

        在 Ubuntu 上,尝试安装以下依赖项:

        sudo apt-get install gcc ruby-dev libxslt-dev libxml2-dev zlib1g-dev
        

        【讨论】:

          【解决方案5】:

          我通过安装 Nokogiri 需要安装的 xcode 依赖项解决了这个问题:

          xcode-select --install
          

          之后再次运行 bundle install ,它应该可以工作了。

          【讨论】:

            【解决方案6】:

            先安装gcc

            在 *buntu 中: apt-get 安装 gcc

            之后你可能会请求大多数开发库,例如 libxml2/zlib/等 查看构建日志(在我的情况下为路径): /var/lib/gems/2.3.0/extensions/x86_64-linux/2.3.0/nokogiri-1.6.8.1/mkmf.log 对于类似字符串 - 致命错误:zlib.h:没有这样的文件或目录

            【讨论】:

              【解决方案7】:

              我没有收到与您相同的错误消息,但我想指出我最终发现的在 Ubuntu 上安装 nokogiri 的非常简单的解决方案

              原来 nokogiri 构建过程依赖于patch

              运行:sudo apt-get install patch

              我正在开发一个虚拟机(实际上是一个 vagrant box),这就是为什么我还没有安装 patch

              我得到的错误(在很多其他看起来像错误但实际上只是警告的东西之后)是:

              Extracting libxml2-2.9.2.tar.gz into tmp/x86_64-pc-linux-gnu/ports/libxml2/2.9.2... OK
              Running patch with /var/lib/gems/1.9.1/gems/nokogiri-1.6.6.2/ports/patches/libxml2/0001-Revert-Missing-initialization-for-the-catalog-module.patch...
              Running 'patch' for libxml2 2.9.2... ERROR, review '/var/lib/gems/1.9.1/gems/nokogiri-1.6.6.2/ext/nokogiri/tmp/x86_64-pc-linux-gnu/ports/libxml2/2.9.2/patch.log' to see what happened.
              

              我现在已经删除了日志(上面是在我的终端会话中),但是上面引用的patch.log 文件非常简单;它只是说类似patch not found

              男孩,我为安装库试图修复它而进行的所有挖掘工作感到很傻! :)

              【讨论】:

                【解决方案8】:

                在 Ubuntu 14.04(我正在使用 RVM)上升级到 Rails 4.2.4(包括 Nokogiri 1.6.6.2)后,我需要这样做:

                sudo apt-get install libgmp-dev
                

                sudo apt-get install libgmp3-dev
                

                【讨论】:

                • 我很努力地安装了几乎所有的库 10 次。最后“libgmp3-dev”为我工作。谢谢。
                【解决方案9】:

                执行此操作的包:

                apt-get install libghc-zlib-dev
                

                其他可能的候选人:

                zlib1g-dev 12.04

                找到它here

                【讨论】:

                  【解决方案10】:

                  由于 OP 引用了我碰巧使用的 bundle install,我认为值得指出的是 Installing Nokogiri 页面,它最终揭示了最优雅的解决方案(在 Mac OS X 10.8.5 上也适用于我):

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

                  这指示捆绑器安装 nokogiri,就像@kasperite 的答案一样

                  【讨论】:

                    【解决方案11】:

                    这就像一个魅力!

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

                    https://stackoverflow.com/a/24511149

                    【讨论】:

                    • @CarySwoveland 嘿,卡里!对不起,我删除了这个问题,因为它被标记为已关闭。你的回答很漂亮!它就像一个魅力!非常感谢你! :)
                    • 很高兴能帮上忙,凯蒂。 (我也会删除这条评论。)
                    • 可爱!!像魅力一样工作
                    • 它起作用了,但只有在我更新了 libxml2 的路径之后(供未来用户使用)
                    【解决方案12】:

                    您是否尝试过gem install nokogiri -v 1.6.5 -- --use-system-libraries?大多数 nokogiri 错误与 libxml2、libxslt 或 libiconv 配置有关。

                    Nokogiri docs 应该会给你更多指示。如果解决方案不起作用,您可能需要发布完整的堆栈跟踪,以便其他人可以提供更多帮助。

                    【讨论】:

                    • 对,你需要安装libxml2 :),先运行brew install libxml2,然后再试一次。如果您在使用 libxslt 和 libiconv 时遇到错误,请执行相同操作
                    • 谢谢,我试过了,但没用,它一直告诉我 libxml2 已经安装,请看我的回答
                    • 非常感谢您对此进行调查! :))
                    • 在下面查看我的答案——我没有在任何地方找到它的文档,但这是在 Debian/Ubuntu 上安装 nokogiri 的最简单方法。
                    • 谢谢。这对我有用。我在 WSL 上使用 ubuntu
                    猜你喜欢
                    • 2016-02-03
                    • 1970-01-01
                    • 2021-06-12
                    • 2014-10-18
                    • 2014-06-17
                    • 1970-01-01
                    • 1970-01-01
                    • 1970-01-01
                    • 1970-01-01
                    相关资源
                    最近更新 更多