Install Nokogiri on Yosemite 10.10.3

左心房为你撑大大i 提交于 2019-12-23 13:02:33

问题


I have:

  • Mac OS X Yosemite 10.10.3
  • MacPorts (not Brew)
  • Ruby 2 in system (not RVM)

I want to install Nokogiri and tried:

port install nokogiri

and got:

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

    /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/bin/ruby -r
./siteconf20150323-30174-1mqhl4i.rb extconf.rb checking if the C
compiler accepts ... yes checking if the C compiler accepts
-Wno-error=unused-command-line-argument-hard-error-in-future... no Building nokogiri using packaged libraries. checking for gzdopen() in
-lz... yes checking for iconv... yes
************************************************************************ IMPORTANT NOTICE:

Building Nokogiri with a packaged version of libxml2-2.9.2 with the
following patches applied:
    - 0001-Revert-Missing-initialization-for-the-catalog-module.patch
    - 0002-Fix-missing-entities-after-CVE-2014-3660-fix.patch

Team Nokogiri will keep on doing their best to provide security
updates in a timely manner, but if this is a concern for you and want
to use the system library instead; abort this installation process and
reinstall nokogiri as follows:

    gem install nokogiri -- --use-system-libraries
        [--with-xml2-config=/path/to/xml2-config]
        [--with-xslt-config=/path/to/xslt-config]

If you are using Bundler, tell it to use the option:

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

Note, however, that nokogiri is not fully compatible with arbitrary
versions of libxml2 provided by OS/package vendors.
************************************************************************ Extracting libxml2-2.9.2.tar.gz into
tmp/x86_64-apple-darwin14/ports/libxml2/2.9.2... OK Running patch with
/Library/Ruby/Gems/2.0.0/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... OK Running patch with
/Library/Ruby/Gems/2.0.0/gems/nokogiri-1.6.6.2/ports/patches/libxml2/0002-Fix-missing-entities-after-CVE-2014-3660-fix.patch...
Running 'patch' for libxml2 2.9.2... OK Running 'configure' for
libxml2 2.9.2... OK Running 'compile' for libxml2 2.9.2... ERROR,
review
'/Library/Ruby/Gems/2.0.0/gems/nokogiri-1.6.6.2/ext/nokogiri/tmp/x86_64-apple-darwin14/ports/libxml2/2.9.2/compile.log'
to see what happened.
*** 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=/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/bin/ruby
    --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
/Library/Ruby/Gems/2.0.0/gems/mini_portile-0.6.2/lib/mini_portile.rb:279:in
`block in execute': Failed to complete compile task (RuntimeError)
    from
/Library/Ruby/Gems/2.0.0/gems/mini_portile-0.6.2/lib/mini_portile.rb:271:in
`chdir'     from
/Library/Ruby/Gems/2.0.0/gems/mini_portile-0.6.2/lib/mini_portile.rb:271:in
`execute'   from
/Library/Ruby/Gems/2.0.0/gems/mini_portile-0.6.2/lib/mini_portile.rb:70:in
`compile'   from
/Library/Ruby/Gems/2.0.0/gems/mini_portile-0.6.2/lib/mini_portile.rb:110:in
`cook'  from extconf.rb:278:in `block in process_recipe'    from
extconf.rb:177:in `tap'     from extconf.rb:177:in `process_recipe'     from
extconf.rb:475:in `<main>'

extconf failed, exit code 1

Gem files will remain installed in
/Library/Ruby/Gems/2.0.0/gems/nokogiri-1.6.6.2 for inspection. Results
logged to
/Library/Ruby/Gems/2.0.0/extensions/universal-darwin-14/2.0.0/nokogiri-1.6.6.2/gem_make.out

I tried:

gem install nokogiri -- --use-system-libraries

and got:

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

    /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/bin/ruby -r
./siteconf20150323-34882-16v74a8.rb 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... no Building nokogiri using system libraries. checking for xmlParseDoc()
in libxml/parser.h... no checking for xmlParseDoc() in -lxml2... no
checking for xmlParseDoc() in -llibxml2... no
----- libxml2 is missing.  Please locate mkmf.log to investigate how it is failing.
-----
*** 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=/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/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   --with-xml2lib
    --without-xml2lib   --with-libxml2lib   --without-libxml2lib

extconf failed, exit code 1

Gem files will remain installed in
/Library/Ruby/Gems/2.0.0/gems/nokogiri-1.6.6.2 for inspection. Results
logged to
/Library/Ruby/Gems/2.0.0/extensions/universal-darwin-14/2.0.0/nokogiri-1.6.6.2/gem_make.out

I tried:

port install libxml2

and got:

--->  Computing dependencies for libxml2
--->  Cleaning libxml2
--->  Scanning binaries for linking errors
--->  No broken files found.

What else I can do to install Nokogiri?


回答1:


Because MacPorts (and other similar package managers) install packages in non-standard locations, it cannot automatically determine the path to libxml2. The warning in your first attempt provided information on how to resolve this:

gem install nokogiri -- --use-system-libraries
     [--with-xml2-config=/path/to/xml2-config]
     [--with-xslt-config=/path/to/xslt-config]

You said that you tried gem install nokogiri -- --use-system-libraries. The Nokogiri documentation suggests that you need to add either of the following two options:

  • --with-xml2-config - Path to the xml2-config binary (try which xml2-config)
  • --with-xml2-dir - Path to the libxml2 base installation directory

If you’ve got libxml2 and/or libxslt installed in a nonstandard place (read as “not /opt/local, /usr/local, /usr or the standard Ruby directories”), you can use command-line parameters to the gem install command to grease the wheels.

gem install nokogiri -- \
--use-system-libraries \
--with-xml2-dir=/path/to/dir \
--with-xslt-dir=/path/to/dir

This page gives appropriate commands for various package managers, including MacPorts:

gem install nokogiri -- \
            --with-xml2-include=/opt/local/include/libxml2 \
            --with-xml2-lib=/opt/local/lib \
            --with-xslt-dir=/opt/local



回答2:


Check to see if Xcode is installed on your machine then run xcode-select --install in the terminal. This should do the trick and allow you to run sudo gem install rails



来源:https://stackoverflow.com/questions/29206849/install-nokogiri-on-yosemite-10-10-3

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!