title: gem install nokogiri -v '1.6.8.1' fails
body: <p>Building a new Rails app and getting a problem with nokogiri. Said to try <code>gem install nokogiri -v '1.6.8.1'</code> which fails with output below. I tried deleting Gemfile.lock and using the Gemfile from another app which has no problem—<code>bundle install</code> still fails. The original failure is <code>bundle install</code> which continues to work in other apps. </p>
  
  <p>From console:</p>
  
  <pre><code>gem install nokogiri -v '1.6.8.1'
  Building native extensions.  This could take a while...
  ERROR:  Error installing nokogiri:
      ERROR: Failed to build gem native extension.
  
      current directory: ~/.gem/ruby/2.3.1/gems/nokogiri-1.6.8.1/ext/nokogiri
  ~/.rubies/ruby-2.3.1/bin/ruby -r ./siteconf20161008-60071-tmqi2l.rb extconf.rb
  Ignoring byebug-6.0.2 because its extensions are not built.  Try: gem pristine byebug --version 6.0.2
  Ignoring byebug-3.4.0 because its extensions are not built.  Try: gem pristine byebug --version 3.4.0
  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.1.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.
  
  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.1.0/ports/libxml2/2.9.4... OK
  Running 'configure' for libxml2 2.9.4... OK
  Running 'compile' for libxml2 2.9.4... ERROR, review '~/.gem/ruby/2.3.1/gems/nokogiri-1.6.8.1/ext/nokogiri/tmp/x86_64-apple-darwin16.1.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=~/.rubies/ruby-2.3.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
  ~/.rubies/ruby-2.3.1/lib/ruby/gems/2.3.0/gems/mini_portile2-2.1.0/lib/mini_portile2/mini_portile.rb:366:in `block in execute': Failed to complete compile task (RuntimeError)
      from ~/.rubies/ruby-2.3.1/lib/ruby/gems/2.3.0/gems/mini_portile2-2.1.0/lib/mini_portile2/mini_portile.rb:337:in `chdir'
      from ~/.rubies/ruby-2.3.1/lib/ruby/gems/2.3.0/gems/mini_portile2-2.1.0/lib/mini_portile2/mini_portile.rb:337:in `execute'
      from ~/.rubies/ruby-2.3.1/lib/ruby/gems/2.3.0/gems/mini_portile2-2.1.0/lib/mini_portile2/mini_portile.rb:111:in `compile'
      from ~/.rubies/ruby-2.3.1/lib/ruby/gems/2.3.0/gems/mini_portile2-2.1.0/lib/mini_portile2/mini_portile.rb:150:in `cook'
      from extconf.rb:365:in `block (2 levels) in process_recipe'
      from extconf.rb:258:in `block in chdir_for_build'
      from extconf.rb:257:in `chdir'
      from extconf.rb:257:in `chdir_for_build'
      from extconf.rb:364:in `block in process_recipe'
      from extconf.rb:263:in `tap'
      from extconf.rb:263:in `process_recipe'
      from extconf.rb:556:in `&lt;main&gt;'
  
  To see why this extension failed to compile, please check the mkmf.log which can be found here:
  
    ~/.gem/ruby/2.3.1/extensions/x86_64-darwin-16/2.3.0-static/nokogiri-1.6.8.1/mkmf.log
  
  extconf failed, exit code 1
  
  Gem files will remain installed in ~/.gem/ruby/2.3.1/gems/nokogiri-1.6.8.1 for inspection.
  Results logged to ~/.gem/ruby/2.3.1/extensions/x86_64-darwin-16/2.3.0-static/nokogiri-1.6.8.1/gem_make.out
  </code></pre>
  
  <p>mkmf.log:</p>
  
  <pre><code>"clang -o conftest -I~/.rubies/ruby-2.3.1/include/ruby-2.3.0/x86_64-darwin16 -I~/.rubies/ruby-2.3.1/include/ruby-2.3.0/ruby/backward -I~/.rubies/ruby-2.3.1/include/ruby-2.3.0 -I.  -I/usr/local/opt/openssl/include -I/usr/local/opt/readline/include -I/usr/local/opt/libyaml/include -I/usr/local/opt/gdbm/include -D_XOPEN_SOURCE -D_DARWIN_C_SOURCE -D_DARWIN_UNLIMITED_SELECT -D_REENTRANT    -O3 -fno-fast-math -ggdb3 -Wall -Wextra -Wno-unused-parameter -Wno-parentheses -Wno-long-long -Wno-missing-field-initializers -Wunused-variable -Wpointer-arith -Wwrite-strings -Wdeclaration-after-statement -Wshorten-64-to-32 -Wimplicit-function-declaration -Wdivision-by-zero -Wdeprecated-declarations -Wextra-tokens  -pipe  conftest.c  -L. -L~/.rubies/ruby-2.3.1/lib -L/usr/local/opt/openssl/lib -L/usr/local/opt/readline/lib -L/usr/local/opt/libyaml/lib -L/usr/local/opt/gdbm/lib -L. -fstack-protector -L/usr/local/opt/openssl/lib -L/usr/local/opt/readline/lib -L/usr/local/opt/libyaml/lib -L/usr/local/opt/gdbm/lib     -lruby-static -framework CoreFoundation  -lpthread -ldl -lobjc  "
  checked program was:
  /* begin */
  1: #include "ruby.h"
  2: 
  3: int main(int argc, char **argv)
  4: {
  5:   return 0;
  6: }
  /* end */
  
  "clang -I~/.rubies/ruby-2.3.1/include/ruby-2.3.0/x86_64-darwin16 -I~/.rubies/ruby-2.3.1/include/ruby-2.3.0/ruby/backward -I~/.rubies/ruby-2.3.1/include/ruby-2.3.0 -I.  -I/usr/local/opt/openssl/include -I/usr/local/opt/readline/include -I/usr/local/opt/libyaml/include -I/usr/local/opt/gdbm/include -D_XOPEN_SOURCE -D_DARWIN_C_SOURCE -D_DARWIN_UNLIMITED_SELECT -D_REENTRANT    -O3 -fno-fast-math -ggdb3 -Wall -Wextra -Wno-unused-parameter -Wno-parentheses -Wno-long-long -Wno-missing-field-initializers -Wunused-variable -Wpointer-arith -Wwrite-strings -Wdeclaration-after-statement -Wshorten-64-to-32 -Wimplicit-function-declaration -Wdivision-by-zero -Wdeprecated-declarations -Wextra-tokens  -pipe    -Werror -c conftest.c"
  checked program was:
  /* begin */
  1: #include "ruby.h"
  2: 
  3: int main() {return 0;}
  /* end */
  
  "clang -I~/.rubies/ruby-2.3.1/include/ruby-2.3.0/x86_64-darwin16 -I~/.rubies/ruby-2.3.1/include/ruby-2.3.0/ruby/backward -I~/.rubies/ruby-2.3.1/include/ruby-2.3.0 -I.  -I/usr/local/opt/openssl/include -I/usr/local/opt/readline/include -I/usr/local/opt/libyaml/include -I/usr/local/opt/gdbm/include -D_XOPEN_SOURCE -D_DARWIN_C_SOURCE -D_DARWIN_UNLIMITED_SELECT -D_REENTRANT    -O3 -fno-fast-math -ggdb3 -Wall -Wextra -Wno-unused-parameter -Wno-parentheses -Wno-long-long -Wno-missing-field-initializers -Wunused-variable -Wpointer-arith -Wwrite-strings -Wdeclaration-after-statement -Wshorten-64-to-32 -Wimplicit-function-declaration -Wdivision-by-zero -Wdeprecated-declarations -Wextra-tokens  -pipe  -Wno-error=unused-command-line-argument-hard-error-in-future   -Werror -c conftest.c"
  error: unknown warning option '-Werror=unused-command-line-argument-hard-error-in-future'; did you mean '-Werror=unused-command-line-argument'? [-Werror,-Wunknown-warning-option]
  checked program was:
  /* begin */
  1: #include "ruby.h"
  2: 
  3: int main() {return 0;}
  /* end */
  
  have_header: checking for iconv.h... -------------------- yes
  
  "clang -E -I~/.rubies/ruby-2.3.1/include/ruby-2.3.0/x86_64-darwin16 -I~/.rubies/ruby-2.3.1/include/ruby-2.3.0/ruby/backward -I~/.rubies/ruby-2.3.1/include/ruby-2.3.0 -I.  -I/usr/local/opt/openssl/include -I/usr/local/opt/readline/include -I/usr/local/opt/libyaml/include -I/usr/local/opt/gdbm/include -D_XOPEN_SOURCE -D_DARWIN_C_SOURCE -D_DARWIN_UNLIMITED_SELECT -D_REENTRANT    -O3 -fno-fast-math -ggdb3 -Wall -Wextra -Wno-unused-parameter -Wno-parentheses -Wno-long-long -Wno-missing-field-initializers -Wunused-variable -Wpointer-arith -Wwrite-strings -Wdeclaration-after-statement -Wshorten-64-to-32 -Wimplicit-function-declaration -Wdivision-by-zero -Wdeprecated-declarations -Wextra-tokens  -pipe   conftest.c -o conftest.i"
  checked program was:
  /* begin */
  1: #include "ruby.h"
  2: 
  3: #include &lt;iconv.h&gt;
  /* end */
  
  --------------------
  
  have_library: checking for gzdopen() in -lz... -------------------- yes
  
  "clang -o conftest -I~/.rubies/ruby-2.3.1/include/ruby-2.3.0/x86_64-darwin16 -I~/.rubies/ruby-2.3.1/include/ruby-2.3.0/ruby/backward -I~/.rubies/ruby-2.3.1/include/ruby-2.3.0 -I.  -I/usr/local/opt/openssl/include -I/usr/local/opt/readline/include -I/usr/local/opt/libyaml/include -I/usr/local/opt/gdbm/include -D_XOPEN_SOURCE -D_DARWIN_C_SOURCE -D_DARWIN_UNLIMITED_SELECT -D_REENTRANT    -O3 -fno-fast-math -ggdb3 -Wall -Wextra -Wno-unused-parameter -Wno-parentheses -Wno-long-long -Wno-missing-field-initializers -Wunused-variable -Wpointer-arith -Wwrite-strings -Wdeclaration-after-statement -Wshorten-64-to-32 -Wimplicit-function-declaration -Wdivision-by-zero -Wdeprecated-declarations -Wextra-tokens  -pipe  conftest.c  -L. -L~/.rubies/ruby-2.3.1/lib -L/usr/local/opt/openssl/lib -L/usr/local/opt/readline/lib -L/usr/local/opt/libyaml/lib -L/usr/local/opt/gdbm/lib -L. -fstack-protector -L/usr/local/opt/openssl/lib -L/usr/local/opt/readline/lib -L/usr/local/opt/libyaml/lib -L/usr/local/opt/gdbm/lib     -lruby-static -framework CoreFoundation -lz  -lpthread -ldl -lobjc  "
  checked program was:
  /* begin */
   1: #include "ruby.h"
   2: 
   3: #include &lt;zlib.h&gt;
   4: 
   5: /*top*/
   6: extern int t(void);
   7: int main(int argc, char **argv)
   8: {
   9:   if (argc &gt; 1000000) {
  10:     printf("%p", &amp;t);
  11:   }
  12: 
  13:   return 0;
  14: }
  15: int t(void) { void ((*volatile p)()); p = (void ((*)()))gzdopen; return !p; }
  /* end */
  
  --------------------
  
  have_iconv?: checking for iconv using --with-opt-* flags... -------------------- yes
  
  "clang -o conftest -I~/.rubies/ruby-2.3.1/include/ruby-2.3.0/x86_64-darwin16 -I~/.rubies/ruby-2.3.1/include/ruby-2.3.0/ruby/backward -I~/.rubies/ruby-2.3.1/include/ruby-2.3.0 -I.  -I/usr/local/opt/openssl/include -I/usr/local/opt/readline/include -I/usr/local/opt/libyaml/include -I/usr/local/opt/gdbm/include -D_XOPEN_SOURCE -D_DARWIN_C_SOURCE -D_DARWIN_UNLIMITED_SELECT -D_REENTRANT    -O3 -fno-fast-math -ggdb3 -Wall -Wextra -Wno-unused-parameter -Wno-parentheses -Wno-long-long -Wno-missing-field-initializers -Wunused-variable -Wpointer-arith -Wwrite-strings -Wdeclaration-after-statement -Wshorten-64-to-32 -Wimplicit-function-declaration -Wdivision-by-zero -Wdeprecated-declarations -Wextra-tokens  -pipe  conftest.c  -L. -L~/.rubies/ruby-2.3.1/lib -L/usr/local/opt/openssl/lib -L/usr/local/opt/readline/lib -L/usr/local/opt/libyaml/lib -L/usr/local/opt/gdbm/lib -L. -fstack-protector -L/usr/local/opt/openssl/lib -L/usr/local/opt/readline/lib -L/usr/local/opt/libyaml/lib -L/usr/local/opt/gdbm/lib     -lruby-static -framework CoreFoundation  -lpthread -ldl -lobjc  "
  Undefined symbols for architecture x86_64:
    "_iconv", referenced from:
        _main in conftest-d46614.o
    "_iconv_open", referenced from:
        _main in conftest-d46614.o
  ld: symbol(s) not found for architecture x86_64
  clang: error: linker command failed with exit code 1 (use -v to see invocation)
  checked program was:
  /* begin */
   1: #include "ruby.h"
   2: 
   3: #include &lt;stdlib.h&gt;
   4: #include &lt;iconv.h&gt;
   5: 
   6: int main(void)
   7: {
   8:     iconv_t cd = iconv_open("", "");
   9:     iconv(cd, NULL, NULL, NULL, NULL);
  10:     return EXIT_SUCCESS;
  11: }
  /* end */
  
  "clang -o conftest -I~/.rubies/ruby-2.3.1/include/ruby-2.3.0/x86_64-darwin16 -I~/.rubies/ruby-2.3.1/include/ruby-2.3.0/ruby/backward -I~/.rubies/ruby-2.3.1/include/ruby-2.3.0 -I.  -I/usr/local/opt/openssl/include -I/usr/local/opt/readline/include -I/usr/local/opt/libyaml/include -I/usr/local/opt/gdbm/include -D_XOPEN_SOURCE -D_DARWIN_C_SOURCE -D_DARWIN_UNLIMITED_SELECT -D_REENTRANT    -O3 -fno-fast-math -ggdb3 -Wall -Wextra -Wno-unused-parameter -Wno-parentheses -Wno-long-long -Wno-missing-field-initializers -Wunused-variable -Wpointer-arith -Wwrite-strings -Wdeclaration-after-statement -Wshorten-64-to-32 -Wimplicit-function-declaration -Wdivision-by-zero -Wdeprecated-declarations -Wextra-tokens  -pipe  conftest.c  -L. -L~/.rubies/ruby-2.3.1/lib -L/usr/local/opt/openssl/lib -L/usr/local/opt/readline/lib -L/usr/local/opt/libyaml/lib -L/usr/local/opt/gdbm/lib -L. -fstack-protector -L/usr/local/opt/openssl/lib -L/usr/local/opt/readline/lib -L/usr/local/opt/libyaml/lib -L/usr/local/opt/gdbm/lib     -lruby-static -framework CoreFoundation -liconv -lpthread -ldl -lobjc  "
  checked program was:
  /* begin */
   1: #include "ruby.h"
   2: 
   3: #include &lt;stdlib.h&gt;
   4: #include &lt;iconv.h&gt;
   5: 
   6: int main(void)
   7: {
   8:     iconv_t cd = iconv_open("", "");
   9:     iconv(cd, NULL, NULL, NULL, NULL);
  10:     return EXIT_SUCCESS;
  11: }
  /* end */
  
  --------------------
  </code></pre>
  
  <p>gem_make.out:</p>
  
  <pre><code>current directory: ~/.gem/ruby/2.3.1/gems/nokogiri-1.6.8.1/ext/nokogiri
  ~/.rubies/ruby-2.3.1/bin/ruby -r ./siteconf20161008-60071-tmqi2l.rb extconf.rb
  Ignoring byebug-6.0.2 because its extensions are not built.  Try: gem pristine byebug --version 6.0.2
  Ignoring byebug-3.4.0 because its extensions are not built.  Try: gem pristine byebug --version 3.4.0
  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.1.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.
  
  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.1.0/ports/libxml2/2.9.4... OK
  Running 'configure' for libxml2 2.9.4... OK
  Running 'compile' for libxml2 2.9.4... ERROR, review '~/.gem/ruby/2.3.1/gems/nokogiri-1.6.8.1/ext/nokogiri/tmp/x86_64-apple-darwin16.1.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=~/.rubies/ruby-2.3.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
  ~/.rubies/ruby-2.3.1/lib/ruby/gems/2.3.0/gems/mini_portile2-2.1.0/lib/mini_portile2/mini_portile.rb:366:in `block in execute': Failed to complete compile task (RuntimeError)
      from ~/.rubies/ruby-2.3.1/lib/ruby/gems/2.3.0/gems/mini_portile2-2.1.0/lib/mini_portile2/mini_portile.rb:337:in `chdir'
      from ~/.rubies/ruby-2.3.1/lib/ruby/gems/2.3.0/gems/mini_portile2-2.1.0/lib/mini_portile2/mini_portile.rb:337:in `execute'
      from ~/.rubies/ruby-2.3.1/lib/ruby/gems/2.3.0/gems/mini_portile2-2.1.0/lib/mini_portile2/mini_portile.rb:111:in `compile'
      from ~/.rubies/ruby-2.3.1/lib/ruby/gems/2.3.0/gems/mini_portile2-2.1.0/lib/mini_portile2/mini_portile.rb:150:in `cook'
      from extconf.rb:365:in `block (2 levels) in process_recipe'
      from extconf.rb:258:in `block in chdir_for_build'
      from extconf.rb:257:in `chdir'
      from extconf.rb:257:in `chdir_for_build'
      from extconf.rb:364:in `block in process_recipe'
      from extconf.rb:263:in `tap'
      from extconf.rb:263:in `process_recipe'
      from extconf.rb:556:in `&lt;main&gt;'
  
  To see why this extension failed to compile, please check the mkmf.log which can be found here:
  
    ~/.gem/ruby/2.3.1/extensions/x86_64-darwin-16/2.3.0-static/nokogiri-1.6.8.1/mkmf.log
  
  extconf failed, exit code 1
  </code></pre>