ruby on rails - নোকোগিরি ইনস্টলেশন ব্যর্থ হয়েছে-libxml2 অনুপস্থিত




ruby-on-rails rubygems (13)

=== টিএলডিআর ===

নির্দেশাবলী অনুসারে , রুবি তৈরি করুন সর্বশেষ ক্ল্যাং কম্পাইলার, অথবা অন্তত একই সংস্করণ যা রুবিগেমগুলি নকোকিরির স্থানীয় এক্সটেনশনগুলি libxml এবং libxsl সংকলন করতে ব্যবহার করবে।

RVM ব্যবহার করে, --with-ggc=clang flag সহ উৎস থেকে বিল্ডিংটি আমার জন্য কী করেছে:

rvm install 2.2 --with-gcc=clang

আপনি চান যাই হোক না কেন সংস্করণ 2.2 প্রতিস্থাপন। --with-gcc=clang সোর্স থেকে RVM নির্মাণ নিশ্চিত করে এবং এটি করার জন্য ক্ল্যাং ব্যবহার করে; অন্যথায় RVM একটি প্রাক-নির্মিত বাইনারি Ruby হতে পারে, যা আমাকে আপ ট্রিপ করা হয়।

তারপর, নোকোগিরি স্বাভাবিক হিসাবে বুন্ডলার বা রুবিগেম ব্যবহার করে ইনস্টল করুন।

=== 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; }  

নোকোগিরি নিজস্ব libxml এবং libxsl সরবরাহ করে (1.6.4 হিসাবে)। নোকোগিরির স্থানীয় প্রতিলিপি parser.h-এ সংজ্ঞায়িত স্বাক্ষর (মোম ইনস্টল ডিরেক্টরিের অধীনে পাওয়া যায়) হল:

xmlParseDoc (const xmlChar *cur);                                                                                                                                                                                

তাই আমি হার্টমেটিক্যাল সিল কনফেটেস্ট পদ্ধতিতে পদ্ধতি কল কিভাবে parser.h এর জন্য হেডার ফাইলের সাথে মেলে না সেভাবে একটি ক্ষতিতে ছিল।

যখন আমি বুঝতে পারলাম আমি সম্ভবত একটি বাইনারি রুবি ইনস্টল করেছি এবং আমি --with-gcc=clang (কম্পাইলেশন এবং --with-gcc=clang ব্যবহার করার জন্য) ব্যবহার করে --with-gcc=clang করেছি এবং সমস্যা সমাধান করা হয়েছে:

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

আমি নিশ্চিত নই যে কেন সিস্টেম libxml হেডার /usr/include/libxml2/libxml/parser.h হিসাবে কাজ করে সেটি নোকোগিরির স্থানীয় কপি হিসাবে একই স্বাক্ষর রয়েছে।

এটা অদ্ভুত, কিন্তু এটা কাজ করে। শুধু আপনি খাড়া সঙ্গে একটি রুবি কম্পাইল নিশ্চিত করুন।

" নোকোগিরি ইনস্টল করা " টিউটোরিয়ালে ডকুমেন্টেশন অনুসরণ করে আমি সবসময় নকোকিরির ইনস্টলেশনের সমস্যাগুলির দিকে আমার কাজ করতাম।

কিন্তু এই সময়, এমনকি সমস্ত নির্ভরতা ইনস্টল করার পরে, নোকোগিরি ইনস্টল করা হয়নি। আমি নিম্নলিখিত ত্রুটি পেতে:

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/

কিন্তু এটা একই ত্রুটি ফিরে।

আমি অন্যান্য সম্পর্কিত স্ট্যাক ওভারফ্লো নিবন্ধ অনুসরণ করে এবং কেউ সাহায্য করেনি। কারো কাছে কি কোন সমাধান আছে?


OSX ব্যবহারকারীদের জন্য, যদি আপনি সফলভাবে নকোকিরি ইনস্টল করার আগে সফলতা পেয়ে থাকেন, তবে আপনি যে রুবিটি যুক্ত করেছেন তার একটি নতুন সংস্করণ ব্যবহার করে ত্রুটিগুলি ইনস্টল করা হচ্ছে এবং এটির মধ্যে এমন ত্রুটি রয়েছে যার মধ্যে একটি বার্তা রয়েছে:

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

এটি অ্যাপ স্টোরের মাধ্যমে ঘটেছে এমন XCode আপগ্রেডের নির্দেশিকা হতে পারে, এটি নিজে বা স্বয়ংক্রিয়ভাবে, এবং আপনি সেই সময় থেকে এটি খুলছেন না।

যদি তাই হয়, তবে আপনি এক্সকোডটি খুলতে সক্ষম হবেন, নতুন লাইসেন্সের সাথে একমত হন এবং তারপরে নোকোগিরি সফলভাবে ইনস্টল করুন।


আপনি libxml2 ইনস্টল করার চেষ্টা করেছেন? Rubygems থেকে না, কিন্তু আপনার অপারেটিং সিস্টেমের জন্য স্ট্যান্ডার্ড ইনস্টলেশনের মাধ্যমে। উদাহরণস্বরূপ উবুন্টু / ডেবিয়ান:

sudo apt-get install libxml2

ওএস এক্স এর সাম্প্রতিক সংস্করণে এটি ইতিমধ্যে ইনস্টল করা উচিত।


আপনি আসলে এই দুটি প্যাকেজ ইনস্টল করতে হবে

sudo apt-get install libxslt-dev libxml2-dev

আমি চকলেট , উইন্ডোজ 8.1 এক্স 64, এবং ডেভিট এক্স 64 এর সাথে এটি ইনস্টল করতে সক্ষম হয়েছিলাম।

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

আপনি পাথ সঠিক সংস্করণ নম্বর যাচাই করতে হবে।

আপনি সম্ভবত মাইক্রোসফ্ট এর NuGet সংগ্রহস্থল যোগ করার প্রয়োজন হতে পারে:

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

আমি ফেডোরা 13. এ একই সমস্যা ছিল একটি হতাশাজনক এবং ব্যর্থ অনুসন্ধান করার পরে

gem install nokogiri

আমার জন্য কাজ, আমি এটি ইনস্টল করতে এবং Yum মাধ্যমে libxml2 ত্রুটি প্রায় পেতে সক্ষম ছিল।

শুধু gem কমান্ডের পরিবর্তে Yum এর মাধ্যমে yum ইনস্টল করুন:

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

এটি আমাকে ফেডোরার জন্য সঠিক উত্তর খুঁজে পেতে সাহায্য করেছে এবং, যেমন আমি রুবি প্যাকেজ পরিচালনার জন্য RVM ব্যবহার করছি,

yum install rubygem-nokogiri

সিস্টেমের সব রুবি রত্ন এবং নির্ভরতাগুলিকে টেনে আনবে, আমার RVM পরিবেশে নয়, এবং আমার অভিজ্ঞতায় যা খুব হতাশাজনক এবং নম্র অভিজ্ঞতা লাভ করবে।

সুতরাং, নকোকিরি Yum মণির আপনার সন্ধান গ্রহণ আপনি ব্যবহার করতে পারেন:

yum provides  rubygem-nokogiri

এবং Rubygem-Nokogiri জন্য নির্ভরতা একটি তালিকা পেতে যা আমাকে অনুপস্থিত ছিল যে গ্রন্থাগার দেখিয়েছে। তারপরে আমি দৌড়ে গেলাম:

yum install libxml2-devel libxslt libxslt-devel

এখন নকোকিরির ফেডোরা এবং নোকোগিরিতে কম্পাইল করা হয়েছে। ওহ !, আমাদের ডেভেলাল লাইব্রেরি থেকে নোকোগিরি কম্পাইল করার জন্য হেডার দরকার।



উপরের পোস্টটি অনুসরণ করে অনুসরণ করে কমান্ড ব্যবহার করে ভানেন্ট-ভয়েস ইনস্টল করতে সক্ষম হয়েছিল:

NOKOGIRI_USE_SYSTEM_LIBRARIES=1 vagrant plugin install vagrant-aws

নিম্নলিখিত প্যাকেজগুলি চালানোর মাধ্যমে আমি নকোকিরি ইনস্টল করতে পেরেছিলাম:

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

প্রথম, নির্ভরতা ইনস্টল করুন:

sudo apt-get install libxslt-dev libxml2-dev

আপনি যদি এখনও ত্রুটিটি পান তবে আপনি একটি কম্পাইলার টুলচাইন অনুপস্থিত থাকতে পারে:

sudo apt-get install build-essential

আপনি যদি বিল্ড টুলচেনটি হারিয়ে ফেলেন তবে আপনি "libxml2 অনুপস্থিত" ত্রুটিটি পাবেন। (অন্তত আমি ডেবিয়ান লেনিতে এই সমস্যাটি চালাচ্ছি)।

নোকোগিরি বিল্ড একটি libxml2 হেডার ফাইলটি পরীক্ষা করে সংকলন করে এটি যাচাই করার জন্য, তবে এটি "libxml2 অনুপস্থিত" এবং "libxml2 পরীক্ষা করার জন্য একটি কম্পাইলার" অনুপস্থিত নয়।


ম্যাক ওএস এক্স (ম্যাকেরিক্স) যদি এই সমাধানগুলি কোনও কাজ করে না, তবে চেষ্টা করুন:

ARCHFLAGS="-arch x86_64" gem install nokogiri

অথবা

ARCHFLAGS="-arch i386" gem install nokogiri

আপনার সিস্টেমের আর্কিটেকচারের উপর নির্ভর করে।


ম্যাক ওএস এক্স (ম্যাভারিক্স), NOKOGIRI_USE_SYSTEM_LIBRARIES=1 ইনস্টল করার আগে NOKOGIRI_USE_SYSTEM_LIBRARIES=1 এবং সেটিং NOKOGIRI_USE_SYSTEM_LIBRARIES=1 দিয়ে লাইব্রেরি ইনস্টল করে আমার জন্য কৌশলটি ব্যবহার করে।

সারমর্ম:

  • পূর্বে ইনস্টল করা হলে, মণি আনইনস্টল করুন:

    gem uninstall nokogiri
  • libiconv , libiconv এবং libiconv ইনস্টল করার জন্য Homebrew ব্যবহার করুন:

    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"

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

এটি দিয়ে আপনার সংস্করণ পরিবর্তন করুন।





rubygems