2017-07-16 48 views
0

我试图使用安装在我的系统上的Rails:如何卸载引入nokogiri

gem install rails 

但我得到这个错误:

Sams-MacBook-Pro-2:/ sammy$ gem install rails 
Building native extensions. This could take a while... 
ERROR: Error installing rails: 
    ERROR: Failed to build gem native extension. 

    current directory: /Users/sammy/.rvm/gems/ruby-2.4.1/gems/nokogiri-1.8.0/ext/nokogiri 
/Users/sammy/.rvm/rubies/ruby-2.4.1/bin/ruby -r ./siteconf20170716-20185-7bepnp.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. 
Using mini_portile version 2.2.0 
checking for iconv.h... yes 
checking for gzdopen() in -lz... yes 
checking for iconv using --with-opt-* flags... yes 
************************************************************************ 
IMPORTANT NOTICE: 

Building Nokogiri with a packaged version of libxml2-2.9.4 
with the following patches applied: 
    - 0001-Fix-comparison-with-root-node-in-xmlXPathCmpNodes.patch 
    - 0002-Fix-XPointer-paths-beginning-with-range-to.patch 
    - 0003-Disallow-namespace-nodes-in-XPointer-ranges.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.4.tar.gz into tmp/x86_64-apple-darwin16.0.0/ports/libxml2/2.9.4... OK 
Running git apply with /Users/sammy/.rvm/gems/ruby-2.4.1/gems/nokogiri-1.8.0/patches/libxml2/0001-Fix-comparison-with-root-node-in-xmlXPathCmpNodes.patch... OK 
Running git apply with /Users/sammy/.rvm/gems/ruby-2.4.1/gems/nokogiri-1.8.0/patches/libxml2/0002-Fix-XPointer-paths-beginning-with-range-to.patch... OK 
Running git apply with /Users/sammy/.rvm/gems/ruby-2.4.1/gems/nokogiri-1.8.0/patches/libxml2/0003-Disallow-namespace-nodes-in-XPointer-ranges.patch... OK 
Running 'configure' for libxml2 2.9.4... OK 
Running 'compile' for libxml2 2.9.4... ERROR, review '/Users/sammy/.rvm/gems/ruby-2.4.1/gems/nokogiri-1.8.0/ext/nokogiri/tmp/x86_64-apple-darwin16.0.0/ports/libxml2/2.9.4/compile.log' to see what happened. Last lines are: 
======================================================================== 
    unsigned short* in = (unsigned short*) inb; 
         ^~~~~~~~~~~~~~~~~~~~~ 
encoding.c:815:27: warning: cast from 'unsigned char *' to 'unsigned short *' increases required alignment from 1 to 2 [-Wcast-align] 
    unsigned short* out = (unsigned short*) outb; 
          ^~~~~~~~~~~~~~~~~~~~~~ 
4 warnings generated. 
    CC  error.lo 
    CC  parserInternals.lo 
    CC  parser.lo 
    CC  tree.lo 
    CC  hash.lo 
    CC  list.lo 
    CC  xmlIO.lo 
xmlIO.c:1450:52: error: use of undeclared identifier 'LZMA_OK' 
    ret = (__libxml2_xzclose((xzFile) context) == LZMA_OK) ? 0 : -1; 
               ^
1 error generated. 
make[2]: *** [xmlIO.lo] Error 1 
make[1]: *** [all-recursive] Error 1 
make: *** [all] Error 2 
======================================================================== 
*** 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 
    --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/sammy/.rvm/rubies/ruby-2.4.1/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 
/Users/sammy/.rvm/rubies/ruby-2.4.1/lib/ruby/gems/2.4.0/gems/mini_portile2-2.2.0/lib/mini_portile2/mini_portile.rb:400:in `block in execute': Failed to complete compile task (RuntimeError) 
    from /Users/sammy/.rvm/rubies/ruby-2.4.1/lib/ruby/gems/2.4.0/gems/mini_portile2-2.2.0/lib/mini_portile2/mini_portile.rb:371:in `chdir' 
    from /Users/sammy/.rvm/rubies/ruby-2.4.1/lib/ruby/gems/2.4.0/gems/mini_portile2-2.2.0/lib/mini_portile2/mini_portile.rb:371:in `execute' 
    from /Users/sammy/.rvm/rubies/ruby-2.4.1/lib/ruby/gems/2.4.0/gems/mini_portile2-2.2.0/lib/mini_portile2/mini_portile.rb:114:in `compile' 
    from /Users/sammy/.rvm/rubies/ruby-2.4.1/lib/ruby/gems/2.4.0/gems/mini_portile2-2.2.0/lib/mini_portile2/mini_portile.rb:153:in `cook' 
    from extconf.rb:365:in `block (2 levels) in process_recipe' 
    from extconf.rb:257:in `block in chdir_for_build' 
    from extconf.rb:256:in `chdir' 
    from extconf.rb:256:in `chdir_for_build' 
    from extconf.rb:364:in `block in process_recipe' 
    from extconf.rb:262:in `tap' 
    from extconf.rb:262:in `process_recipe' 
    from extconf.rb:548:in `<main>' 

To see why this extension failed to compile, please check the mkmf.log which can be found here: 

    /Users/sammy/.rvm/gems/ruby-2.4.1/extensions/x86_64-darwin-16/2.4.0/nokogiri-1.8.0/mkmf.log 

extconf failed, exit code 1 

Gem files will remain installed in /Users/sammy/.rvm/gems/ruby-2.4.1/gems/nokogiri-1.8.0 for inspection. 
Results logged to /Users/sammy/.rvm/gems/ruby-2.4.1/extensions/x86_64-darwin-16/2.4.0/nokogiri-1.8.0/gem_make.out 

我试着使用卸载引入nokogiri:

gem uninstall nokogiri 

然后重新运行:

gem install rails 

但我得到了同样的错误。

我甚至试图找到并删除每个有“nokogiri”的目录,然后重新命令,得到相同的错误。

为什么Nokogiri不会离开?

+0

引入nokogiri由Rails的最近版本要求 - 几个组件宝石(如'actionpack'和'actionview')需要'rails-dom-testing',这又需要Nokogiri。所以你需要安装Nokogiri或者使用老版本的Rails。 – Max

回答

0

你的问题不在于卸载Nokogiri,而是在安装它。 Rails需要Nokogiri才能工作,但是您的系统可能缺少所需的库,并且会阻止安装nokogiri。您的系统上可能还安装了不稳定的库,导致扩展编译失败。

我根据你的错误日志做了一个快速搜索,发现这个问题:https://github.com/sparklemotion/nokogiri/issues/1483,但是,它可能会也可能不是你遇到的同一个问题,但它值得一检查。

解决此问题的方法是卸载xz软件包。

brew uninstall xz 
0

请仔细阅读引入nokogiri安装教程,其中明确解决您报告的问题:

tutorials