Mac OS üzerinde Nokogiri kurulumu neden libiconv eksik olduğunda başarısız oluyor?


159

Nokogiri'yi Mac OS 10.9.3'e yüklemeye çalışıyordum ve her ne olursa olsun, kurulum aşağıdaki hata mesajıyla başarısız oluyor:

$ 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

Kaynaklardan demlemek ve libiconv kullanarak libxml2 ve libxslt inşa etmek ve kurmak da dahil olmak üzere web'de bulunan birçok yardımı takip ettikten sonra (" Nokogiri'nin Kurulması " ) hata aynı kalır.

Nokogiri yüklemesini çalıştırmaya çalışırken, libxml2 ve libxslt iyi görünüyor, ancak libiconv değil gibi görünüyor.

Bunları daha iyi bilen biri Nokogiri'nin nasıl kurulacağını biliyor mu?


Kullanmaya çalıştığınız komutları tam olarak göstermiyorsunuz, bu yüzden cevap vermeye çalışırken karanlıkta çekim yapacağız. Her zaman kullanıyorum gem install nokogiri, ancak daha sonra Mac OS Ruby yüklemelerimi yönetmek için RVM kullanıyorum. libxml ve libxslt iconv ile ilgili değildir, bu yüzden sorularınızı destek forumu olan Nokogiri-talk ile sormanızı tavsiye ederim . Nokogiri'yi kurarken herhangi bir ikonv sorunum olduğunu hatırlamıyorum ve bir grup makinede var.
Tin Man

1
Bu arada biraz daha fazla bilgi içeren github.com/tenderlove/nokogiri/issues/442 adresinde bir bilet açtım .
polarblau

2
Aynı sorunu OSX El Capitan'da çözmek için bir bağlantı, estebantorr.es/blog/2015/10/02/Nokogiri-in-El-Capitan
sbs

" sudo gem install nokogiri". sudoMücevher yüklemek veya varsayılan Ruby'yi değiştirmek için kullanmayın . Bunun yerine ayrı bir Ruby yönetmek için rbenv veya RVM kullanın. Bu, Yığın Taşması üzerinde birçok kez ele alınır.
Teneke Adam

Xz'yi kaldırmayı denediniz miNokogiri kurulumundan önce xz'yi mi?
lifeisfoo

Yanıtlar:


237

Aynı sorunu yaşadım. Ne yazık ki " Nokogiri Kurulumu " Iconv sorunlarını kapsamaz. Sorunu şu şekilde çözdüm.

İlk kurulum homebrew , hayatınızı kolaylaştıracaktır. Önceden yüklediyseniz, aşağıdaki gibi güncelleyerek en son formülleri aldığınızdan emin olun:

brew update

Not : OSX 10.9+ sürümünde, libiconv'u yüklemenize izin vermek için xCode komut araçlarını yüklemeniz gerekebilir.

xcode-select --install

sonra libiconv'un daha yeni bir sürümünü yükleyin

brew install libiconv

o zaman gemini yükle

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

5
Bir kez "demlemek libiconv yüklemek" ve "demlemek bağlantı libiconv" yaptıktan sonra nokogiri başarıyla yükleyebildi. Bu, demlemek tarafından kurulan libiconv'un belirli sürümüne zor bir bağımlılığım olmadığı anlamına geliyor.
Steven Chanin

87
brew install libiconvDışarı tükürmeye çalıştığımda : Hata: Libiconv için kullanılabilir formül yok Apple libiconv'u OS X ile dağıtır, / usr / lib'de bulabilirsiniz. Bazı derleme komut dosyaları doğru bir şekilde algılanamıyor, lütfen çözüm için mevcut formülleri kontrol edin.
Seth Bro

62
Eğer Mavericks çalıştırıyorsanız, sen Xcode komut satırı araçlarını yüklemeniz gerekebilir: xcode-select --install. Bu benim için sorunu düzeltti.
Michael Stalker

34
Hala brew install libiconvdoğru formülü alamıyorsanız, bunu kullanın:brew tap homebrew/dupes
jamesdlivesinatree

15
OS X Yosemite(10.10) İşleri yapmak zorunda değildim brew; Sadece xcode-select --installbenim için bu sorunu düzeltildi.
bjfletcher

84

Sistem kitaplıklarını kullanmayı deneyin. OSX, yeni sürümlerde libiconv ile birlikte gelir, ancak varsayılan kurulum komut dosyasının bir sorunu var gibi görünüyor

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

Düzenleme: Paketçi kullanıyorsanız, Geoff tarafından belirtildiği gibi şunları yapabilirsiniz:

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

5
Bundler kullanıyorsanız - "bundle config build.nokogiri --use-system-libraries" çalıştırabilirsiniz
Geoff Evason

1
son olarak "paket config build.nokogiri --use-system-libraries" çalıştı. Bu olduğunda nefret ediyorum
nils petersohn

1
Mac OS 10.10 Yosemite'de benim için çalıştı.
Lloyd Dewolf

Neden gem install komutunun ortasında fazladan "-" gerekiyor?
Rembrandt Q. Einstein

3
10.10.3'te benim için başarısız oldu. Xcode 6.3 ile libxml2 version 2.6.21 or later is required!.
Rivera

36

@ Cory'nin çözümü doğru cevabı içerir, ancak Mavericks'teki çözüm aslında en üst çözümden çok daha basittir, bu yüzden sadece gerekli adımlarla yeniden gönderiyorum.

Mavericks'te (OSX 10.9+):

Xcode Komut Satırı Araçlarını Yükleme:

xcode-select --install

sonra geminizi kurun:

gem install nokogiri

4
Yosemite üzerinde çalışır. Çok memnunum aşağı kaydırdım ve eski cevapları kullanmadım.
yuяi

büyük bir zaman kazandıran, bu ipucu için teşekkürler! mavericks benim için bir cazibe çalıştı
dondurma

Çözümümü kullanmayı denedin mi? Xcode intsalation gerektirmez.
Filip Kis

Bu, Nokogiri belgelerinden ( nokogiri.org/tutorials/instal_nokogiri.html#mac_os_x ) ve El Capitan üzerinde çalışan tek çözümdür . Kabul edilen çözüm orada işe yaramadı.
Johannes

Benim için El Capitan üzerinde çalıştı, çok sinir bozucu. Nokogiri docs @Johannes bağlantısı için teşekkürler - gerçekten yararlı. Herkes "sistem kitaplıklarını kullan" diyen çözümlerden uzak durmalıdır - kötü tavsiye.
Polsonby

19

Sonunda bu sorunu çözebildim. Yukarıdaki çözümlerin hiçbiri benim için tamamen çözmedi.

gem install nokogiriOSX Lion 10.7.2 üzerinde çalışırken bu hatayı alıyordum . Her şeyden önce, bu hata libiconv'un eksik olduğunu söyleyerek gerçek sorunu maskeler, çünkü nokogiri libxslt veya libxml2'yi bulamıyor olsam bile aynı hatayı alırsınız.

Bu yüzden Homebrew bölümündeki http://nokogiri.org/tutorials/instal_nokogiri.html adresindeki talimatları izledim (libxml2'nin daha güncel bir sürümünü dikkate almak için biraz değiştirildi):

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

Bu noktada nokogiri sitesindeki talimatları takip ettim ve denedim

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

Ancak, libxslt kaynağından oluşturulduğunda /includeklasörü korkak bir yere yüklediği için bu hala başarısız oldu . Bu nedenle libve includeklasörlerini ayrı ayrı belirtmeniz gerekir :

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

Bu hala işe yaramadı (aynı libiconv hatası), bu yüzden gerekli üç kütüphaneyi (libxslt, libxml2 ve libiconv) belirtmeye çalıştım:

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

Şimdi farklı bir hatayla karşılaştım! Hala bir hataydı ama en azından farklıydı. Marka oluşturma işlemi başarısız oldu:

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

Ne? Çok fazla googling yaptıktan sonra, bu mucize yazı ile karşılaştım: http://www.refresherate.com/2010/01/08/fixing-ld-warning-in-usrlocalliblibz-dylib-file-is-not-of-required -mimari/

Görünüşe göre OSX Lion, libz kütüphanesinin ( libz.dylib, libz.1.dylib, libz.1.2.4.dylib) bazı kötü sürümleriyle birlikte gelir ve bunların Xcode SDK'nın en son sürümleriyle değiştirilmesi gerekir. Makale, özel talimatlar için yukarıdaki bağlantıyı okuyabildiğimden daha iyi açıklıyor.

Bunlar değiştirildikten sonra koştum

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

tekrar ve her şey iyiydi. Umarım bunun bir başkasına yardımı olur.


Aynı sorunu yaşadım, ancak aşağıdaki dosyaları opt / local / lib'den kaldırmayı buldum: libz.dylib ve libz.1.dylib ve bu talimatların geri kalanını takip ederek hile yaptı.
Dağılma

1
Bence / opt / local bir MacPorts kurulumudur. Homebrew ve Macports çalıştırıyorsanız, biraz da olsa eğlencelisiniz (davanızda görüldüğü gibi). En iyi çözüm Macports'u kaldırmak ve paket yöneticiniz için homebrew kullanmaktır.
Cory

Aşağıda Mavericks (OSX 10.9+) için yeni ve daha basit bir çözüm ekledim.
Micah Winkelspecht

17

Sadece kalabalığa sesimi ekliyorum, ama mkmf.log x86_64 mimarisinin sembollerini bulamamakla ilgili bir şey söyledi. Bu çözüme rastladım:

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

Orijinal asker için hiçbir şey çözemeyebilir, ancak bu birisine yardımcı olabilir.

Yan Not: nokogiri, yakut uygulamaları kullanmamdaki en büyük engelim oldu. Birisi farklı bir sürüme bağlı olduğunda, onu nasıl oluşturacağımı bulmalıyım. Ve benim sorunum her seferinde farklı.


1
Nokogiri hissinizle aynı fikirde. Her. Tek. Zaman.
jbnunn

Bu formda benim için çalışmadı, ama ARCHFLAGS="-arch x86_64" sudo gem install nokogiri -- --use-system-librariesçalıştı ...
bwoebi

Bu da benim için çalıştı, çok daha kolay bir çözüm, ARCHFLAGS kullanmadım, sadece sudo gem yükleme
nokogiri

8

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

bu benim için macos üzerinde çalıştı. Sürümle de çalışır1.6.6.4


--with-xml2-includeCatalina benim için bir seçenek olmadan çalıştı ... gem install nokogiri --version=1.6.6.2 -- --use-system-libraries
ryanc

6

Kullanıyorum .. OS X 10.9.4 Homebrew 0.9.4

İşte nokogiri, eksik libiconv sabitleme başarıyla yüklemek için bu iş parçacığı benim yazlık.

Homebrew http://brew.sh/ dosyasını yükleyin veya aşağıdaki komutu kullanarak en son sürüme güncelleyin

brew update

Libxml2 libxslt uygulamasını yükleyin

brew install libxml2 libxslt

Her iki libxml2 libxslt bağlantısı

brew link libxml2 libxslt

--Force komutunu kullanmak için uyarı alırsanız aşağıdaki komutu kullanmanız yeterlidir

brew link --force libxml2 libxslt

Libiconv'u yüklemenizi sağlamak için xCode komut araçlarını yükleyin

xcode-select --install

Libiconv'u yükle

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

Son adım, nokogiri yükleyin!

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

5

Bunu Yosemitekoşarak Ruby 2.1.4çözdüm

  1. xCode 6.1'in kurulu olduğundan emin olun, ardından
  2. xcode-select --install, sonra
  3. AppStore'da güncellemeleri tıklayın ve komut satırı araçlarının en son sürümünü yükleyin (görünüşe görexcode-select --install işe yaramaz - iç çeker)
  4. sonra bundle installnormal olarak çalıştı.

Ben de yaptım brew install libiconvama bu adımın gerekli olduğuna ikna olmadım.


brew install libiconvGerekli olduğuna inanmıyorum - uygun paketi bulmaktan hiç rahatsız olmadım ve bu benim için iyi çalıştı. Verilen, daha önce yakut 2.1.1 ile nokogiri yüklediğim zaman makinemde olabilir.
jmstone617

"AppStore'da güncellemeleri tıklayın ve komut satırı araçlarının en son sürümünü yükleyin (görünüşte xcode-select --install yapmıyor - iç çekiyor)" - hiçbir güncelleme mevcut değil. Komut satırı araçlarını Xcode'dan nasıl güncelleyebilirim? Tercihler bölmesinin "İndirilenler" bölümünde görünmezler.
chadoh

Bu uygulama mağazasına gitmeden benim için çalıştı. Komut satırı araçlarını ve işletim sistemini (Yosemite'ye) güncelledim, sonra koştum xcode-select --installve Nokogiri'yi yükleyebildim.
çelik

Yapmam gerekiyordu: xcode-select --install .. demlemek libxml2 demlemek .. paket config build.nokogiri - kullanım-sistem-kütüphaneler .. paket yüklemek
Zack Burt


3

Mkmf dosyasına bakarak, nokogiri (veya gem, bilmiyorum) / op / local / içindeki bağımlılıkları bulmaya çalıştığına dikkat çekiyor. Benim için onları aramak doğru yol değil.

Nokogiri'yi doğru yerde (homebrew kullanıyorum) bulmaya zorlamak benim için hile yaptı:

$ gem install nokogiri -- --with-xslt-dir=/usr/local/Cellar/libxslt/1.1.26 --with-xml2-dir=/usr/local/Cellar/libxml2/2.7.8/

Belki nokogiri'de düzeltilecek bir şey var ...

HTH,


3

libiconv Homebrew 0.9'dan kaldırıldı. Şimdi libiconv'u kaynaktan derlemeniz, ardından nokogiri gemini kurduğunuzda kuruluma başvurmanız önerilir. Nokogiri kurulum sayfasındaki Homebrew 0.9 bölümündeki Nokogiri kurulum talimatlarına bakın


Bugün itibariyle $ demlemek install libiconv çalıştırabildim ve libiconv-1.14.tar.gz'yi indirip yükledim
Evolve

2

Gem'in yapı dizinindeki mkmf.log dosyasına bakın (örn. /Library/Ruby/Gems/1.8/gems/nokogiri-1.4.4/ext/nokogiri/mkmf.log). Çok daha fazla bilgi var. Benim durumumda bu nokta Nokogiri özellikle kütüphane arama yoluna / opt / local / lib ekledi ve GNU Tavla orada uyumsuz bir libiconv yüklü oldu.


2

MacPorts ile libxml2 ve libxslt yüklediğinizi varsayarsak, have_func ('iconv_open', 'iconv.h') çağrısı tarafından kullanılan ekleme yolları ve bağlantı yolları sırasının uyuşmaması nedeniyle bu hatayı almaya devam ediyor olabilirsiniz.

Basit (yama) çözümü: / usr / local / lib içindeki libiconv. * Dosyasını silin


MacPorts ile libxml2 ve libxslt yükledim, ancak / usr / local / lib'de libiconv. * Dosyaları yok
Valerio Schiavoni

2
$ gem install nokogiri -- --with-xslt-dir=/usr/local/Cellar/libxslt/1.1.26 --with-xml2-dir=/usr/local/Cellar/libxml2/2.7.8/

yukarıdaki ile aynı, bu homebrew ve gem install kullanarak çözüm (değişiklikleri uygulamak sürümüne bağlıdır)

Ancak, Gemfile ve paket yüklemesini kullanıyorsanız, yüklemeden önce paket yapılandırmasını uygulamanız gerekir, burada kod

$ bundle config build.nokogiri --with-xslt-dir=/usr/local/Cellar/libxslt/1.1.26 --with-xml2-dir=/usr/local/Cellar/libxml2/2.7.8/ --with-iconv-dir=/usr/local/Cellar/libiconv/1.14

yine, değişiklikleri uygula sürümüne bağlı

umarım bu sana yardımcı olur.

kredi: https://gist.github.com/1344331


2

Mountain Lion'da da benzer sıkıntılar yaşadım. Daha önce rvm paketi ile libiconv kurduğum anlaşılıyor ve bu artık yakut 1.9.3 / Mountain Lion / nokogiri için gerekli değil.

Https://rvm.io/packages/ tavsiyesinin ardından, $ rvm_path / usr dizinimi sildim ve yakut 1.9.3'ü yeniden oluşturdum. Daha sonra nokogiri kurulumu basit bir mücevher kurulumu oldu. Demlemek / macports / manuel kaynak yüklemeleriyle uğraşmak yok!


2

Bunu Mavericks'te de yapabilirsiniz:

gem install nokogiri - --use-system-libraries = true --with-xml2-include = / Uygulamalar / Xcode.app / İçindekiler / Geliştirici / Platformlar / MacOSX.platform / Geliştirici / SDKs / MacOSX10.9.sdk / usr / include / libxml2

Sadece xcode yüklü olduğundan emin olun


aynı çözüm 10.7.5 için de çalışır: gem install nokogiri - --use-system-libraries = true --with-xml2-include = / Uygulamalar / Xcode.app / İçindekiler / Geliştirici / Platformlar / MacOSX.platform / Developer /SDKs/MacOSX10.7.sdk/usr/include/libxml2
tolginho

2

Nokogiri ile bir süredir OS X 10.10 Yosemite'de savaşıyordum

Çevrem nedense mahvoldu.

which bundleve which gembeni veriyorlardı /usr/bin/bundleve /usr/bin/gemyerine~/.rbenv/shims/gem

Benim için düzeltmeye yardımcı olan şey sudo rm -i /usr/bin/gem /usr/bin/bundle

Bundan sonra ben: 1. proje brew install libxml2 libiconv libxslt dizinime geri döndü 2. bağımlı 3. kaldırıldı (yeniden)-bağımlı bağımlıları yükledi : 4. benim yakut sürümü yüklü taze (rbenv ile) 5. yaptım gem install bundler 6. ve bundle installherhangi olmadan koştu sorunları.

Nokogiri ondan sonra iyiydi.

Referans için:

╰─% cat .bundle/config           
---
BUNDLE_PATH: vendor/bundle
BUNDLE_DISABLE_SHARED_GEMS: '1'
BUNDLE_JOBS: 4

╰─% which ruby bundle gem
~/.rbenv/shims/ruby
~/.rbenv/shims/bundle
~/.rbenv/shims/gem

1
Gez (her zaman 20/20) muhtemelen PATH env-değişkenimi ilk önce rbenv'in başına gelecek şekilde ayarlayabilirdim.
Sam Figueroa

1

Homebrew'unuzu 0.9'a yükseltmeniz gerekiyor

o zaman bu adımları takip et

brew install libxml2 libxslt
brew link libxml2 libxslt
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

sudo ln -s /usr/bin/gcc /usr/bin/gcc-4.2

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

Klasör kitaplığı sürümünü iki kez kontrol etmelisiniz.


Link ve sudo işleri kıracak. Birkaç nedenden dolayı sadece fıçıdırlar. Demleme formüllerini kullanın, çünkü bakımı daha kolay. brew create http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.13.1.tar.gz && brew install libiconv

1

HOMEBREW KULLANICILARI

Homebrew kullanıyorsanız bu sorunu gidermek için doğru çözüm:

xcode-select --install

İletişim kutusundan "Xcode Al" ı seçin.

brew unlink libiconv
gem install nokogiri

Xcode-select adımı Xcode kurulumunuzu ve Xcode Komut Satırı Utils kurulumunuzu düzeltir. O / S yükseltmeleri veya yedeklemelerden geri yükleme ile ilgili bir tür sorun nedeniyle /usr/include/iconv.h olmadığını buldum. Xcode-select çalıştırdıktan sonra bu başlık dosyasına ve /usr/lib/libconv.dylib'e sahip değilseniz, büyük olasılıkla Xcode'u Uygulama klasöründen çöp kutusuna sürükleyip yeniden yüklemeniz ve ardından Xcode için Komut Satırı Araçlarını manuel olarak indirmeniz gerekir. dan https://developer.apple.com/downloads/index.action ve bu yükleyin.

O zaman libiconv'un homebrew ile olan bağlantısını kesmeniz gerekir. Buna ihtiyacınız yok. Ve clang aslında /usr/local/include/iconv.h dosyasını /usr/include/iconv.h üzerinden alır ve #dep iconv_open'i libiconv_open'e tanımlar, ancak liusconv_open'e sahip olmayan /usr/lib/libiconv.dylib'e bağlanır. mkmf hatalarının libiconv'u bulmasına neden olan şeydir. Yapmanız gereken iconog.h içindeki bağlantıyı kaldırmak ve böylece nokogiri'nin bulamayacağını bulmaktır.

Sonra normalde nokogiri oluşturun.

Yeni kullanıcılar için yapmanız gereken tek şey xcode-select ile xcode kurmak ve nokogiri kurmaktır, ancak bu soruyu bulduysanız, muhtemelen Mavericks'in yeni bir yüklemesi değil, botched bir kurulumunuz var.

Buradaki diğer cevapların bazıları kesinlikle yanlış. Birçoğu libiconv'u tamamen gereksiz olan homebrewdan kullanmaya çalışır. brew link libiconvClang'ın karıştığı ve homebrew başlık dosyasını okumaya ve sistem kitaplıklarına bağlantı oluşturmaya çalıştığı soruna neden olan cevaplar . --use-system-librariesNokogiri'nin kendi paketlenmiş libxml2 ve libxslt kütüphanelerine karşı bağlanması gerektiğinden öneren cevaplar zayıftır, çünkü bu kütüphanelerin diğer sürümleri onunla uyumlu değildir. Kaynaklardan derlemenizi isteyen cevaplar umutsuzca aşırı derecede karmaşıktır.

TL; DR:

  • Xcode kurulumunuzu yükseltin ve / veya onarın
  • Sadece sorunlara neden olan kullanmaya çalıştığınızdan homebrew libiconv'nuzun bağlantısını kesin
  • Normal olarak nokogiri oluşturun

RVM KULLANICILARI

Eski RVM kurulumlarında, sistem kitaplıklarınızla çakışan bir yerde RVM dizinlerinizde gizlenen bir libiconv olabilir. Daha fazla bilgi için https://stackoverflow.com/a/11809261/506908 adresine bakın .

MacPorts KULLANICILARI

/Opt/local/lib/libiconv.dylib varsa, nokogiri bu yolu aradığı dizin listesine ekler ve MacPorts kurulumunu homebrew libiconv'u nasıl alıp sistem kitaplıklarıyla çakıştığına benzer şekilde bulur. Deneyebilirsin:

sudo port uninstall libiconv

Bağımlılıklar nedeniyle başarısız olursa, doğrudan MacPorts sürümüne bağlanmayı deneyebilirsiniz (denenmemiş):

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

Onaylama gem install nokogiri -- --with-iconv-dir=/opt/local, libiconvyüklü MacPorts ile gayet iyi çalışıyor
PartialOrder

1

Bu benim için çalıştı

sudo env ARCHFLAGS = "- kemer x86_64" mücevher yükleme nokogiri: 1.6.6.2 - --use-system-library --with-xml = / usr / local / Cellar / libxml2 / 2.9.3 / --with-iconv- dir = / usr / yerel / mahzeni / libiconv / 1.14


benim için bunu yapan --use-system-libraries ve --with-iconv-dir
kombinasyonu oldu

0

Bu sabah bununla karşılaştım ... Mavericks'e geçtikten sonra. Birçok şey yaptık. Ancak burada kimse bu sorunu yaşıyorsa, denemek için bazı şeyler vardır.

'Xcode-select --install' komutunu çalıştırdım ve komut satırı araçlarını yükledim (işletim sisteminin ugrade'de güncellenmediğine şaşırdım). 'Rvm implode' çalıştırdım (daha sonra tekrar kuracağım).

İki hata çıktı dosyasını bir araya getirdik:

~ / .Vagrant.d / taşlar / taşlar / Nokogiri-1.6.3.1 / Ext / Nokogiri / gem_make.out

~ / .Vagrant.d / taşlar / taşlar / Nokogiri-1.6.3.1 / Ext / Nokogiri / tmp / x86_64, elma darwin12.5.0 / bağlantı noktası / libxml2 / 2.8.0 / configure.log

Bu c derleyici şaşırtıcı bir ayar kullandığını gösteriyor gibiydi.

'Env' koştum

Çıktı içeriği:

...
CXX=/usr/local/opt/apple-gcc42/bin/g++-4.2
...
CC=/usr/local/opt/apple-gcc42/bin/gcc-4.2
...

Bu dosyalar dosya sisteminde yoktu ...

Tüm bu değişikliklerden sonra yeni bir terminal penceresine geçtikten sonra (böylece her şey taze idi). Vagrant-berkshelf'in kurulumu (sırayla nokogiri kurar) iyi çalıştı.

NOT: yeni pencerede 'env' çalıştırırken artık CC veya CXX için bir ayar yoktu ...

Bunun kilit kısmından veya siparişin önemli olup olmadığından emin değilim, ancak bunun işe yaramasında rol oynayan parçaları yeniden yaratmaya çalıştı.


Komutun gem install nokogiribaşarılı olduğundan emin misiniz ? "Zaten kurulu" mesajıyla mı yoksa başarılı bir kurulumla mı kalıyorsunuz?
Spundun

Evet. Mac'imde bir şeyler oluştururken rvm ve oh-my-zsh'ı yeniden kurdum. Anlayamadığım şey, bir rvm gemset üzerinde nokogiri'nin nasıl kurulacağı. 'RVM Kullanım Sistemi'ne geri döndüğümde, nokogiri 1.6.3.1'i OS X ruby ​​2.0.0p451'de gelen 1.5.6'nın üzerine yükleyebilirim.
aaron blythe6

Sonunda benim için stackoverflow.com/questions/19643153/… demlemek kaldırma apple-gcc42 demlemek elma-gcc42 demlemek oldu
aaron blythe

0

Belgelere göre, OSX 10.9 ve Homebrew 9.5+ 'dan itibaren, muhtemelen geliştirme araçlarını kaçırıyorsunuz.

Nokogiri kurulumu

Sorun giderme

Eğer libiconv eksik söz böyle bir şey görünüyor sorunlarınız varsa:

Installing nokogiri (1.6.2.1) Building nokogiri using packaged libraries.

Gem::Installer::ExtensionBuildError: ERROR: Failed to build gem native extension.

    /usr/local/rvm/rubies/ruby-2.0.0-p0/bin/ruby extconf.rb
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 ***

O zaman muhtemelen doğru geliştirici araçlarını kaçırıyorsunuzdur. Bu gerçekten kolay bir düzeltme:

brew unlink gcc-4.2      # you might not need this step
gem uninstall nokogiri
xcode-select --install
gem install nokogiri

Bu, OSX 10.9 w / xcode clang derleyicisi üzerinde çalıştığı doğrulanmıştır.


0

Mac işletim sistemimi Yosemite'a yükselttiğimde bu sorunu aldım. Bu sorunu yaparak çözebildim:

xcode-select --install
brew uninstall libiconv
brew install libiconv
gem install nokogiri

0

Benzer bir sorunum vardı ve kabul edilen cevap benim için işe yarıyordu. Şimdi, ancak ben gmkdirbu soruda olduğu gibi bir komut eksik yeni bir hata mesajı görüyorum :

gem install nokogiri -v '1.5.11' make nedeniyle başarısız oldu: / usr / local / bin / gmkdir: Böyle bir dosya veya dizin yok

Benim için işe yarayan ilk önce biraz temizlik oldu:

brew uninstall libiconv
brew uninstall libxml2
brew uninstall libxslt

Ve sonra brew unlink libiconvve başka ne varsa bağlantıyı kaldırmanız gerekir (kontrol edin brew doctor). Ardından, sihirli iki satır (bağlantılı cevaptan kopyalanır):

brew install coreutils
gem install nokogiri

0

Herhangi bir şeyi kaldırmaya ve yüklemeye başlamadan önce izlenmesi gereken basit adımlar. CLT (komut satırı araçları yüklü) olup olmadığını kontrol edin:

brew config

kurulu yeniden kurulum gerekmiyorsa buradaki CLT sürümüne bakın.

Bu, sorunun sudo değil sadece bundler gem yeniden yüklediğiniz izni olduğu anlamına gelir. gem uninstall bundler Yeniden yükleme gem paketleyicisiyle paketleyiciyi kaldır gem install bundler

Buradaki en önemli nokta, paket taşının kurulduğu izin asla sudo olmamalıdır.


-1

Her şeyden önce nokogiri'deki kurulum kılavuzunu takip ettiğinizden emin olun: http://nokogiri.org/tutorials/instal_nokogiri.html

Kılavuzu takip ettikten sonra hala bu sorunu yaşadım. Ben bu şekilde çözdüm:

Her şeyden önce homebrew kullanarak iconv kurdum: brew install iconv

Sonra ruby ​​kaldırdım, neyse ki bu rvm ile çok kolay:

rvm uninstall 1.9.2        

Sonra ruby'i aşağıdaki seçeneklerle yeniden kurmak zorunda kaldım:

CC=gcc-4.2 rvm install 1.9.2-p290 --with-iconv-dir=/usr/local/Cellar/libiconv/1.13.1

Sonra yeni yakut sürümü ile bir mücevher oluşturmak:

rvm use 1.9.2@coolproject

Sonra nihayet böyle nokogiri yükleyebilirsiniz:

gem install nokogiri -v=1.4.4 -- --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

-1

Benim durumumda, (scotchi ile olduğu gibi) derleme / opt / local / lib içindeki uyumsuz bir iconv kütüphanesi nedeniyle başarısız oldu. Varsayılan olarak, Nokogiri oluşturma işlemi önce / opt / local öğesine bakar. Farklı bir yükleme dizini kullanmaya zorlamak için, örneğin / usr / local, şunları yapın:

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

-1

Bu blog gönderisi libiconv'u manuel olarak yüklemeyi önermektedir.

Daha sonra nokogiri, libiconv'u nerede bulacağını söyleyen bir dizi anahtarla kurulabilir (blog yayınına bakın).

Bir yan not olarak: nokogiri'yi yükledikten sonra gollum'u kurmayı başardım (kurulumu da başarısız oldu çünkü iconv bulamadı). Şimdi hala sorunlarla karşılaşıyorum, çünkü gollum'u başlattığımda Python çöküyor.


-1
$ gem install iconv # works but it is missing an iconv.so file in ruby 2.0.0-p247

$ ls -1 2.0.0-p0/lib/ruby/gems/2.0.0/gems/iconv-1.0.3/*/*/*.so
2.0.0-p0/lib/ruby/gems/2.0.0/gems/iconv-1.0.3/ext/iconv/iconv.so*
2.0.0-p0/lib/ruby/gems/2.0.0/gems/iconv-1.0.3/lib/iconv/iconv.so*

$ ls -1 2.0.0-p247/lib/ruby/gems/2.0.0/gems/iconv-1.0.3/*/*/*.so
2.0.0-p247/lib/ruby/gems/2.0.0/gems/iconv-1.0.3/ext/iconv/iconv.so*

NOT 2.0.0-p247 yüklemesinde bulunan 2.0.0-p247'deki MISSING /lib/iconv/iconv.so dosyası.

$ rbenv version
2.0.0-p247 (set by /home/XXX/tmp/.ruby-version)
$ rbenv which gem
/home/XXX/.rbenv/versions/2.0.0-p247/bin/gem
$ gem --version
1.8.25

$ rbenv which pry
/home/XXX/.rbenv/versions/2.0.0-p247/bin/pry
$ pry
[1] pry(main)> require 'iconv'
LoadError: cannot load such file -- iconv/iconv.so
from /home/XXX/.rbenv/versions/2.0.0-p247/lib/ruby/site_ruby/2.0.0/rubygems/custom_require.rb:36:in `require'

Dosyayı kopyala

$ pushd ~/.rbenv/versions/
$ cp 2.0.0-p247/lib/ruby/gems/2.0.0/gems/iconv-1.0.3/ext/iconv/iconv.so 2.0.0-p247/lib/ruby/gems/2.0.0/gems/iconv-1.0.3/lib/iconv/

ŞİMDİ ÇALIŞIYOR!

$ pry
[1] pry(main)> require 'iconv'
=> true

Not: rbenv ile çalışıyorum, ancak bu sorun gem kurulumuna özgüdür ve akışı düzeltilmelidir!
Darren Weber

bu cevabın nokogiri'nin yapısının bağlı olduğu C libiconv kütüphanesi ile ilgisi yoktur. cevap gerçekten kaldırılmalıdır.
lamont

-1

Çalıştırmadan önce gcc'yi yüklemem gerekiyordu ./configure --prefix=/usr/local/Cellar/libiconv/1.13.1

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.