无法在mac上安装nokogiri gem(libxml2)

时间:2017-09-26 14:45:15

标签: ruby macos homebrew nokogiri libxml2

我试图安装nokogiri宝石,但它说:

libxml2 is missing.  Please locate mkmf.log to investigate how it is failing.

当我尝试使用brew安装libxml2时,它会说:

Warning: libxml2 2.9.5 is already installed

早些时候,它说它正在安装一个仅限keg的版本,因为macOS已经有了一个版本的libxml2。

因此,gem无法找到libxml2的任何副本,但brew找到2?

如何告诉gem在哪里找到libxml2?

看着mkmf.log,我看到它似乎不知道iconv?

have_iconv?: checking for iconv using --with-opt-* flags... -------------------
- yes

"gcc -o conftest -I/Users/brianp/.rvm/rubies/ruby-2.1.10/include/ruby-2.1.0/x86_64-darwin16.0 -I/Users/brianp/.rvm/rubies/ruby-2.1.10/include/ruby-2.1.0/ruby/backward -I/Users/brianp/.rvm/rubies/ruby-2.1.10/include/ruby-2.1.0 -I.  -I/usr/local/opt/libyaml/include -I/usr/local/opt/readline/include -I/usr/local/opt/libksba/include -I/usr/local/opt/openssl/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 -Wextra-tokens  -fno-common -pipe  -O3 -Wall -Wcast-qual -Wwrite-strings -Wconversion -Wmissing-noreturn -Winline conftest.c  -L. -L/Users/brianp/.rvm/rubies/ruby-2.1.10/lib -L/usr/local/opt/libyaml/lib -L/usr/local/opt/readline/lib -L/usr/local/opt/libksba/lib -L/usr/local/opt/openssl/lib -L. -fstack-protector -L/usr/local/opt/libyaml/lib -L/usr/local/opt/readline/lib -L/usr/local/opt/libksba/lib -L/usr/local/opt/openssl/lib      -lruby.2.1.0  -lpthread -ldl -lobjc  "
Undefined symbols for architecture x86_64:
  "_iconv", referenced from:
      _main in conftest-311f4b.o
  "_iconv_open", referenced from:
      _main in conftest-311f4b.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 <stdlib.h>
 4: #include <iconv.h>
 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 */
再次,它说我有iconv,但它崩溃了吗?

我必须误解某处的信息。

0 个答案:

没有答案
相关问题