Nokogiri: libiconv مفقود

تم إنشاؤها على ٣ أبريل ٢٠١١  ·  109تعليقات  ·  مصدر: sparklemotion/nokogiri

نقوم بتشغيل Ruby 1.8.7 (من خلال RVM) على OS X 10.6.6. محاولة تثبيت nokogiri 1.4.4 باستخدام نتائج التجميع دائمًا الخطأ التالي:

Installing nokogiri (1.4.4) with native extensions /Users/administrator/.rvm/rubies/ruby-1.8.7-p302/lib/ruby/site_ruby/1.8/rubygems/installer.rb:533:in `build_extensions': ERROR: Failed to build gem native extension. (Gem::Installer::ExtensionBuildError)

/Users/administrator/.rvm/rubies/ruby-1.8.7-p302/bin/ruby extconf.rb 
checking for libxml/parser.h... yes
checking for libxslt/xslt.h... yes
checking for libexslt/exslt.h... yes
checking for iconv_open() in iconv.h... no
checking for iconv_open() in -liconv... no
-----
libiconv is missing.  please visit http://nokogiri.org/tutorials/installing_nokogiri.html for help with installing dependencies.
-----
*** extconf.rb failed ***
[…]

باتباع الإرشادات الواردة هنا في الويكي وكذلك حول الشبكة ، استخدمنا MacPorts لتثبيت libxml2 و libxslt ، مما أدى إلى الموقف التالي:

sudo port install libxml2 libxslt
Password:
Error: Cannot install libxml2 for the arch(s) 'x86_64' because
Error: its dependency libiconv is only installed for the archs 'i386 ppc'.
Error: Unable to execute port: architecture mismatch

لقد قمنا ببناء libxml2 و libxslt من المصدر وحاولنا تثبيت الجوهرة مع أعلام MacPorts والبنية كما هو موضح في wiki بالإضافة إلى بعض الاختلافات الموجودة على الإنترنت. - تبقى النتائج كما هي. لقد قمنا حتى بتنزيل الأحجار الكريمة ، وقمنا بتغيير extconf.rb كما هو مقترح هنا: https://github.com/tenderlove/nokogiri/issues#issue/381 ، وقمنا بتجميعها محليًا ولكن النتيجة النهائية هي نفسها.

ما الذي نفتقده؟ نحن عالقون إلى حد كبير مع هذا الموقف.

ال 109 كومينتر

سألت هذا السؤال نفسه ، وأعطيت هذا الرد:

قم بتثبيت MacPorts: http://www.macports.org
أضف / opt / local / bin إلى PATH (bashrc أو zshrc أو أيًا كان ما تستخدمه).
منفذ sudo تثبيت libxml2 ومنفذ sudo تثبيت libxslt
ثم يجب تشغيل sudo gem install nokogiri --no-rdoc --no-ri دون مشاكل. هذا كل ما كان علي فعله لنظام روبي (1.8.7 في OSX 10.6) و 1.9.2 عبر rvm.

كنت أواجه نفس المشكلات في الإصدار 10.6. لقد أعدت تثبيت MacPorts وتثبيت المنفذ libxml2 و libxslt مرة أخرى ولم أعد أواجه هذه المشكلات الآن.

بافتراض أنك قمت بتثبيت libxml2 و libxslt مع MacPorts ، فربما لا تزال تتلقى هذا الخطأ بسبب عدم تطابق ترتيب مسارات التضمين ومسارات الارتباط المستخدمة بواسطة استدعاء have_func ('iconv_open'، 'iconv.h')

حل بسيط (patch): احذف libiconv. * in / usr / local / lib

اقتراح: اجعل extconf.rb يقوم بإجراء فحص أكثر تعقيدًا إلى حد ما لما تم تثبيته بالفعل من ملفات iconv ، ومنح المستخدم دليلًا أفضل. في هذه الحالة ، libiconv ليس مفقودًا. يوجد في الواقع ملفان libiconv ، تم تجميع العنوان الصحيح ، وتم ربط مكتبة قديمة. يبدو أنه مشكلة شائعة جدًا حيث يمكن أن تقدم رسالة خطأ ملف التثبيت مزيدًا من المساعدة في حلها.

وأعتقد أن هذا قد يكون مشكلة مع mkmf والطريقة التي يتعامل بها مع مسارات المكتبة؟ كان فحص الترجمة الفاشل بالنسبة لي هو:

"" "gcc -o conftest -I. -I / usr / local / lib / ruby ​​/ 1.8 / i686-darwin10.3.0 -I. -III / opt / local / include -III / usr / local / include -III / usr / local / include -III / usr / include -III / usr / include / libxml2 -I / opt / local / include / libxml2 -I / usr / local / include / libxml2 -I / usr / local / include / libxml2 -II / opt / local / include -II / usr / local / include -II / usr / local / include -II / usr / include -II / usr / include / libxml2 -I / opt / local / include -I / usr / local / include -I / usr / local / include -I / usr / include -I / usr / include / libxml2 -D_XOPEN_SOURCE -D_DARWIN_C_SOURCE -D_XOPEN_SOURCE = 1 -fno-common -pipe -fno-common -g -DXP_UNIX -O3 -Wall -Wcast-qual -Wwrite-strings -Wconversion -Wmissing-noreturn -Winline conftest.c -L. -L / usr / local / lib -L / opt / local / lib -L / usr / local / lib -L / usr / lib -L. -lruby-static -lpthread -ldl -lobjc "
رموز غير محددة للهندسة المعمارية x86_64:
"_libiconv_open" ، مُشار إليه من:

Note the compile stage starts with /opt/local/include, but the link stage starts with /usr/local/lib, which is where the old version was

أنا أستخدم Lion and homebrew. بالنسبة لي ، هذه هي الحيلة:

brew install libiconv
brew link libiconv

في حالتي (الترحيل إلى OS X Lion) لإصلاح المشكلة ، قمت بتنظيف macports:

port -qv installed > myports.txt
sudo port -fp uninstall --follow-dependents installed
sudo port clean all

مزيد من التفاصيل: http://trac.macports.org/wiki/Migration

+1 لما قاله jfahrenkrug. من المحتمل أن يتم تحديث دليل التثبيت على http://nokogiri.org/tutorials/installing_nokogiri.html ؛

قم بتثبيت الشراب libxml2 libxslt
رابط الشراب libxml2 libxslt

ل

الشراب تثبيت libxml2 libxslt libiconv
رابط الشراب libxml2 libxslt libiconv

كما نجح إصلاح jfahrenkrug بالنسبة لي

+1 يعمل بالنسبة لي

لقد اتبعت التعليمات لبناء libxml2 و libxslt من الشراب. لا أستطيع بناء نوكوجيري.

يظهر لي خطأ عندما أحاول "brew install libiconv":

brew install libiconv
خطأ: لا توجد صيغة متاحة لـ libiconv
توزع Apple libiconv مع OS X ، يمكنك العثور عليه في / usr / lib.
تفشل بعض البرامج النصية للبناء في اكتشافها بشكل صحيح ، يرجى التحقق من وجودها
صيغ الحلول.

أنا أقوم بتثبيت Snow Leopard جديد. أفضل عدم استخدام MacPorts.

الرجاء المساعدة.

jseigler أنا أدير المشروب 0.8.1 ويمكنني تثبيت libiconv دون أي مشكلة. حاول ترقية الشراب؟

لدي نفس المشكلة مثلjseigler. أنا أقوم بتشغيل المشروب 0.9 على OS X 10.7.3.

عمل تحميل libiconv وتجميع يدويًا.
http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.13.1.tar.gz

إذا اكتشفت كيفية تثبيت Nokogiri مقابل مكتبات brew 0.9 ، فيرجى إبلاغي بذلك - سأقوم بتحديث وثائق التثبيت. في غضون ذلك ، كمستخدم لنظام Linux بشكل أساسي ، أخشى أنه لا يمكنني تقديم الكثير من المساعدة.

tenderlove ، أي أفكار؟ أنت أقل من 3 أجهزة Mac. :) :) :)

باستخدام المشروب 0.9 في OSX 10.7.3 نجح ما يلي:

قم بتثبيت الشراب libxml2 libxslt
رابط الشراب libxml2 libxslt

قم بتثبيت libiconv من المصدر:
wget http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.13.1.tar.gz
tar xvfz libiconv-1.13.1.tar.gz
القرص المضغوط libiconv-1.13.1
./configure --refix = / usr / local / Cellar / libiconv / 1.13.1
صنع
sudo جعل التثبيت

ثم قم بتثبيت nokogiri:
تثبيت gem nokogiri - - مع-xml2-include = / usr / local / Cellar / libxml2 / 2.7.8 / include / libxml2 - with-xml2-lib = / usr / local / Cellar / libxml2 / 2.7.8 / lib - مع-xslt-dir = / usr / local / Cellar / libxslt / 1.1.26 - مع-iconv-include = / usr / local / Cellar / libiconv / 1.13.1 / include - with-iconv-lib = / usr / local / Cellar / libiconv / 1.13.1 / lib

@ brennenf

عمل جيد. هذا فعلها من أجلي أيضًا.

تم نشر التعليمات على موقع nokogiri.org:

http://nokogiri.org/tutorials/installing_nokogiri.html#homebrew_09

شكرا لكم جميعا.

brennenf شكرا لهذا الخط
تثبيت gem nokogiri - - مع-xml2-include = / usr / local / Cellar / libxml2 / 2.7.8 / include / libxml2 - with-xml2-lib = / usr / local / Cellar / libxml2 / 2.7.8 / lib - مع-xslt-dir = / usr / local / Cellar / libxslt / 1.1.26 - مع-iconv-include = / usr / local / Cellar / libiconv / 1.13.1 / include - with-iconv-lib = / usr / local / Cellar / libiconv / 1.13.1 / lib

brennenf حصل الإصلاح الخاص بك على "تم تثبيت nokogiri-1.5.2 بنجاح" ولكن عندما أقوم بتشغيل تثبيت الحزمة في تطبيق Rails الخاص بي ، لا يزال يتعذر تشغيله: "حدث خطأ أثناء تثبيت nokogiri (1.5.2) ، ولا يمكن لـ Bundler المتابعة.
تأكد من نجاح gem install nokogiri -v '1.5.2' قبل التجميع. فشل أيضًا تثبيت gem nokogiri -v '1.5.2 "ملاحظة". هل هناك أي شخص آخر يعمل في هذا؟

ttringas - يرجى إرسال بريد إلكتروني إلى nokogiri-talk. هذه القضية تتعلق بـ nokogiri 1.4.4 وقد أغلقت منذ شهور.

مرحبا أي تحديثات على Mountain Lion؟
لا يمكنني إنهاء التثبيت.

لقد قمت بتحديث المسار المذكور في صفحة تثبيت nokogiri:

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

هذا ما لدي في المقابل: https://gist.github.com/3186643

polarblau انظر من لديه مشاكل الآن: D (أنا)

قد يساعد ولكن يبدو أن "النظام البيئي" RVM يبدو عربات التي تجرها الدواب بعد التحديث لأسد الجبل. أقوم بإزالة .rvm وتثبيت rvm باستخدام http://unfiniti.com/software/mac/jewelrybox/ وهو يعمل الآن ولكن لدي تحذير يقول:
WARNING: Nokogiri was built against LibXML version 2.8.0, but has dynamically loaded 2.7.8

نفس الشيء هنا ، إعادة تثبيت روبي كانت الحيلة (لست متفاجئًا حقًا - هذا مأزق شائع جدًا)

pietia ؛) وآخرون. بعض الأفكار في SO، FYI - http://stackoverflow.com/questions/5528839/installing-nokogiri-fails-libiconv-missing .

polarblau ، إلى وقت متأخر! لقد قرأت ذلك بالفعل ؛)

للحصول على التثبيت يعمل على Mountain Lion الذي تمت ترقيته حديثًا ، كان علي إزالة حزم rvm المثبتة مسبقًا (الموجودة في $ rvm_path / usr) ، وأعد إنشاء Ruby 1.9.3 ، ثم نجح تثبيت gem nokogiri. انظر https://rvm.io/packages/

أنا على جبل الأسد. عملت إعادة تثبيت روبي بالنسبة لي.

التحقق من libxml / parser.h ... لا

libxml2 مفقود.

لقد اكتشفت أن هناك حاجة إلى خطوة إضافية واحدة لحل ما ورد أعلاه لـ Homebrew 0.9 على نظام التشغيل Mac OS X 10.8 Mountain Lion وذلك لإنشاء رابط "/usr/bin/gcc-4.2":

قم بتثبيت الشراب libxml2 libxslt
رابط الشراب libxml2 libxslt
wget http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.13.1.tar.gz
tar xvfz libiconv-1.13.1.tar.gz
القرص المضغوط libiconv-1.13.1
./configure --refix = / usr / local / Cellar / libiconv / 1.13.1
صنع
sudo جعل التثبيت
sudo ln -s / usr / bin / gcc /usr/bin/gcc-4.2
تثبيت gem nokogiri - - مع-xml2-include = / usr / local / Cellar / libxml2 / 2.8.0 / include / libxml2 - with-xml2-lib = / usr / local / Cellar / libxml2 / 2.8.0 / lib - مع-xslt-dir = / usr / local / Cellar / libxslt / 1.1.26 - مع-iconv-include = / usr / local / Cellar / libiconv / 1.13.1 / include - with-iconv-lib = / usr / local / Cellar / libiconv / 1.13.1 / lib

brax4444 شكرا جزيلا ، أنت منقذ للحياة !! عملت بشكل مثالي مع إضافة sudo في الأمر الأخير بسبب الخطأ:

خطأ: أثناء تنفيذ الأحجار الكريمة ... (Errno :: EPERM)
العملية غير مسموح بها - ~ / .rvm / gems / ruby-1.9.3-p194 / gems / nokogiri-1.5.5 / .autotest

brax4444 هو الرجل! شكرا

أتساءل عما إذا كان شخص ما يمكنه مساعدة شخص مبتدئ:

تشغيل Mountain Lion 10.8.2 w / Homebrew.

بدأت مع nokogiri 1.5.2 - تم فقدان libiconv النموذجي.

بين هذا الموضوع ، وتحديداً Brax4444 ودورة التثبيت على nokogiri: http://nokogiri.org/tutorials/installing_nokogiri.html for Homebrew .9 بقيت مع FUBAR التالي:

لدي الآن nokogiri 1.5.5 حيث تبحث القضبان عن 1.5.2

ما زلت غير قادر على تصحيح مشكلة libiconv على الرغم من ساعات لا تحصى.

لم يعد بإمكانه تنفيذ أوامر القضبان بسبب فقدان جوهرة> nokogiri: 1.5.2

حاول تثبيت الأحجار الكريمة (التي ستكون 1.5.5) أو القضبان الجديدة (أحاول أي شيء في هذه المرحلة ... عد بالخطأ التالي الآن: خطأ: أثناء تنفيذ الأحجار الكريمة ... (Errno :: EPERM)
العملية غير مسموح بها - /usr/local/rvm/gems/ruby-1.9.3-p194/gems/nokogiri-1.5.5/.autotest

يمكن لأي شخص أن ينقذني؟ لا بد لي من تشغيل التطبيق غدا.

أهلا!

شكرا لطرح هذا السؤال! طلبك للحصول على المساعدة باستخدام Nokogiri لن يمر دون إجابة!

ومع ذلك ، تم إغلاق هذه المشكلة ، ويتم حجز مشكلات Github في Nokogiri للإبلاغ عن الأخطاء أو إرسال التصحيحات. إذا طرحت سؤالك على القائمة البريدية ، فإن فريق Nokogiri يعد بأن شخصًا ما سيقدم لك إجابة في الوقت المناسب.

إذا كنت ترغب في قراءة مبررات Team Nokogiri لهذه السياسة ، فيرجى الانتقال إلى http://bit.ly/nokohelp.

شكرا جزيلا لتفهمك! وشكرًا لك على استخدام Nokogiri.

brax4444 ، شكرًا جزيلاً ، لقد ساعدتني خطواتك في حل مشكلة مشابهة لتثبيت جوهرة pg.

التعليمات الموجودة على الصفحة http://nokogiri.org/tutorials/installing_nokogiri.html أصبحت الآن قديمة بسبب تثبيت حزمة إصدارات أحدث (حاليًا libxml2 عند 2.9.0 و libxslt عند 1.1.28).

تضمين التغريدة

شكرًا لتعليقك ، ولكن تم إغلاق هذه المشكلة منذ فترة طويلة الآن.

إذا كان لديك تحديث لمستندات تثبيت nokogiri ، فيمكنك إما إرسال طلب سحب إلى:

https://github.com/sparklemotion/nokogiri.org-tutorials

أو يمكنك تحديد المشكلة والحلول بشكل أكثر وضوحًا (لا يقوم الحزم بتثبيت libxml2 أو libxslt ... هل تقصد تخمير؟ أو منافذ mac؟ أو ...؟) في إصدار جديد وسنقوم بمعالجته عندما نستطيع يؤكد بشكل مستقل.

شكرا لاستخدام نوكوجيري!

تضمين التغريدة سوف تبتعد.

شكرا للمشاركة في تأليف Nokogiri.

كنت بحاجة أيضًا إلى تثبيت XCode بالفعل من أجل تشغيل هذا.

كنت بحاجة إلى تثبيت أدوات مطور سطر الأوامر.

dentarg شكرًا ، لقد واجهت نفس المشكلة ، بعد استعادة جهاز Mac الخاص بي ، لم يتم تثبيت أدوات مطور سطر الأوامر.
افعل ذلك باستخدام هذا الأمر "xcode-select --install"

استخدم https://github.com/Homebrew/homebrew-dupes/blob/master/libiconv.rb

علامة التبويب المشروب البيرة / المغفلين
الشراب تثبيت libiconv

وربما هذا:
حزمة التكوين build.nokogiri - استخدام مكتبات النظام

لكن dunno إذا كان هذا يعمل

شكرا @ brax4444 ، نصيحتك عملت معي أيضا!

لقد استخدمت iconv الأصلي. لا تحتاج إلى ربط libxml2 / libxslt.

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

شكرا @ باتريكسيرينو.

حزمة التكوين build.nokogiri - استخدام مكتبات النظام
هذا عمل لي

شكرا لك ، brax4444! هذا السطر الواحد (gcc link) فعل ذلك من أجلي أيضًا!

راجع التعليمات المحدثة: https://github.com/sparklemotion/nokogiri/issues/442#issuecomment -53793550

ملحوظة: إذا كنت تقوم باستعراض كل هذه المنشورات واحدًا تلو الآخر لتجربة كل شيء ، فأنت تفعل ذلك بشكل خاطئ. جميع النصائح الخاصة بـ "رابط التحضير" (بما في ذلك تلك المنشورات) هي نصيحة سيئة. كل النصائح الموجهة إلى "--use-system-libraries" هي أيضًا نصيحة سيئة. STAAAHHHP. تخطي إلى النهاية.

أعتقد أن هذا عمل معي:

brew tap homebrew/dupes
brew install libiconv
brew link libiconv --force
gem install nokogiri -v 1.6.3.1 -- --with-iconv-dir=/usr/local

النقطة المهمة هنا هي أن libiconv يجب أن يكون 'brew link'd into / usr / local / include. من خلال النقر على "المغفلين" ، ستتسبب في تجاوز نظام lib ، لذا تحتاج إلى --force ذلك. ثم تحتاج فقط إلى إخبار nokogiri بالبحث عن /usr/local للبحث عن مسار iconv لتمريره إلى libxml2 المضمن عند إنشاء ذلك. باستخدام --use-system-libraries ، فإن ما يفعله الناس هو تجاوز الحاجة إلى العثور على هذه المكتبة من أجل تمريرها إلى بنية libxml2 الداخلية.

تتمثل إحدى طرق إصلاح ذلك في جعل البيرة المحلية تضيف تهيئة pkg-config لـ libiconv ، منذ ذلك الحين سيكون nokogiri extconf.rb قادرًا على العثور عليه.

هناك طريقة أخرى تتمثل في الكود الثابت /usr/local/include كمسار بحث هنا:

https://github.com/sparklemotion/nokogiri/blob/983ff1f2962c7f9fd20a6fc4c18784eccfff21c0/ext/nokogiri/extconf.rb#L132 -L133

لقد حاولت معرفة كيفية استخراج / usr / local / تضمين خارج المسار في mkmf روبي واللعنة إذا كان بإمكاني معرفة كيفية القيام بذلك. طبقات المراوغة في mkmf عميقة جدًا. من المؤكد أن طريقة find_header () في mkmf يمكنها العثور على iconv.h ، لكنني لا أعرف كيفية استخراج المعلومات حول المسار الذي تجده فيه. سيكون هذا في الواقع هو الإصلاح الصحيح لـ nokogiri من أجل العثور على ملف الرأس في بنفس الطريقة التي يستطيع بها mkmf العثور على ملف الرأس.

يبدو أن حقيقة عدم تمكن nokogiri من العثور على ملف رأسي بسيط في / usr / local / include دون الحاجة إلى تهيئة pkg-config خارجية ، معطلة. أستطيع أن أرى كيف أن الترميز الثابت للمسار قبيح ، لكنني لا أعرف كيف أسأل mkmf عن الدليل find_header الذي يعثر على الرأس في ...

يبدو أيضًا أن هناك خطأ هنا حيث يمكن لـ dir_config () إرجاع مصفوفة من ':' - مسارات منفصلة بدلاً من مصفوفة من مسارين ، ولكن لا يبدو أن لها أي تأثير على حل هذه المشكلة:

https://github.com/sparklemotion/nokogiri/blob/983ff1f2962c7f9fd20a6fc4c18784eccfff21c0/ext/nokogiri/extconf.rb#L126 -L130

@ lamont-granquist إرشادات رائعة ، وأفضل حتى إذا قمت بتغيير علامة التبويب للنقر :-)

ericbrooke lol ، لقد قمت بنسخ ذلك من ملصق سابق ... ثابت الآن ...

أعتقد أنني جربت كل أمر مذكور في هذا المنشور وما زلت أواجه هذا:

sudo 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-lib=/usr/lib --with-iconv-include=/usr/local/include/
Building native extensions with: '--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-lib=/usr/lib --with-iconv-include=/usr/local/include/'
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.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-lib=/usr/lib --with-iconv-include=/usr/local/include/
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
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.

ليس لدي أي فكرة عن سبب اكتشاف iconv.h ، ولكن لم يتم اكتشاف iconv_open() (تم تعريفه في هذا الملف). لقد رأيت أن شخصًا ما واجه نفس المشكلة تمامًا مؤخرًا - http://stackoverflow.com/questions/24735534/nokogiri-install-fails-iconv-doesnt-work-osx

هل رأى أي شخص هذه القضية؟

راجع التعليمات المحدثة: https://github.com/sparklemotion/nokogiri/issues/442#issuecomment -53793550

Reinmar هل يمكنك تجربة ما اقترحته. خاصه:

  1. brew link libiconv --force ثم تحقق من وجود ls -la /usr/local/include/iconv.h
  2. تحقق أيضًا من وجود ls -la /usr/local/lib/libiconv.dylib
  3. ثم ببساطة: gem install nokogiri -- --with-iconv-dir=/usr/local

جميع المسارات التي تستخدمها للدلائل التي تم إصدارها في أعماق "قبو" البيرة المنزلية نوعًا ما مروعة وهشة وأنا لست مندهشًا جدًا لأنها لا تعمل بشكل صحيح.

لقد استخدمت هذه التعليمات http://nokogiri.org/tutorials/installing_nokogiri.html بحيث تكون المسارات متشابهة (تختلف الإصدارات).

piotrus<strong i="7">@macus</strong> ~> brew link libiconv --force
Warning: Already linked: /usr/local/Cellar/libiconv/1.14
To relink: brew unlink libiconv && brew link libiconv
piotrus<strong i="8">@macus</strong> ~> ls -la /usr/local/include/iconv.h
lrwxr-xr-x  1 piotrus  admin  39 Jul 29 19:47 /usr/local/include/iconv.h -> ../Cellar/libiconv/1.14/include/iconv.h
piotrus<strong i="9">@macus</strong> ~> ls -la /usr/local/lib/libiconv.dylib
lrwxr-xr-x  1 piotrus  admin  42 Jul 29 19:47 /usr/local/lib/libiconv.dylib -> ../Cellar/libiconv/1.14/lib/libiconv.dylib
piotrus<strong i="10">@macus</strong> ~> gem install nokogiri -- --with-iconv-dir=/usr/local
ERROR:  While executing gem ... (Gem::FilePermissionError)
    You don't have write permissions for the /Library/Ruby/Gems/2.0.0 directory.
piotrus<strong i="11">@macus</strong> ~> sudo gem install nokogiri -- --with-iconv-dir=/usr/local
Password:
Building native extensions with: '--with-iconv-dir=/usr/local'
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-iconv-dir=/usr/local
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

ربما سأحاول تحديث Ruby / gem ...: | إنه تخمين أعمى بالرغم من ذلك.

حسنًا ... لم يساعد تحديث gem . بعد ذلك ، بعد تثبيت rvm (ولكن قبل أن أقوم بتحديث Ruby من 2.0.0 إلى 2.1. *) ، قررت إعادة تشغيل Terminal وعن طريق الخطأ قمت بالتبديل من iterm إلى المحطة القياسية و ... عمل تثبيت nokogiri مع نفس الأمر الذي لم يعمل من قبل. لذلك إما اضطررت إلى إعادة تشغيل الجهاز (على الرغم من أنني كنت أستخدم علامات تبويب maany في iterm سابقًا) أو كانت هناك مشكلة ناتجة عن xterm. ليس لدي فكرة ، ولكن ربما سيساعد شخص ما.

بالإضافة إلى إجابة @ lamont-granquist ، يمكنك تخطي تثبيت الأحجار الكريمة إذا كنت تستخدم حزمة وتشغيل:

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

بعد اتباع تعليمات @ lamont-granquist:

brew tap homebrew/dupes
brew install libiconv
brew link libiconv --force
gem install nokogiri -v 1.6.3.1 -- --with-iconv-dir=/usr/local

وواجهت نفس المشكلة مثل Reinmar ، وجدت اقتراحًا على StackOverflow ، وقمت بدمجه مع الاقتراحات الأخرى هنا ، مما أدى إلى:

NOKOGIRI_USE_SYSTEM_LIBRARIES=1 sudo gem install nokogiri -- --use-system-libraries --with-iconv-dir="$(brew --prefix libiconv)" --with-xml2-include=/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/usr/include/libxml2

لقد نجح ذلك أخيرًا بالنسبة لي ، وآمل أن يساعدك ذلك في Reinmar . لماذا يعمل هذا خارج عن إرادتي _ [تعليقات مقيدة حول نظام Apple البيئي المغلق هنا] _. شكرا جميعا لتقاسم الأساليب الخاصة بك.

اضطررت إلى التخلص من المشروب المنزلي وإعادة تثبيته من الصفر ثم نجح

doublerebel أعتقد أنك قد تحتاج إلى إعادة تثبيت xcode و / أو استخدام xcode-select. ما فعلته هو كل أنواع الخلط على أي حال ...

يبدو أنه مع الإصدار الحالي من البيرة المنزلية ، تمكنت من التعامل مع نسخة مبسطة قليلاً لما توصل إليه @ lamont-granquist:

brew tap homebrew/dupes
brew install libiconv
gem install nokogiri -v 1.6.3.1 -- --with-iconv-dir=/usr/local/opt/libiconv

لا brew link --force libiconv ...

هذا منطقي jacobvosmaer ، ربما يجب تحديث المستندات لاستخدام ذلك.

(ربما أسقط -v 1.6.3.1 ، رغم ذلك)

كنت أقوم بتحديث المستندات ولكني مشتت انتباهي الآن بترميز آخر ...

بعد يوم كامل من العمل على هذه المشكلة ، تجدر الإشارة إلى أن حل doublerebel أعلاه هو أول شيء يعمل

راجع التعليمات المحدثة: https://github.com/sparklemotion/nokogiri/issues/442#issuecomment -53793550

قد يساعد ذلك مستخدمي Xcode 5.1.1:

 sudo xcode-select -s /Applications/Xcode.app/Contents/Developer

راجع التعليمات المحدثة: https://github.com/sparklemotion/nokogiri/issues/442#issuecomment -53793550

أيضًا ، أقترح التأكد من تثبيت Xcode 5.1.1 (و / أو إعادة تثبيته) ثم إعادة تثبيت "أدوات سطر الأوامر لـ Xcode" هنا: https://developer.apple.com/downloads/

ثم افعل:

sudo xcode-select -s /Applications/Xcode.app/Contents/Developer
brew tap homebrew/dupes
brew uninstall libiconv
brew install libiconv
gem install nokogiri -- --with-iconv-dir=/usr/local/opt/libiconv

يبدو أن تحديثات واستعادة Mac OSX تحذف Xcode و homebrew لسبب ما. أود أيضًا أن أشير إلى / usr / local / opt / libiconv أفضل من فرض ربطه بـ / usr / local / include.

@ lamont-granquist شكرًا على الحلول الخاصة بك. لقد قمت بتطبيق كل واحد وخاصتك هو الشيء الذي يناسبني أخيرًا.

تشغيل 'brew uninstall libxml2 libxslt' ثم 'sudo gem install nokogiri' تم إصلاحه لي

أثناء استخدام RVM وإنشاء مجموعة أحجار جديدة ، كان علي القيام بما يلي:

brew uninstall libiconv
brew install libiconv
gem install nokogiri -- --with-iconv-dir=/usr/local/opt/libiconv

@ lamont-granquist شكرًا جزيلاً على الإصلاح. عملت من أجلي.

@ lamont- granquistericbrooke شكرا لك. الذي قتلها.

تحرير: حتى تعليمات أبسط: https://github.com/sparklemotion/nokogiri/issues/442#issuecomment -54091434

لذا دمج الأجزاء الجيدة من سؤال stackoverflow في هذه الإجابة:

قم بتشغيل هذا لتثبيت أحدث Xcode و Xcode Command Line Tools (حدد "Get Xcode" من مربع الحوار):

sudo xcode-select --install

ثم قم بتحديث libiconv في البيرة المنزلية:

brew tap homebrew/dupes
brew update
brew uninstall libiconv
brew install libiconv

قم بتثبيت nokogiri:

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

يجب أن يعمل ذلك مع الجميع على 10.9 + homebrew

أحب بعض ردود الفعل على ^ ^ ^ أن

عملت لي ، شكرا!

-كريس

يوم الخميس ، 28 آب (أغسطس) 2014 الساعة 4:40 مساءً ، lamont-granquist [email protected]
كتب:

أحب بعض ردود الفعل على ^ ^ ^ أن

-
قم بالرد على هذا البريد الإلكتروني مباشرة أو قم بعرضه على GitHub
https://github.com/sparklemotion/nokogiri/issues/442#issuecomment -53794057
.

بدافع الفضول ، ما هو brew uninstall libiconv ؟ هل هذا يعني أن لديك بالفعل libiconv مثبتًا بطريقة ما؟

knu نعم ، فهذا يعني أنك تستخدم Mac OsX وقمت بتثبيت libiconv عبر Homebrew وليس MacPorts. كلاهما مديرا حزم. إذا لم تكن متأكدًا مما إذا كان الشراب مثبتًا ، فقم فقط بكتابة brew in terminal ، إذا حصلت على هذا الرد:

Example usage:
  brew [info | home | options ] [FORMULA...]
  brew install FORMULA...
  brew uninstall FORMULA...
  brew search [foo]
  brew list [FORMULA...]
  brew update
  brew upgrade [FORMULA...]
  brew pin/unpin [FORMULA...]

Troubleshooting:
  brew doctor
  brew install -vd FORMULA
  brew [--env | config]

Brewing:
  brew create [URL [--no-fetch]]
  brew edit [FORMULA...]
  open https://github.com/Homebrew/homebrew/wiki/Formula-Cookbook

Further help:
  man brew
  brew home

أنت تعلم أن البيرة مثبتة.

brew list

سيعرض جميع الحزم التي قمت بتثبيتها بما في ذلك libiconv

ericbrooke أعني ، لم أرى الهدف من القيام بـ brew uninstall libiconv مباشرة بعد brew tap homebrew/dupes عندما يتم العثور على libiconv فقط بعد النقر على المغفلين لأنه ليس في الريبو القياسي. هل هو موجود فقط في حالة ، كما هو الحال عند تعطل تثبيت البيرة الخاصة بك بطريقة ما؟

أيضًا ، كما تعلم من وجود libiconv في "dupes" ، فإن iconv جزء من OS X + Xcode لا يجب أن تضيفه عبر الشراب.

لا أستخدم Homebrew ، لكن يجب ألا يلمس Homebrew أي شيء ضمن / usr / {include، lib} ، أليس كذلك؟ أم أن إعادة تثبيت libiconv عبر الشراب محاولة لاستعادة تلك التي تم كسرها؟

على جهاز MacBook Pro جديد مع تثبيت أدوات vanilla Mountain Lion + Xcode + Command Line ، أرى /usr/include/iconv.h و /usr/lib/libconv.h ، لذلك كنت أتساءل ما سبب عدم وجود هؤلاء يمكن أن تكون الملفات.

@ lamont-granquist شكرا.

فعلت ما سجلته. واجهت مشكلة إذن في:
ليس لديك أذونات كتابة للدليل /Library/Ruby/Gems/2.0.0.

يبدو أنني بحاجة إلى إصلاح rvm الخاص بي وبعد الخطوة التالية تم تثبيته ومتابعة عملية تثبيت الحزمة الخاصة بي.
تثبيت rvm 2.1.2
استخدام rvm 2.1.2
تحديث جوهرة - النظام

knu نعم في كل مرة أقوم فيها بترقية O / S أو الاستعادة من آلة الزمن ، يبدو أنه يتخلص من البيرة المنزلية ويجب إعادة تثبيت كل شيء. هذه التعليمات متشائمة قدر الإمكان. إذا كان لدى شخص ما تثبيت xcode نظيف عاقل وتم تثبيت libiconv بشكل صحيح في البيرة ، فإن أمر تثبيت الأحجار الكريمة الأخير هو كل ما يلزم.

لذلك ، اتضح أن /usr/local/include/iconv.h سوف #define iconv_open إلى libiconv_open ولسبب ما ، يلتقط clang ملف رأس البيرة في / usr / local / include over / usr / include ثم يحاول الربط ضد /usr/lib/libiconv.dylib. الحيلة هي إزالة ملف الرأس iconv.h الذي تم إنشاؤه بفرض ربط libiconv.

TL ؛ DR: التعليمات المسبقة حول كيفية "إصلاح" هذه المشكلة (بما في ذلك مشكلتي) تزيد الأمر سوءًا.

إذن ، الإرشادات المحدثة حول كيفية إصلاح تثبيت mac الخاص بك:

تأكد من تثبيت Xcode والأدوات المساعدة لسطر الأوامر بشكل صحيح. يعمل هذا على إصلاح المشكلات التي لم يكن لدي فيها ملف رأس /usr/include/iconv.h. حدد "Get Xcode" من مربع الحوار:

sudo xcode-select --install

قد ترغب في تحديث homebrew و libiconv في حالة ما إذا أصبح قديمًا (وفي حالة تثبيت libiconv الخاص بك في البيرة منذ وقت طويل جدًا). ربما يكون هذا اختياريًا تمامًا لأننا لن نقوم بالربط ضد libiconv المنزلي على الإطلاق الآن:

brew update
brew tap homebrew/dupes
brew uninstall libiconv
brew install libiconv

لا تقم بربط libiconv ، لذلك لا يتجاوز نظام libiconv (إذا كان هذا يعطيك `` لا يوجد مثل هذا البرميل '' فلا بأس بذلك ، أي خطأ آخر وربما تريد العودة وترقية homebrew و libiconv):

brew unlink libiconv

بناء nokogiri:

gem install nokogiri

@ lamont-granquist شكرا جزيلا !!

@ lamont-granquist Dunno لماذا ، لكن في تعليقك الأخير ، gem install nokogiri لم ينجح معي.
بدلاً من ذلك ، بعد اتباع جميع الخطوات مثل:

brew update
brew tap homebrew/dupes
brew uninstall libiconv
brew install libiconv
brew unlink libiconv

عمل لي gem install nokogiri -- --with-iconv-dir=/usr/local/opt/libiconv .

أنا على 10.9 ، مع rvm ، إذا كان هذا يساعد.

@ lamont-granquist شكرًا على التحقيق الرائع! أعتقد أنني سأحاول إعادة إنتاج المشكلة وإيجاد "حل" لذلك.

SeanWangDev في مكان ما لديك iconv.h آخر يتم التقاطه أولاً واستخدامه. قد يكون MacPorts واحدًا بدلاً من Homebrew.

نعم أعتقد ذلك. يوجد واحد في

/usr/local/Cellar/libiconv/1.14/include/iconv.h

واحد آخر في

/usr/include/iconv.h

الأحدث هو الإصدار السابق.
شكرا @ lamont-granquist

/usr/include/iconv.h جيد ، هذا جزء من Xcode ، الأول هو البيرة المنزلية والذي يتم إخفاؤه بعيدًا في "القبو" وهو أيضًا جيد. إذا لم يكن هناك أي شيء في / opt / local / include أو أيًا كان ، فإن تخميني هو أن /usr/lib/libiconv.dylib قد تعرض للتلف بطريقة ما؟

@ lamont-granquist هذا قليلاً من أعماقي الآن. كيف يمكننا معرفة أن libiconv.dylib تالف؟
عندما أفعل ls -al /usr/lib/libiconv* ، تكون النتيجة هي التالية

xxxx  1 xxx  xxx       16 10  5  2013 /usr/lib/libiconv.2.4.0.dylib -> libiconv.2.dylib
xxxx  1 xxx  xxx  2088992 10  5  2013 /usr/lib/libiconv.2.dylib
xxxx  1 xxx  xxx       20 10  5  2013 /usr/lib/libiconv.dylib -> libiconv.2.4.0.dylib

نعم ، هذا يبدو جيدًا ، هذا ملكي:

% ls -al /usr/lib/libiconv*
lrwxr-xr-x  1 root  wheel       16 Feb 26  2014 /usr/lib/libiconv.2.4.0.dylib@ -> libiconv.2.dylib
-r-xr-xr-x  1 root  wheel  2088992 Feb 26  2014 /usr/lib/libiconv.2.dylib*
lrwxr-xr-x  1 root  wheel       20 Feb 26  2014 /usr/lib/libiconv.dylib@ -> libiconv.2.4.0.dylib

ماذا عن /opt/local/lib/libiconv.dylib أو /opt/local/include/iconv.h ؟ أي من هؤلاء يمكن أن يسبب مشاكل.

@ lamont-granquist
كلا ، ليس لدي دليل / opt /. هل هذا ما نبحث عنه؟

-r--r--r--+ 1 User  admin  1052128  9  4 11:30 /usr/local/Cellar/libiconv/1.14/lib/libiconv.2.dylib
-rw-r--r--+ 1 User  admin  1658  9  4 11:22 /usr/local/Library/Taps/homebrew/homebrew-dupes/libiconv.rb
-r-xr-xr-x  1 root  wheel  2088992 10  5  2013 /usr/lib/libiconv.2.dylib

ملفات iconv.h هي فقط هذين:

/usr/local/Cellar/libiconv/1.14/include/iconv.h
/usr/include/iconv.h

لا ، هذا كل شيء رائع. بقدر ما أستطيع أن أرى ، يجب أن تكون قادرًا على "تثبيت nokogiri" دون أي حجج أخرى ....

أردت فقط إضافة أن gem install nokogiri -v 1.6.3.1 -- --with-iconv-dir=/usr/local يعمل جيدًا بالنسبة لي. عند استخدام الحزم كان علي أن أفعل bundle config build.nokogiril --with-iconv-dir=/usr/local

@ lamont-granquist نعم ، gem install nokogiri يعمل بشكل جيد الآن. لكن هذا الشرط مختلف. هذه المرة تم تثبيت nokogiri مسبقًا عن طريق 'gem install nokogiri - --with-iconv-dir = / usr / local / opt / libiconv'. في السابق ، عندما لم يكن لدي nokogiri مثبتًا ، لن يعمل "gem install nokogiri".
هل من الممكن أن يؤدي تشغيل 'gem install nokogiri - --with-iconv-dir = / usr / local / opt / libiconv' إلى تغيير بعض الملفات أو إضافة بعض الملفات مثل libiconv.dylib أو iconv.h ؟

SeanWangDev : +1:

OS X 10.9.4 مافريكس.
يا رفاق الرجاء مساعدتي. حاولت بكل طريقة أعلاه. لا أحد منهم يعمل لدي. مكدسة على gem install nokogiri مع / بدون وسيطات ، ما زلت أتلقى خطأ:

$ جوهرة تثبيت nokogiri
بناء ملحقات أصلية. وهذا يمكن أن يستغرق بعض الوقت...
بناء nokogiri باستخدام المكتبات المعبأة.
خطأ: خطأ في تثبيت nokogiri:
خطأ: فشل إنشاء ملحق أصلي للجوهرة.

/usr/local/rvm/rubies/ruby-2.0.0-p353/bin/ruby extconf.rb

بناء nokogiri باستخدام المكتبات المعبأة.
التحقق من iconv.h ... * فشل extconf.rb *
تعذر إنشاء Makefile لسبب ما ، وربما نقص ضروري
المكتبات و / أو الرؤوس. تحقق من ملف mkmf.log لمزيد من التفاصيل. يمكنك
بحاجة إلى خيارات التكوين.

خيارات التكوين المقدمة:
- مع opt-dir
- دون اختيار دير
- مع خيار تضمين
- بدون-opt-include = $ {opt-dir} / include
- with-opt-lib
- بدون-opt-lib = $ {opt-dir} / lib
- مع جعل بروغ
- دون جعل بروغ
- srcdir =.
- كوردير
- Ruby = / usr / local / rvm / ياقوت / روبي-2.0.0-p353 / بن / روبي
--مساعدة
--ينظف
--استخدام-نظام-مكتبات
- التمكين ثابت
--تعطيل ثابت
--مع زليب دير
- بدون زليب دير
- مع zlib تشمل
- بدون-zlib-include = $ {zlib-dir} / include
--مع زليب ليب
- بدون-zlib-lib = $ {zlib-dir} / lib
- تمكين عبر البناء
- تعطيل عبر البناء
/usr/local/rvm/rubies/ruby-2.0.0-p353/lib/ruby/2.0.0/mkmf.rb:434:in try_do': The compiler failed to generate an executable file. (RuntimeError) You have to install development tools first. from /usr/local/rvm/rubies/ruby-2.0.0-p353/lib/ruby/2.0.0/mkmf.rb:565:in try_cpp '
من /usr/local/rvm/rubies/ruby-2.0.0-p353/lib/ruby/2.0.0/mkmf.rb:1044:in block in have_header' from /usr/local/rvm/rubies/ruby-2.0.0-p353/lib/ruby/2.0.0/mkmf.rb:895:in block in check_for '
من /usr/local/rvm/rubies/ruby-2.0.0-p353/lib/ruby/2.0.0/mkmf.rb:340:in block (2 levels) in postpone' from /usr/local/rvm/rubies/ruby-2.0.0-p353/lib/ruby/2.0.0/mkmf.rb:310:in open '
من /usr/local/rvm/rubies/ruby-2.0.0-p353/lib/ruby/2.0.0/mkmf.rb:340:in block in postpone' from /usr/local/rvm/rubies/ruby-2.0.0-p353/lib/ruby/2.0.0/mkmf.rb:310:in open '
من /usr/local/rvm/rubies/ruby-2.0.0-p353/lib/ruby/2.0.0/mkmf.rb:336:in postpone' from /usr/local/rvm/rubies/ruby-2.0.0-p353/lib/ruby/2.0.0/mkmf.rb:894:in check_for '
من /usr/local/rvm/rubies/ruby-2.0.0-p353/lib/ruby/2.0.0/mkmf.rb:1043:in have_header' from extconf.rb:103:in have_iconv؟ '
من extconf.rb: 148: في block (2 levels) in iconv_prefix' from extconf.rb:90:in preserving_globals '
من extconf.rb: 143: في block in iconv_prefix' from extconf.rb:120:in each_iconv_idir '
من extconf.rb: 137: في iconv_prefix' from extconf.rb:428:in كتلة في

"
من extconf.rb: 161: في block in process_recipe' from extconf.rb:154:in انقر '
من extconf.rb: 154: بـ process_recipe' from extconf.rb:423:in
"

ستبقى ملفات Gem مثبتة في /usr/local/rvm/gems/ruby-2.0.0-p353/gems/nokogiri-1.6.3.1 للفحص.
تم تسجيل النتائج في /usr/local/rvm/gems/ruby-2.0.0-p353/gems/nokogiri-1.6.3.1/ext/nokogiri/gem_make.out

تحقق من أن لديك هذه الملفات:

% ls -la /usr/include/iconv.h
-rw-r--r--  1 root  wheel  7981 Jul 29 15:32 /usr/include/iconv.h
% ls -la /usr/lib/libiconv.*
lrwxr-xr-x  1 root  wheel       16 Feb 26  2014 /usr/lib/libiconv.2.4.0.dylib@ -> libiconv.2.dylib
-r-xr-xr-x  1 root  wheel  2088992 Feb 26  2014 /usr/lib/libiconv.2.dylib*
lrwxr-xr-x  1 root  wheel       20 Feb 26  2014 /usr/lib/libiconv.dylib@ -> libiconv.2.4.0.dylib

إذا لم تقم بذلك ، فاستخدم sudo xcode-select --install و / أو انتقل إلى موقع تنزيل مطور Apple وقم يدويًا بإلغاء تثبيت وإعادة تثبيت xcode وأدوات سطر أوامر xcode حتى يتم تثبيت هذه الملفات.

ثم إذا كنت تستخدم البيرة المنزلية ، فقم بتحديث البيرة الخاصة بك و unlink the libiconv

brew update
brew tap homebrew/dupes
brew uninstall libiconv
brew unlink libiconv
brew install libiconv

تحقق من عدم وجود /usr/local/include/iconv.h:

% ls -la /usr/local/include/iconv.h
ls: /usr/local/include/iconv.h: No such file or directory

تحقق أيضًا من أنه ليس لديك /opt/local/include/iconv.h

% ls -la  /opt/local/include/iconv.h
ls: /opt/local/include/iconv.h: No such file or directory

إذا كان لديك هذا الملف ، فقد قمت بتثبيت iconv من macports ، فمن الأفضل أن تتخلص من هذا.

ثم حاول:

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

(توقف عندما تجد الشخص المناسب)

إذا فشل كل شيء آخر:

brew link --force libiconv
gem install nokogiri -- --with-iconv-dir=/usr/local

يجب أن يعمل شيء ما هناك.

@ lamont-granquist: +1:

@ lamont-granquist شكرًا لتعليماتك ، لقد تلقيت ما يجري وبدأت العمل على إصلاح. ومع ذلك ، ما زلت غير قادر على إعادة إنتاج المشكلة على أي من أجهزة Mac الخاصة بي ، لذا لا توجد طريقة للتأكد مما إذا كان الإصلاح يعمل أم لا. هل يمكنك تقديم خطوات الإنجاب؟

حسنًا ، لقد حصلت على MBP هذا لمدة 3 سنوات وبعد ترقيتين لنظام التشغيل و 3 عمليات استعادة TM على الأقل ، اختفى /usr/include/iconv.h الخاص بي بطريقة ما. لذلك ، يمكن أن يتسبب إيقاف هذا الملف في حدوث المشكلة. الحل هو إعادة تثبيت xcode وأدوات سطر الأوامر بشكل صحيح.

أيضًا ، أثناء تصحيح أخطاء هذا الشيء الوحيد الذي يقترح الناس القيام به هو "تحضير رابط libiconv --force" بحيث يتم تثبيته في /usr/local/include/iconv.h - على الرغم من وجود تحذيرات ضخمة عند إجراء 'brew install libiconv' "و" brew link libiconv "أن هذه فكرة سيئة. تكمن المشكلة في أنه يمكنك التقاط رمز v.h أثناء التقاط النظام /usr/lib/libiconv.dylib وهذا له تعارض على الفور حول iconv_open () و libiconv_open () ويفشل في التجميع لأنهما مختلفان الإصدارات.

لست متأكدًا من وجود أي شيء لإصلاحه في هذه الحالات. تكمن المشكلة حقًا في تشويه نظام التشغيل لديك والحاجة إلى إعادته إلى شكل أكثر نقاءً.

هناك شيء واحد لا أفهمه وهو السبب في أن نظام البناء nokogiri سيجد ملفات /opt/local/include/iconv.h المثبتة على MacPorts. أنا لا أستخدم MacPorts ، لذلك لم يتم تصحيح ذلك ، ولكنه يسبب مشاكل مماثلة عندما يكون لدى homebrew iconv.h مرتبط مباشرة بـ / usr / local / include. إذا كان من الممكن جعل nokogiri يتوقف عن القيام بذلك ، فسيساعد الأشخاص الذين لديهم libiconv مثبتًا من MacPorts.

$ ls -la /usr/include/iconv.h

-rw-r - r - 1 عجلة جذر 7981 سبتمبر 11 11:32 / usr/include/iconv.h

ls -la /usr/lib/libiconv.*
lrwxr-xr-x 1 عجلة الجذر 16 سبتمبر 11 01:03 /usr/lib/libiconv.2.4.0.dylib -> libiconv.2.dylib
-r-xr-xr-x 1 عجلة جذر 2088992 سبتمبر 11 01:02 /usr/lib/libiconv.2.dylib
lrwxr-xr-x 1 عجلة الجذر 20 سبتمبر 11 01:03 /usr/lib/libiconv.dylib -> libiconv.2.4.0.dylib

تحديث الشراب
تم تحديث البيرة من 45e07c0e إلى e0dee399.
==> الصيغ المحدثة
android-ndk go lockrun pazpar2
اباتشي سبارك h2 mpd pktanon
جيرمان جوجو-كويكستارت ossp-uuid

$ brew tap البيرة / المغفلين
تحذير: تم الضغط عليه بالفعل!

إزالة تثبيت $ brew libiconv

يتم الآن إلغاء تثبيت /usr/local/Cellar/libiconv/1.13.1 ...

خطأ: تم رفض الإذن - /usr/local/Cellar/libiconv/1.13.1/bin/iconv

أنه يعطيني خطأ الإذن في تلك الخطوة

تحتاج إلى إصلاح جميع أذوناتك ضمن / usr / local

مهما كانت معلومات تسجيل الدخول الخاصة بك ، فأنت بحاجة إلى إصلاح التجار حتى لا يمتلك الجذر ملفات البيرة المنزلية تحت / usr / local:

اسم المستخدم الخاص بي هو "lamont" والذي يمكنني العثور عليه باستخدام الأمر id :

% id -nu
lamont

لإصلاح التجاعيد ، سأفعل:

% sudo chown -R lamont /usr/local

على الرغم من ذلك ، فأنت تريد أن تكون حذرًا جدًا مع هذا الأمر ، وتحقق مرة أخرى من أنك كتبت كل شيء بشكل صحيح وحصلت على اسم المستخدم الصحيح.

@ lamont-granquist ألا تثبت حزمة libiconv الخاصة بـ Homebrew /usr/local/lib/libiconv.dylib أثناء وضع /usr/local/include/iconv.h؟ ما لا أفهمه هو ما إذا تم التقاط /usr/local/include/iconv.h لماذا لم يتم /usr/local/lib/libiconv.dylib عند الربط. عادة عندما يكون -I / usr / local / include في CPPFLAGS -L / usr / local / lib يجب أن يكون في LDFLAGS.

بالنسبة للكسر البيئي ، يمكن أن يقترح نوكوجيري على الأقل (إعادة) تثبيت أدوات سطر الأوامر عندما يكون /usr/include/iconv.h مفقودًا في OS X.

الشراب فك الارتباط libiconv
خطأ: لا يوجد مثل هذا keg: / usr / local / Cellar / libiconv

لقد تجاهلت الرسالة واتبعت الخطوات التالية. لا نجاح

knu نعم ، لقد بحثت في ذلك وأعتقد أنني ضاعت في متاهة mkmf.rb الملتوية.

Ilovebarca rm -f /usr/local/include/iconv.h قد يساعد

@ lamont-granquist
كلا لم يساعد. راجع للشغل شكرا جزيلا لمحاولة مساعدتي.
هذا مجنون ، أنا جديد على نظام Mac وبدأت أكرهه :))

سأقوم بإجراء بعض التغييرات في عملية الكشف عن iconv وأضف فحصًا لفقد /usr/include/iconv.h على OS X إلى extconf.rb. هذا عمل قيد التنفيذ ، والمختبرين مرحب بهم!

لقد كنت أعالج مشكلات جيثب ، وتبادل المكدس ، وجوجل وما إلى ذلك ، والشيء الوحيد الذي نجح حتى الآن هو اقتراح @ lamont-granquist . الإعداد باستخدام:

OSX 10.9.5
rbenv

أتفهم أن الكثير من الأشخاص يتعرضون بطريقة ما لكسر في بيئة OS X الخاصة بهم ولا يلاحظون ذلك حتى. هناك مشكلة واحدة مفقودة في Xcode Command Line Tools والآخر هو Homebrew. سيحاول الإصدار التالي من nokogiri اكتشاف هذا الكسر قبل الدخول إلى البنية وتحذير المستخدم منه.

شكرا لدعمك!

شكرًا @ lamont-granquist ، لقد كنت أعاني من هذه المشكلة لمدة أسبوع الآن وأخيراً الحل الذي قدمته لإعادة تثبيت أعمال libiconv مرة أخرى ... وهذا يبعث على الارتياح !!!

jomz يعمل على نظام OSX 10.10. شكر: +1:

من تثبيت جديد لـ 10.10 اليوم فقط:

xcode-select --install
ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
brew doctor
brew install ruby
source /etc/profile
gem install nokogiri

تم تثبيت إصدار روبي 2.1.5p273 و nokogiri 1.6.4.1. من المفترض أنه يمكنك فرض تثبيت هذه الإصدارات عبر البيرة المنزلية والياقوت.

من تثبيت 10.10 تمت ترقيته من 10.9 مع تثبيت homebrew و ruby ​​بالفعل:

brew install libxml2 libxslt
gem install nokogiri -- --use-system-libraries

لست متأكدًا من أنه كان من الضروري إعادة / تثبيت libxml2 و / أو libxslt ، لكن هذا أدى إلى الحيلة بالنسبة لي.

أعتقد أننا التقطنا هذا في برنامج تعليمي التثبيت المحدث هنا:

http://www.nokogiri.org/tutorials/installing_nokogiri.html

إذا لم يكن كذلك ، فيرجى إبلاغي بذلك وسأعيد فتحه.

شكرا على رابط البرنامج التعليمي! لقد نجحت معي عندما حددت مسارات الملفات ، كما هو موضح في "استخدام عمليات تثبيت libxml2 / libxslt غير القياسية." (يعتبر / usr / bin في OS X 10.6.8 موقعًا غير قياسي لمكتبات النظام.)

للعثور على مسارات الملفات ، استخدمت الأمرين Terminal which xml2-config و which xslt-config . ربما تحديث البرنامج التعليمي لاقتراح القيام بذلك؟

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات