[ruby] libiconv가 없어서 Mac OS에서 Nokogiri 설치가 실패하는 이유는 무엇입니까?

Mac OS 10.9.3에 Nokogiri를 설치하려고하는데 시도한 결과에 관계없이 다음 오류 메시지와 함께 설치가 실패합니다.

$ sudo gem install nokogiri -- --with-xml2-include=/usr/local/Cellar/libxml2/2.9.1/include/libxml2 --with-xml2-lib=/usr/local/Cellar/libxml2/2.9.1/lib --with-xslt-dir=/usr/local/Cellar/libxslt/1.1.28 --with-iconv-include=/usr/local/Cellar/libiconv/1.14/include --with-iconv-lib=/usr/local/Cellar/libiconv/1.14/lib
Building native extensions with: '--with-xml2-include=/usr/local/Cellar/libxml2/2.9.1/include/libxml2 --with-xml2-lib=/usr/local/Cellar/libxml2/2.9.1/lib --with-xslt-dir=/usr/local/Cellar/libxslt/1.1.28 --with-iconv-include=/usr/local/Cellar/libiconv/1.14/include --with-iconv-lib=/usr/local/Cellar/libiconv/1.14/lib'
This could take a while...
Building nokogiri using packaged libraries.
ERROR:  Error installing nokogiri:
    ERROR: Failed to build gem native extension.

    /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/bin/ruby extconf.rb --with-xml2-include=/usr/local/Cellar/libxml2/2.9.1/include/libxml2 --with-xml2-lib=/usr/local/Cellar/libxml2/2.9.1/lib --with-xslt-dir=/usr/local/Cellar/libxslt/1.1.28 --with-iconv-include=/usr/local/Cellar/libiconv/1.14/include --with-iconv-lib=/usr/local/Cellar/libiconv/1.14/lib
Building nokogiri using packaged libraries.
checking for iconv.h... yes
checking for iconv_open() in iconv.h... no
checking for iconv_open() in -liconv... no
checking for libiconv_open() in iconv.h... no
checking for libiconv_open() in -liconv... no
-----
libiconv is missing.  please visit http://nokogiri.org/tutorials/installing_nokogiri.html for help with installing dependencies.
-----
*** 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


Gem files will remain installed in /Library/Ruby/Gems/2.0.0/gems/nokogiri-1.6.2.1 for inspection.
Results logged to /Library/Ruby/Gems/2.0.0/gems/nokogiri-1.6.2.1/ext/nokogiri/gem_make.out

Nokogiri 설치 “에 설명 된대로 소스에서 brew 및 libiconv 빌드를 사용하여 libxml2 및 libxslt 빌드 및 설치를 포함하여 웹에서 많은 도움을 얻은 후에도 오류는 동일하게 유지됩니다.

Nokogiri에 대한 설치를 실행하려고 할 때 libxml2 및 libxslt는 잘 보이지만 libiconv는 아닙니다.

이러한 것들에 대해 잘 알고있는 사람이라면 누구나 노코 기리 설치 방법을 알고 있습니까?



답변

나는 같은 문제가 있었다. 불행히도 ” Nokogiri 설치 “에는 Iconv 문제가 포함되지 않습니다. 문제를 해결하는 방법은 다음과 같습니다.

먼저 homebrew를 설치 하면 인생을 더 편하게 할 수 있습니다. 이미 설치 한 경우 다음과 같이 업데이트하여 최신 수식을 가져와야합니다.

brew update

참고 : OSX 10.9 이상에서는 libiconv를 설치할 수 있도록 xCode 명령 도구를 설치해야 할 수도 있습니다.

xcode-select --install

그런 다음 최신 버전의 libiconv를 설치하십시오.

brew install libiconv

그런 다음 보석을 설치하십시오

gem install nokogiri -- --with-iconv-dir=/usr/local/Cellar/libiconv/1.14


답변

시스템 라이브러리를 사용해보십시오. OSX는 최신 버전의 libiconv와 함께 제공되지만 기본 설치 스크립트에 문제가있는 것 같습니다

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

편집 : Geoff가 언급 한 번 들러를 사용하는 경우 다음을 수행 할 수 있습니다.

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


답변

@Cory의 솔루션에는 정답이 포함되어 있지만 Mavericks의 솔루션은 실제로 최상위 솔루션보다 훨씬 간단하므로 필요한 단계만으로 다시 게시하고 있습니다.

매버릭스 (OSX 10.9+) :

Xcode 명령 행 도구를 설치하십시오.

xcode-select --install

그런 다음 보석을 설치하십시오.

gem install nokogiri


답변

마침내이 문제를 해결할 수있었습니다. 위의 해결책 중 어느 것도 나를 위해 완전히 고치지 않았습니다.

gem install nokogiriOSX Lion 10.7.2에서 시도 할 때이 오류가 발생했습니다 . 우선,이 오류는 nokogiri가 libxslt 또는 libxml2를 찾을 수 없어도 동일한 오류가 발생하기 때문에 libiconv가 누락되었다고 말함으로써 실제 문제를 숨 깁니다.

그래서 나는 Homebrew 섹션 ( http://nokogiri.org/tutorials/installing_nokogiri.html) 의 지침을 따랐습니다 (현재 최신 버전의 libxml2를 설명하기 위해 약간 수정되었습니다).

brew install libxml2
brew link libxml2

# install libxslt from source
wget ftp://xmlsoft.org/libxml2/libxslt-1.1.26.tar.gz
tar -zxvf libxslt-1.1.26.tar.gz
cd libxslt-1.1.26
./configure --prefix=/usr/local/Cellar/libxslt/1.1.26 --with-libxml-prefix=/usr/local/Cellar/libxml2/2.7.8
make
sudo make install

이 시점에서 나는 노코 기리 사이트의 지시에 따라 시도했다

gem install nokogiri -- --with-xslt-dir=/usr/local/Cellar/libxslt/1.1.26

그러나 소스에서 libxslt를 빌드 할 때 /include폴더가 펑키 한 장소에 설치되기 때문에 여전히 실패했습니다 . 따라서 다음 libinclude같이 및 폴더를 별도로 지정해야합니다 .

gem install nokogiri -- --with-xslt-lib=/usr/local/Cellar/libxslt/1.1.26/lib --with-xslt-include=/usr/local/Cellar/libxslt/1.1.26/include/libxslt

이것은 여전히 ​​작동하지 않으므로 (동일한 libiconv 오류) 세 개의 필수 라이브러리 (libxslt, libxml2 및 libiconv)를 모두 지정하려고했습니다.

gem install nokogiri -- --with-xslt-lib=/usr/local/Cellar/libxslt/1.1.26/lib --with-xslt-include=/usr/local/Cellar/libxslt/1.1.26/include/libxslt --with-iconv-dir=/usr/local/Cellar/libiconv/1.14 --with-xml2-dir=/usr/local/Cellar/libxml2/2.7.8

이제 다른 오류가 발생했습니다! 여전히 오류이지만 적어도 다릅니다. make 프로세스가 실패했습니다 :

in /opt/local/lib/libz.1.dylib, file was built for unsupported file format which is not the architecture being linked (x86_64) for architecture x86_64

어? 많은 인터넷 검색을 한 후, 나는이 기적의 게시물을 보았습니다. http://www.refresherate.com/2010/01/08/fixing-ld-warning-in-usrlocalliblibz-dylib-file-is-not-of-required -건축물/

분명히 OSX Lion은 나쁜 버전의 libz 라이브러리 ( libz.dylib, libz.1.dylib, libz.1.2.4.dylib)와 함께 제공되며 Xcode SDK의 최신 버전으로 바꿔야합니다. 이 기사는 내가 할 수있는 것보다 더 잘 설명하므로 특정 지침은 위의 링크를 읽으십시오.

이것들이 교체되면, 나는 달렸다

gem install nokogiri -- --with-xslt-lib=/usr/local/Cellar/libxslt/1.1.26/lib --with-xslt-include=/usr/local/Cellar/libxslt/1.1.26/include/libxslt --with-iconv-dir=/usr/local/Cellar/libiconv/1.14 --with-xml2-dir=/usr/local/Cellar/libxml2/2.7.8

다시 모든 것이 잘되었습니다. 나는 이것이 다른 누군가를 돕기를 바랍니다.


답변

군중에게 내 목소리를 추가하기 만했지만 mkmf.log는 x86_64 아키텍처의 심볼을 찾을 수 없다는 내용을 말했습니다. 이 솔루션을 우연히 발견했습니다.

sudo env ARCHFLAGS="-arch x86_64" gem install nokogiri -- --use-system-libraries

원래의 아수를 위해 아무것도 해결하지 못할 수도 있지만, 이것은 누군가를 도울 수 있습니다.

참고 : nokogiri는 루비 애플리케이션 사용에있어 가장 높은 장벽이었습니다. 누군가 다른 버전에 의존 할 때마다 그것을 빌드하는 방법을 알아야합니다. 그리고 제 문제는 매번 다릅니다.


답변

gem install nokogiri -v '1.6.6.2' -- --use-system-libraries --with-xml2-include=$(brew --prefix libxml2)/include/libxml2

이것은 macos에서 나를 위해 일했습니다. 그것은 또한 버전과 함께 작동1.6.6.4


답변

사용하고 있습니다 .. OS X 10.9.4 Homebrew 0.9.4

이 스레드에서 nokogiri를 성공적으로 설치하고 누락 된 libiconv를 수정하는 내 여름이 있습니다.

Homebrew http://brew.sh/를 설치
하거나 아래 명령을 사용하여 최신으로 업데이트하십시오

brew update

libxml2 libxslt 설치

brew install libxml2 libxslt

libxml2 libxslt를 모두 링크

brew link libxml2 libxslt

–force를 사용하라는 경고가 표시되면 아래 명령을 사용하십시오.

brew link --force libxml2 libxslt

libiconv를 설치할 수 있도록 xCode 명령 도구를 설치하십시오.

xcode-select --install

libiconv 설치

wget http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.13.1.tar.gz
tar xvfz libiconv-1.13.1.tar.gz
cd libiconv-1.13.1
./configure --prefix=/usr/local/Cellar/libiconv/1.13.1
make
sudo make install

마지막 단계, 노코 기리 설치!

gem install nokogiri -- --with-xml2-include=/usr/local/Cellar/libxml2/2.8.0/include/libxml2 --with-xml2-lib=/usr/local/Cellar/libxml2/2.8.0/lib --with-xslt-dir=/usr/local/Cellar/libxslt/1.1.26 --with-iconv-include=/usr/local/Cellar/libiconv/1.13.1/include --with-iconv-lib=/usr/local/Cellar/libiconv/1.13.1/lib