Nokogiri 설치 실패 -libxml2가 없습니다


156

" Nokogiri 설치 "학습서 의 문서에 따라 항상 Nokogiri 설치 문제를 해결했습니다 .

그러나 이번에는 모든 종속성을 설치 한 후에도 Nokogiri가 설치되지 않았습니다. 다음과 같은 오류가 발생합니다.

libxml2 is missing.  please visit <http://nokogiri.org/tutorials/installing_nokogiri.html>

libxml2 및 libxslt 디렉토리를 지정하여 설치를 시도했습니다.

sudo gem install nokogiri -- --with-xml2-include=/usr/include/libxml2 --with-xml2-lib=/usr/lib --with-xslt-dir=/usr/

그러나 같은 오류가 반환되었습니다.

나는 다른 모든 관련 스택 오버플로 기사를 따랐으며 도움이되지 않았습니다. 누구든지 해결책이 있습니까?


1
운영 체제가 무엇입니까?
Jake Jones

2
이것은 더 적절한 답변입니다. sudo apt-get install libxslt-dev libxml2-dev
Pratik Bothra

답변:


163

먼저, 의존성을 설치하십시오 :

sudo apt-get install libxslt-dev libxml2-dev

여전히 오류가 발생하면 컴파일러 툴체인이 누락 된 것일 수 있습니다.

sudo apt-get install build-essential

빌드 툴체인이 없으면 "libxml2가 없습니다"오류가 발생합니다 (적어도 Debian Lenny에서이 문제가 발생했습니다).

Nokogiri 빌드는 libxml2 헤더 파일이 존재하는지 검증하기 위해 libxml2 헤더 파일을 테스트 컴파일하지만 "libxml2가 없음"과 "libxml2를 테스트하는 컴파일러가 없음"을 구분하지 않습니다.


44
이것이 문제가 아닌 경우 libxml2-dev를 설치해야합니다.
Erik Peterson

1
위의 명령을 실행했으며 'libxml2가 누락되었습니다'오류가 발생했습니다. 빌드 툴 체인 설치에 대해 더 자세히 말씀해 주시겠습니까? b'cos 나는 그것에 대해 많은 도움을 찾지 못했습니다.
Rohit A.

1
gcc (또는 다른 컴파일러)가 설치되어 있지 않기 때문에 해당 메시지가 나타납니다. 컴파일러 툴체인이 없었습니다.
Erik Peterson

7
맥이라면 : brew install libxslt brew install libxml2
Sam Backus

245

실제로이 두 패키지를 모두 설치해야 할 수도 있습니다

sudo apt-get install libxslt-dev libxml2-dev

7
이 등급이 높은 의견이 어떻게 허용 된 답변 아래에 앉을 수 있습니까?
새로운 Alexandria

3
질문에 "모든 종속성을 설치 한 후에도"가 언급 되었기 때문입니다. 그래서 받아 들인 대답이 맞습니다.
b0fh

62

Mac OS X (Mavericks) 에서 gem을 설치하기 전에 라이브러리를 설치 brew하고 설정 NOKOGIRI_USE_SYSTEM_LIBRARIES=1하면 나에게 트릭이되었습니다.

요약 :

  • 이전에 설치 한 경우 gem을 제거하십시오.

    gem uninstall nokogiri
  • 설치 브루를 사용 libxml2, libxsltlibiconv:

    brew install libxml2 libxslt libiconv
  • 링크 될 라이브러리의 경로를 지정하여 gem을 설치하십시오.

    NOKOGIRI_USE_SYSTEM_LIBRARIES=1 gem install nokogiri -- --use-system-libraries --with-iconv-dir="$(brew --prefix libiconv)" --with-xml2-config="$(brew --prefix libxml2)/bin/xml2-config" --with-xslt-config="$(brew --prefix libxslt)/bin/xslt-config"

libiconv에 대한 오류가 있습니다. "Apple은 libiconv를 OS X와 ​​함께 배포합니다. / usr / lib에서 찾을 수 있습니다." 그러나 단순히 보석 설치 스크립트를 복사하면 효과가 있습니다 :) 감사합니다!
Automatico

감사합니다! 하루 종일 노코 기리를 설치하려고 시도한 후에는 경로가 정확하더라도 libxml2가 존재하지 않았다는 설치가 아닌 (구성 경로가있는) 응답이 마침내 작동하게되었습니다.
Pebbl

2
OS X 포트 대신 양조를 사용하여 그냥가는 $ NOKOGIRI_USE_SYSTEM_LIBRARIES=1 gem install nokogiri트릭을 않았다
안드레스 Kütt

2
OSX El Capitan 10.11.2에서, 나는 brew install libxml2 libxslt homebrew/dupes/libiconv그것을 사용 하기 위해 사용 했다
Hai Feng Kao

2
게다가, 추가 할 필요 --with-xml2-include="/usr/local/opt/libxml2/include/libxml2"를위한 gem install nokogiri작업을 명령. 그렇지 않으면 libxml2 version 2.6.21 or later is required!(내 libxml2 버전은 2.9.2입니다)
Hai Feng Kao

22

방금 Fedora 13에서 동일한 문제가 발생했습니다. 좌절하고 실패한 검색을 한 후

gem install nokogiri

나를 위해 일하고, 그것을 설치하고를 통해 libxml2 오류를 해결할 수있었습니다 yum.

명령 yum대신 gem을 설치하기 만하면 됩니다 gem.

su
yum search rubygem-nokogiri   #this find the proper package name
yum install rubygem-nokogiri.i686

이를 통해 Fedora에 대한 정답을 찾을 수 있었으며 Ruby 패키지 관리에 RVM을 사용하면서

yum install rubygem-nokogiri

RVM 환경이 아닌 시스템에 모든 Ruby gem과 종속성을 가져오고 매우 실망스럽고 겸손한 경험을하게됩니다.

따라서 Nokogiri yum 보석을 찾으면 다음을 사용할 수 있습니다.

yum provides  rubygem-nokogiri

rubygem-Nokogiri의 종속성 목록을 가져와 누락 된 라이브러리를 보여주십시오. 그 후 나는 달렸다.

yum install libxml2-devel libxslt libxslt-devel

이제 Nokogiri가 Fedora 및 Nokogiri 설치에서 컴파일됩니다. D' oh !, 개발 라이브러리에서 Nokogiri를 컴파일하려면 헤더가 필요합니다.


비록 우분투에서는 apt-get install libnokogiri-ruby1.9.1을 사용해야했지만 Gemfile 을 편집하여 1.5.9 대신 nokogiri 1.5.5를 요청하십시오
ffflabs

13

Mac OS X (Mavericks)에서 이러한 솔루션이 작동하지 않으면 다음을 시도하십시오.

ARCHFLAGS="-arch x86_64" gem install nokogiri

또는

ARCHFLAGS="-arch i386" gem install nokogiri

시스템 아키텍처에 따라


13

일반적으로 gem을 빌드하기위한 개발 파일이 필요합니다. 시험:

sudo apt-get install libxslt-dev libxml2-dev

(방금 에릭이 같은 의견을 제시 한 것을 보았습니다.)


11

이것을 Chocolatey , Windows 8.1 x64 및 DevKit x64와 함께 설치할 수있었습니다 .

cinst libxml2
cinst libxslt
cinst libiconv

gem install nokogiri -- 
  --with-xml2-include=C:\Chocolatey\lib\libxml2.2.7.8.7\build\native\include 
  --with-xml2-lib=C:\Chocolatey\lib\libxml2.redist.2.7.8.7\build\native\bin\v110\x64\Release\dynamic\cdecl 
  --with-iconv-include=C:\Chocolatey\lib\libiconv.1.14.0.11\build\native\include 
  --with-iconv-lib=C:\Chocolatey\lib\libiconv.redist.1.14.0.11\build\native\bin\v110\x64\Release\dynamic\cdecl 
  --with-xslt-include=C:\Chocolatey\lib\libxslt.1.1.28.0\build\native\include 
  --with-xslt-lib=C:\Chocolatey\lib\libxslt.redist.1.1.28.0\build\native\bin\v110\x64\Release\dynamic

경로의 버전 번호가 올바른지 확인해야합니다.

Microsoft의 NuGet 저장소를 추가해야 할 수도 있습니다.

-Source "https://go.microsoft.com/fwlink/?LinkID=230477"

'패키지 libxml2를 찾을 수 없습니다'가 표시됩니다. Chocolately에 어떤 소스가 있습니까?
Isaac Waller

3
문제를 찾았습니다! Chocolatey의 소스 파일에서 너겟 소스가 비활성화되었습니다! 그러나 gem이 작동하지 않습니다 : [tid-1789500] 126 : 지정된 모듈을 찾을 수 없습니다. -C : /Ruby200/lib/ruby/gems/2.0.0/gems/nokogiri-1.6.1/lib/nokogiri/nokogiri.so (LoadError)
Ratko Stibric

@RatkoStibric 동적 라이브러리로 빌드해야한다고 생각합니다 ...\x64\Release\dynamic\cdecl.
Chloe

1
초콜릿이 설치되면 다음 명령을 사용하여 소스를 추가하십시오.chocolatey sources add -name NuGet -source "https://go.microsoft.com/fwlink/?LinkID=230477"
Richard Peck

1
Chocolatey에 감사드립니다. 전에는 몰랐습니다!
Richard Peck

11

그것은 :

sudo yum install -y libxml2 libxml2-devel

RHEL 서버에서.


6

macOS에서는 XCode libxml2 경로를 명시 적으로 제공 할 때까지 위 / 아래 중 어느 것도 실제로 나를 위해 일하지 않았습니다 --with-xml2-include.

gem install nokogiri -- --with-xml2-include=/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/libxml2 --use-system-libraries

4

Fedora 20에 Nokogiri 1.6.5를 설치할 수있었습니다 :

export NOKOGIRI_USE_SYSTEM_LIBRARIES=true

그런 다음 실행하십시오.

gem install nokogiri

4

이 문제가 발생하는 다른 사람은 프로젝트 디렉토리 내에서이 명령을 실행하여 해결했습니다.

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

업데이트 : 나는 이것을 다시 만났고 나를 위해 일한 보석을 업데이트하려고 시도했다.

gem update nokogiri


2

libxml2 설치를 시도 했습니까? rubygems가 아니라 운영 체제의 표준 설치 프로세스를 통해 제공됩니다. 예를 들어 우분투 / 데비안에서 :

sudo apt-get install libxml2

최신 버전의 OS X에는 이미 설치되어 있어야합니다.


나는 우분투를 사용하고 있으며 다른 모든 스택 오버 플로우 질문에서 알 수 있듯이 위의 모든 설치를 따랐습니다.
Rohit A.

1

OSX 사용자의 경우 이전에 Nokogiri를 성공적으로 설치했지만 추가 한 새 버전의 Ruby 및 다음과 같은 메시지가 포함 된 오류를 사용하여 설치 중에 오류가 발생하는 경우 :

The compiler failed to generate an executable file. (RuntimeError)
You have to install development tools first.

이는 App Store를 통해 수동 또는 자동으로 XCode 업그레이드가 발생했음을 나타내며 그 이후로는 열지 않았을 수 있습니다.

그렇다면 XCode를 열고 새 라이센스에 동의 한 다음 Nokogiri를 성공적으로 설치해야합니다.


1

Mac OS X Yosemite에서 실수는 sudo gem install보석을 설치할 때 수퍼 유저 권한을 사용하지 않는 것이 일반적 일 때 사용하려고 시도한 것 입니다.

필자의 경우 Ruby의 시스템 설치를 수정하려고 시도했지만 좋은 생각이 아닙니다. rbenv를 설치하고 Ruby 2.2.2를 통해 설치 global한 다음 rbenv 설명서의 용어 인 로 설정했습니다 . 그 후 노코 기리는 간단하게 설치할 수 있습니다.

gem install nokogiri

해킹이나 해결 방법이 필요하지 않고 올바르게 설정된 환경입니다. 노코 기리는 나머지를 완벽하게 수행합니다.


사용 sudoOK입니다 경우 당신이 파일을 설치하거나 설치해야합니다 업데이트 어떻게되는 이유가 실패 할 경우 작업을 취소 할을 적용 것 곳이 어떻게 작동하는지 이해합니다. 그렇지 않으면, rbenv 또는 RVM 같은 샌드 박스를 사용하는 것은입니다 정말 좋은 생각.
Tin Man

1

위의 게시물을 따르고 다음과 같은 명령을 사용하여 vagrant-awe를 설치할 수있었습니다.

NOKOGIRI_USE_SYSTEM_LIBRARIES=1 vagrant plugin install vagrant-aws


0

다음 패키지를 실행하여 Nokogiri를 설치할 수있었습니다.

$ dnf group install "C Development Tools and Libraries"
$ dnf install ruby-devel libxml2-devel patch

0

=== TLDR ===

지침의 상태, 최신 그 소리 컴파일러 빌드 루비, 또는 젬 컴파일하는 데 사용할 적어도 동일한 버전 노코 기리의 기본 확장 libxml 및 libxsl.

RVM을 사용하는 경우 --with-ggc=clang플래그로 소스에서 빌드 하면 나에게 도움이되었습니다.

rvm install 2.2 --with-gcc=clang

2.2원하는 버전으로 교체하십시오 . --with-gcc=clang소스에서 RVM 빌드를 보장하고 clang을 사용하여 그렇게합니다. 그렇지 않으면 RVM은 사전 빌드 된 바이너리 Ruby 일 수 있습니다.

그런 다음 Bundler 또는 Rubygems를 사용하여 Nokogiri를 정상적으로 설치하십시오.

=== 깊이 있음 ===

나는 이것을 잠시 동안 고투했다. gem install nokogiri줬어:

checking for xmlParseDoc() in libxml/parser.h... no
checking for xmlParseDoc() in -lxml2... no
checking for xmlParseDoc() in -llibxml2... no

파고 들어 mkmf.log보았다 :

conftest.c:15:27: error: too few arguments to function call, single argument 'cur' was not specified
int t(void) { xmlParseDoc(); return 0; }  

Nokogiri는 자체 libxml 및 libxsl을 제공합니다 (1.6.4 기준). gem 설치 디렉토리 아래에있는 nokogiri의 parser.h 로컬 사본에 정의 된 서명은 다음과 같습니다.

xmlParseDoc (const xmlChar *cur);                                                                                                                                                                                

그래서 완전히 밀폐 된 conftest.c 파일 사용법의 메소드 호출이 parser.h의 헤더 파일과 일치하지 않는 방법에 대해 손실되었습니다.

내가 바이너리 바이너리를 설치했다는 것을 깨달았을 때 --with-gcc=clang(컴파일을 강제하고 clang을 사용하여) 제거하고 다시 설치 하면 문제가 해결되었습니다.

rvm uninstall 2.2
rvm install 2.2 --with-gcc=clang
gem install nokogiri

시스템 libxml 헤더 /usr/include/libxml2/libxml/parser.h가 Nokogiri의 로컬 사본과 동일한 서명을 갖는 이유를 정확히 모르겠습니다 .

이상하지만 효과가있었습니다. clang으로 Ruby를 컴파일하십시오.


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

그것으로 버전을 변경하십시오.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.