नोकोगिरी स्थापना विफल -libxml2 अनुपलब्ध है


156

मैंने हमेशा " 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
आपका ऑपरेटिंग सिस्टम क्या है?
जेक जोन्स

2
यह अधिक उपयुक्त उत्तर है- sudo apt-get install libxslt-dev libxml2-dev
प्रतीक बोथरा

जवाबों:


163

सबसे पहले, निर्भरताएं स्थापित करें:

sudo apt-get install libxslt-dev libxml2-dev

यदि आप अभी भी त्रुटि प्राप्त करते हैं, तो आपको एक कंपाइलर टूलकिन गुम हो सकती है:

sudo apt-get install build-essential

यदि आप एक बिल्ड टूलचैन को याद कर रहे हैं तो आपको "libxml2 याद आ रही है" त्रुटि मिलेगी (कम से कम मैं डेबियन लेन पर इस मुद्दे में भाग गया)।

Nokogiri बिल्ड टेस्ट-कंपाइल करता है कि यह मौजूद है, यह सत्यापित करने के लिए एक libxml2 हेडर फाइल को संकलित करता है, हालाँकि, यह "libxml2 गायब है" और "libxml2 के परीक्षण के लिए एक कंपाइलर गायब है" के बीच अंतर नहीं करता है।


44
यदि वह समस्या नहीं है, तो आपको libxml2-dev
एरिक पीटरसन

1
मैं ऊपर आदेश चला गया है और 'libxml2 याद आ रही है' त्रुटि मिली। क्या आप मुझे बिल्ड टूल चेन इंस्टालेशन के बारे में अधिक बता सकते हैं। b'cos मैं उस पर बहुत मदद मिल नहीं था।
रोहित ए।

1
मुझे वह संदेश मिला क्योंकि मेरे पास जीसीसी (या कोई अन्य संकलक) स्थापित नहीं था। मेरे पास कंपाइलर टूलचिन नहीं था।
एरिक पीटरसन

7
यदि आप एक मैक पर हैं: शराब की भठ्ठी स्थापित करें libxslt तो शराब की भठ्ठी स्थापित करें libxml2
सैम बैकस

245

आपको वास्तव में इन दोनों पैकेजों को स्थापित करने की आवश्यकता हो सकती है

sudo apt-get install libxslt-dev libxml2-dev

7
स्वीकृत उत्तर के नीचे यह टिप्पणी कैसे बैठ सकती है?
नई अलेक्जेंड्रिया

3
क्योंकि कहा गया प्रश्न "सभी निर्भरताओं को स्थापित करने के बाद भी"। तो स्वीकृत उत्तर सही है।
b0fh

62

Mac OS X (Mavericks) में, पुस्तकालयों को स्थापित करने और मणि स्थापित brewकरने NOKOGIRI_USE_SYSTEM_LIBRARIES=1से पहले सेटिंग ने मेरे लिए चाल चली।

सारांश:

  • यदि पहले से स्थापित है, तो मणि की स्थापना रद्द करें:

    gem uninstall nokogiri
  • स्थापित करने के लिए Homebrew का उपयोग करें libxml2, libxsltऔर libiconv:

    brew install libxml2 libxslt libiconv
  • पुस्तकालयों से जुड़े होने के लिए रास्तों को निर्दिष्ट करने वाला रत्न स्थापित करें:

    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 OS X के साथ libiconv वितरित करता है, आप इसे / usr / lib में पा सकते हैं।" लेकिन बस अपने मणि स्थापित स्क्रिप्ट की नकल काम :) धन्यवाद!
Automatico

धन्यवाद! एक पूरी सुबह के बाद नोगोगिरी स्थापित करने की कोशिश करने के बाद, आपका जवाब (विशेष रूप से कॉन्फ़िगरेशन पथों के साथ) आखिरकार यह काम कर रहा है - बजाय स्थापित करने के बजाय कि libxml2 मौजूद नहीं था, तब भी जब पथ सही थे।
पेब्बल

2
ओएस एक्स पर काढ़ा के बजाय पोर्ट का उपयोग करना और बस $ NOKOGIRI_USE_SYSTEM_LIBRARIES=1 gem install nokogiriचाल
चलनी थी

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 है)
हाई फेंग काओ

22

मैं अभी फेडोरा 13. पर एक ही मुद्दा था। बनाने के लिए एक निराशाजनक और असफल खोज के बाद

gem install nokogiri

मेरे लिए काम, मैं इसे स्थापित करने और libxml2 त्रुटि के माध्यम से प्राप्त करने में सक्षम था yum

केवल कमांड के yumबजाय मणि स्थापित करें gem:

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

इससे मुझे फेडोरा के लिए सही उत्तर खोजने में मदद मिली और, जैसा कि मैं रूबी पैकेज प्रबंधन के लिए आरवीएम का उपयोग कर रहा हूं,

yum install rubygem-nokogiri

सिस्टम में सभी रूबी रत्नों और निर्भरताओं में खींच लेंगे, मेरे आरवीएम वातावरण में नहीं, और मेरे अनुभव में जो बहुत निराशाजनक और विनम्र अनुभव होता है।

तो, नोकोगिरी यम मणि का उपयोग कर सकते हैं:

yum provides  rubygem-nokogiri

और रूबीग्म-नोकोगिरी के लिए निर्भरता की एक सूची प्राप्त करें, जिसने मुझे उन पुस्तकालयों को दिखाया जो गायब थे। उसके बाद मैं भागा:

yum install libxml2-devel libxslt libxslt-devel

अब फेडोरा में नोकोगिरी संकलन करता है और नोकोगिरी स्थापित होता है। D'oh !, हमें हेडर की जरूरत है जो नोवलगिरि को देवल लाइब्रेरी से संकलित करे।


इसने मेरे लिए यह किया, हालाँकि उबंटू में मुझे apt-get install का उपयोग करना पड़ा libnokogiri-ruby1.9.1 , फिर Gemfile को 1.5.9 के बजाय nokogiri 1.5.5 के लिए पूछने के लिए संपादित करें
ffflabs 5'14

13

Mac OS X (Mavericks) में यदि इनमें से कोई भी समाधान काम नहीं करता है, तो प्रयास करें:

ARCHFLAGS="-arch x86_64" gem install nokogiri

या

ARCHFLAGS="-arch i386" gem install nokogiri

आपके सिस्टम की वास्तुकला पर निर्भर करता है।


13

आपको रत्नों के निर्माण के लिए आमतौर पर विकास फाइलों की आवश्यकता होती है। प्रयत्न:

sudo apt-get install libxslt-dev libxml2-dev

(मैंने देखा कि एरिक ने एक टिप्पणी में ऐसा ही सुझाव दिया था।)


11

मैं इसे Chocolatey , विंडोज 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 खोजने में असमर्थ है'। चॉकलेट में आपके पास क्या स्रोत हैं?
आइजैक वालर

3
समस्या मिल गई! Nuget स्रोतों को Chocolatey के स्रोत फ़ाइल में अक्षम कर दिया गया था! लेकिन मणि काम नहीं करता है: [tid-1789500] 126: निर्दिष्ट मॉड्यूल नहीं मिला। - C: /Ruby200/lib/ruby/gems/2.0.0/gems/nokogiri-1.6.1//lib/nokogiri/nokogiri.so (लोडर्र)
Ratib Stibric

@RatkoStibric मुझे लगता है कि आपको गतिशील कामों के साथ निर्माण करना होगा ...\x64\Release\dynamic\cdecl:।
क्लो

1
एक बार चॉकलेट स्थापित होने के बाद, निम्न कमांड का उपयोग करके एक स्रोत जोड़ें:chocolatey sources add -name NuGet -source "https://go.microsoft.com/fwlink/?LinkID=230477"
रिचर्ड पीक

1
चॉकलेट के लिए धन्यवाद, इसके बारे में पहले कभी नहीं पता था!
रिचर्ड पेक


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 स्थापित करने की कोशिश की है? माणिक्य से नहीं, लेकिन आपके ऑपरेटिंग सिस्टम के लिए मानक स्थापित प्रक्रिया के माध्यम से। उदाहरण के लिए उबंटू / डेबियन पर:

sudo apt-get install libxml2

ओएस एक्स के किसी भी हाल के संस्करण पर यह पहले से ही स्थापित होना चाहिए।


मैं ubuntu पर हूं और मैंने उपरोक्त सभी स्थापनाओं का अनुसरण किया है जैसा कि किसी भी अन्य स्टैकओवरफ़्लो प्रश्नों में बताया गया है।
रोहित ए।

1

OSX उपयोगकर्ताओं के लिए, यदि आपको पहले भी नोकोगिरी को स्थापित करने में सफलता मिली है, फिर भी इसे स्थापित करने में त्रुटियां हो रही हैं, कहते हैं, रूबी के एक नए संस्करण का उपयोग करके जो आपने जोड़ा है और वह त्रुटि जिसमें एक संदेश शामिल है:

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

यह XCode अपग्रेड का संकेत हो सकता है जो कि ऐप स्टोर के माध्यम से, मैन्युअल रूप से या स्वचालित रूप से हुआ है, और आपने उस समय से इसे नहीं खोला है।

यदि हां, तो आपको XCode खोलने में सक्षम होना चाहिए, नए लाइसेंस के लिए सहमत होना चाहिए, और फिर नोगोगिरी को सफलतापूर्वक स्थापित करना चाहिए।


1

Mac OS X Yosemite पर मेरी गलती यह थी कि sudo gem installजब मैंने रत्नों को स्थापित करते समय सुपरसुसर विशेषाधिकारों का उपयोग नहीं करने के लिए अंगूठे का एक नियम है, तो मैंने इसका उपयोग करने की कोशिश की ।

मेरे मामले में इसने रूबी के सिस्टम इंस्टॉलेशन को संशोधित करने की कोशिश की, और यह एक अच्छा विचार नहीं है। मैंने rbenv स्थापित किया, रूबी 2.2.2 को स्थापित किया और इसे इस रूप में सेट किया global, जो rbenv के प्रलेखन से एक शब्द है। उसके बाद नोकोगिरी एक साधारण के साथ खुद को स्थापित कर सकता था

gem install nokogiri

कोई हैक या वर्कअराउंड आवश्यक नहीं थे, बस ठीक से सेट वातावरण; नोकोगिरी बाकी काम पूरी तरह से करता है।


उपयोग करना sudoठीक है यदि आप समझते हैं कि यह कैसे काम करता है, जहां यह प्रभावी होने जा रहा है, तो स्थापित या अपडेट की जाने वाली फाइलें क्यों स्थापित की जानी चाहिए और यदि यह विफल हो जाती है तो कार्रवाई को पूर्ववत कैसे करें। अन्यथा, रेनेव या आरवीएम जैसे सैंडबॉक्स का उपयोग करना वास्तव में एक अच्छा विचार है।
टिन मैन

1

उपरोक्त पोस्ट का पालन करके कमांड के रूप में उपयोग करके आवारा-आवेश को स्थापित करने में सक्षम था:

NOKOGIRI_USE_SYSTEM_LIBRARIES=1 vagrant plugin install vagrant-aws


0

मैं निम्नलिखित पैकेज चलाकर नोकोगिरी को स्थापित करने में सक्षम था:

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

0

=== TLDR ===

निर्देश राज्य के रूप में , रूबी को नवीनतम क्लैंग संकलक के साथ बनाएं, या कम से कम एक ही संस्करण है जो रूबीज नोकोगिरी के मूल एक्सटेंशन लिबक्सएमएल और लिबक्सस्ल को संकलित करने के लिए उपयोग करेगा।

यदि आरवीएम का उपयोग करते हैं, तो --with-ggc=clangध्वज के साथ स्रोत से निर्माण करना मेरे लिए क्या था:

rvm install 2.2 --with-gcc=clang

2.2जो भी संस्करण आप चाहते हैं के साथ बदलें । --with-gcc=clangRVM स्रोत से बनाता है और ऐसा करने के लिए क्लैंग का उपयोग करता है; अन्यथा आरवीएम एक पूर्व-निर्मित द्विआधारी रूबी हो सकता है, जो कि मुझे फंस गया है।

फिर, बुंडलर या रूबीगैम का उपयोग करके नोकोगिरी को सामान्य रूप से स्थापित करें।

=== DEPTH में ===

मैं कुछ समय तक इससे जूझता रहा। 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 के रूप में) की आपूर्ति करता है। Nokogiri की स्थानीय प्रति parser.h (रत्न स्थापित निर्देशिका के तहत पाया गया) में परिभाषित हस्ताक्षर है:

xmlParseDoc (const xmlChar *cur);                                                                                                                                                                                

तो मैं एक नुकसान के रूप में था कि कैसे hermetically सील conftest.c फ़ाइल उपयोग में विधि कॉल parser.h के लिए हेडर फ़ाइल के साथ मेल नहीं खा सकता है।

जब मैंने महसूस किया कि मैंने शायद एक बाइनरी रूबी स्थापित किया था जिसे मैंने हटा दिया और --with-gcc=clang(संकलन और बल का उपयोग करने के लिए) का उपयोग करके पुनः इंस्टॉल किया और समस्या हल हो गई:

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

मुझे बिलकुल यकीन नहीं है कि यह क्यों काम करता है क्योंकि सिस्टम libxml हेडर /usr/include/libxml2/libxml/parser.hमें नोकोगिरी की स्थानीय कॉपी के समान हस्ताक्षर हैं।

यह अजीब है, लेकिन यह काम किया। बस सुनिश्चित करें कि आप एक रूबी को क्लैंग के साथ संकलित करें।


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

इसके साथ अपना संस्करण बदलें।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.