Mengapa menginstal Nokogiri di Mac OS gagal dengan libiconv hilang?

159

Saya sudah mencoba menginstal Nokogiri di Mac OS 10.9.3 dan apa pun yang saya coba, instalasi gagal pada akhirnya dengan pesan kesalahan berikut:

$ 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

Setelah mengikuti banyak bantuan yang ditemukan di web termasuk membangun dan menginstal libxml2 dan libxslt menggunakan brew dan membangun libiconv dari sumber (seperti yang dijelaskan dalam " Instalasi Nokogiri "), kesalahannya tetap sama.

Ketika mencoba menjalankan instalasi untuk Nokogiri, libxml2 dan libxslt tampaknya ditemukan baik-baik saja, tetapi tidak libiconv.

Adakah yang memiliki pengetahuan lebih baik tentang hal-hal ini yang tahu cara memasang Nokogiri?

Polarblau
sumber
Anda tidak menunjukkan perintah persis yang Anda coba gunakan, jadi kami akan menembak dalam gelap mencoba menjawab. Saya selalu menggunakan gem install nokogiri, tetapi kemudian saya menggunakan RVM untuk mengelola instalasi Mac OS Ruby saya. libxml dan libxslt tidak terkait dengan iconv, jadi saya akan merekomendasikan mengajukan pertanyaan Anda pada Nokogiri-talk yang merupakan forum dukungan mereka. Saya tidak ingat memiliki masalah ikonv ketika menginstal Nokogiri, dan saya memilikinya di banyak mesin.
the Tin Man
1
Sementara itu saya sudah membuka tiket di github: github.com/tenderlove/nokogiri/issues/442 yang berisi sedikit informasi lebih lanjut.
polarblau
2
Berikut tautan untuk mengatasi masalah yang sama pada OSX El Capitan, estebantorr.es/blog/2015/10/02/Nokogiri-in-El-Capitan
sbs
" sudo gem install nokogiri". Jangan gunakan sudountuk menginstal permata atau memodifikasi Ruby default. Alih-alih menggunakan rbenv atau RVM untuk mengelola Ruby yang terpisah. Ini dibahas beberapa kali di Stack Overflow.
the Tin Man
Sudahkah Anda mencoba menghapus instalan xz sebelum menginstal nokogiri?
lifeisfoo

Jawaban:

237

Saya memiliki masalah yang sama. Sayangnya " Instalasi Nokogiri " tidak mencakup masalah Iconv. Inilah cara saya mengatasi masalah tersebut.

Pertama instal homebrew , itu akan membuat hidup Anda lebih mudah. Jika Anda sudah menginstalnya, pastikan untuk mengambil formula terbaru dengan memperbarui seperti ini:

brew update

Catatan : Di OSX 10.9+ Anda mungkin perlu menginstal alat perintah xCode untuk memungkinkan Anda menginstal libiconv.

xcode-select --install

kemudian instal versi libiconv yang lebih baru

brew install libiconv

lalu instal permata Anda

gem install nokogiri -- --with-iconv-dir=/usr/local/Cellar/libiconv/1.14
Cory
sumber
5
Setelah saya melakukan "brew install libiconv" dan "brew link libiconv", saya berhasil menginstal nokogiri. Saya berharap itu berarti saya tidak memiliki ketergantungan yang keras ke versi spesifik libiconv yang diinstal oleh brew.
Steven Chanin
87
Ketika saya mencoba brew install libiconvmeludahkan: Kesalahan: Tidak ada formula yang tersedia untuk libiconv Apple mendistribusikan libiconv dengan OS X, Anda dapat menemukannya di / usr / lib. Beberapa skrip build gagal mendeteksi dengan benar, silakan periksa formula yang ada untuk solusi.
Seth Bro
62
Jika Anda menjalankan Mavericks, Anda mungkin perlu menginstal alat baris perintah Xcode ini: xcode-select --install. Ini memperbaiki masalah bagi saya.
Michael Stalker
34
Jika Anda masih tidak bisa brew install libiconvmendapatkan formula yang tepat, gunakan ini:brew tap homebrew/dupes
jamesdlivesinatree
15
OS X Yosemite(10.10) Saya tidak perlu melakukan brewhal - hal itu; hanya xcode-select --installmemperbaiki masalah ini untukku.
bjfletcher
84

Coba gunakan pustaka sistem. OSX hadir dengan libiconv dalam versi yang lebih baru, tetapi skrip instalasi default tampaknya memiliki masalah

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

Sunting: Jika menggunakan bundler, seperti yang disebutkan oleh Geoff Anda dapat melakukannya:

bundle config build.nokogiri --use-system-libraries
Filip Kis
sumber
5
Jika menggunakan bundler - Anda dapat menjalankan "bundle config build.nokogiri --use-system-libraries"
Geoff Evason
1
akhirnya "bundel config build.nokogiri --use-system-libraries" berhasil. Aku benci kalau itu terjadi
nils petersohn
1
Bekerja untuk saya di Mac OS 10.10 Yosemite.
Lloyd Dewolf
mengapa saya membutuhkan "-" tambahan di tengah-tengah perintah install permata?
Rembrandt Q. Einstein
3
Gagal untuk saya pada 10.10.3. Xcode 6.3 dengan libxml2 version 2.6.21 or later is required!.
Rivera
36

Solusi @ Cory berisi jawaban yang benar, tetapi solusi pada Mavericks sebenarnya jauh lebih sederhana daripada solusi atas jadi saya reposting dengan hanya langkah-langkah yang diperlukan.

On Mavericks (OSX 10.9+):

Instal Alat Baris Perintah Xcode:

xcode-select --install

lalu pasang permata Anda:

gem install nokogiri
Micah Winkelspecht
sumber
4
Bekerja pada Yosemite. Senang saya menggulir ke bawah dan tidak menggunakan jawaban yang lebih lama.
yuяi
penghemat waktu yang sangat besar, terima kasih atas tip ini! membuat saya terpesona pada maverick
es krim
Apakah Anda mencoba menggunakan solusi saya? Itu tidak memerlukan intsalasi xcode.
Filip Kis
Ini adalah solusi resmi dari dokumen Nokogiri ( nokogiri.org/tutorials/installing_nokogiri.html#mac_os_x ), dan satu-satunya yang bekerja pada El Capitan. Solusi yang diterima tidak bekerja di sana.
Johannes
Bekerja untuk saya di El Capitan, sangat menyebalkan. Terima kasih atas tautannya ke Nokogiri docs @Johannes - sangat berguna. Setiap orang harus menjauh dari solusi yang mengatakan untuk "menggunakan perpustakaan sistem" - saran yang buruk.
Polsonby
19

Saya akhirnya bisa menyelesaikan masalah ini. Tak satu pun dari solusi di atas benar-benar memperbaikinya untuk saya.

Saya mendapatkan kesalahan ini ketika mencoba gem install nokogirimenggunakan OSX Lion 10.7.2. Pertama-tama, kesalahan ini menutupi masalah nyata dengan mengatakan libiconv hilang, karena Anda akan mendapatkan kesalahan yang sama bahkan jika nokogiri tidak dapat menemukan libxslt atau libxml2, yang dalam kasus saya, tidak bisa.

Jadi saya mengikuti petunjuk di http://nokogiri.org/tutorials/installing_nokogiri.html di bawah bagian Homebrew (sedikit dimodifikasi untuk menjelaskan versi libxml2 yang lebih terkini):

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

Pada titik ini saya mengikuti petunjuk di situs nokogiri dan mencoba

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

Namun, ini masih gagal karena ketika membangun libxslt dari sumber, ia menginstal /includefolder di tempat yang funky. Jadi, Anda perlu menentukan libdan includefolder secara terpisah seperti:

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

Ini masih tidak berhasil (kesalahan libiconv yang sama), jadi saya mencoba menentukan ketiga pustaka yang diperlukan (libxslt, libxml2 dan libiconv):

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

Sekarang saya mendapat kesalahan yang berbeda! Itu masih kesalahan tetapi setidaknya itu berbeda. Proses make gagal dengan:

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

Uhh, apa? Setelah banyak googling, saya menemukan posting ajaib ini: http://www.refresherate.com/2010/01/08/fixing-ld-warning-in-usrlocalliblibz-dylib-file-is-not-of-required -Arsitektur/

Rupanya OSX Lion dikirimkan dengan beberapa versi buruk dari perpustakaan libz ( libz.dylib, libz.1.dylib, libz.1.2.4.dylib) dan dan mereka perlu diganti dengan versi terbaru dari Xcode SDK. Artikel ini menjelaskannya lebih baik daripada saya bisa membaca tautan di atas untuk instruksi spesifik.

Setelah ini diganti, saya berlari

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

lagi dan semuanya baik-baik saja. Saya harap ini membantu orang lain.

Micah Winkelspecht
sumber
Saya memiliki masalah yang sama, tetapi saya menemukan menghapus file-file berikut dari opt / local / lib: libz.dylib dan libz.1.dylib dan mengikuti petunjuk ini melakukan trik.
Undistraction
1
Saya pikir / opt / local menunjukkan instalasi MacPorts. Jika Anda menjalankan homebrew dan Macports, Anda akan berakhir dengan kegembiraan (seperti terlihat pada kasus Anda). Solusi terbaik adalah menghapus Macports, dan menggunakan homebrew untuk palungan paket Anda.
Cory
Saya menambahkan solusi sederhana baru untuk Mavericks (OSX 10.9+) di bawah ini.
Micah Winkelspecht
17

Hanya menambahkan suara saya ke kerumunan, tetapi mkmf.log mengatakan sesuatu tentang tidak dapat menemukan simbol untuk arsitektur x86_64. Saya menemukan solusi ini:

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

Mungkin tidak menyelesaikan apa pun untuk penanya yang asli, tetapi ini dapat membantu seseorang.

Catatan Sisi: nokogiri telah menjadi penghalang tertinggi saya untuk menggunakan aplikasi ruby. Setiap kali seseorang bergantung pada versi yang berbeda, saya harus mencari cara untuk membuatnya. Dan masalah saya berbeda setiap saat.

nbering
sumber
1
Setuju dengan sentimen nokogiri Anda. Setiap. Tunggal. Waktu.
jbnunn
Tidak bekerja untuk saya dalam bentuk ini, tetapi ARCHFLAGS="-arch x86_64" sudo gem install nokogiri -- --use-system-librariesberhasil ...
bwoebi
Ini bekerja untuk saya juga, solusi yang jauh lebih mudah, saya tidak menggunakan ARCHFLAGS, hanya sudo gem install nokogiri - --use-system-libraries
ryudice
8

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

ini bekerja untuk saya di Macos. Ini juga berfungsi dengan versi1.6.6.4

Prashant Kajale
sumber
Bekerja tanpa --with-xml2-includeopsi untuk saya di Catalina ... gem install nokogiri --version=1.6.6.2 -- --use-system-libraries
ryanc
6

Saya menggunakan .. OS X 10.9.4 Homebrew 0.9.4

Ini adalah ringkasan saya dari utas ini untuk berhasil menginstal nokogiri, memperbaiki libiconv yang hilang.

Instal Homebrew http://brew.sh/ Atau perbarui untuk menggunakan perintah terbaru di bawah ini

brew update

Instal libxml2 libxslt

brew install libxml2 libxslt

Tautkan kedua libxml2 libxslt

brew link libxml2 libxslt

Jika Anda mendapat peringatan untuk menggunakan --force, cukup gunakan perintah di bawah ini

brew link --force libxml2 libxslt

Instal alat perintah xCode untuk memungkinkan Anda menginstal libiconv

xcode-select --install

Instal libiconv

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

Langkah terakhir, instal 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
Kevin Ng
sumber
5

Saya memecahkan ini Yosemiteberjalan Ruby 2.1.4dengan

  1. pastikan Anda sudah menginstal xCode 6.1
  2. xcode-select --install, kemudian
  3. Di AppStore klik pembaruan dan instal versi terbaru dari alat-alat baris perintah (yang tampaknya xcode-select --installtidak melakukan - desah)
  4. kemudian bundle installbekerja seperti biasa.

Saya juga melakukan brew install libiconvtetapi saya tidak yakin bahwa langkah diperlukan.

Dave Sag
sumber
Saya tidak percaya brew install libiconvitu perlu - saya tidak pernah repot menemukan paket yang tepat dan ini bekerja dengan baik untuk saya. Memang, itu mungkin ada di mesin saya sejak saya menginstal nokogiri dengan ruby ​​2.1.1 sebelumnya.
jmstone617
"Di AppStore klik pada pembaruan dan instal versi terbaru dari alat-alat baris perintah (yang tampaknya xcode-pilih - install tidak melakukan - desah)" - tidak ada pembaruan yang tersedia. Bagaimana cara saya memperbarui alat baris perintah dari Xcode? Mereka tidak muncul di bagian "Unduhan" di panel preferensi.
chadoh
Ini berhasil bagi saya tanpa pergi ke app store. Saya memperbarui alat-alat baris perintah dan OS (ke Yosemite), kemudian berlari xcode-select --installdan saya dapat menginstal Nokogiri.
baja
Saya harus melakukan: xcode-select --install .. brew install libxml2 .. bundle config build.nokogiri --use-system-libraries .. bundle install
Zack Burt
4

Saya mencoba banyak hal tetapi tidak ada yang berhasil untuk saya. Kemudian saya akhirnya menemukan dokumentasi iconv dan menyelamatkan hari saya!

Kamil Sarna
sumber
Terima kasih banyak. Itu menyelamatkan hari saya juga.
pisaruk
3

Melihat dalam file mkmf, sepertinya nokogiri (atau permata, saya tidak tahu) mencoba mencari dependensi di / op / local /. Bagi saya itu bukan jalan yang benar untuk mencari mereka.

Memaksa nokogiri untuk menemukan lib di tempat yang tepat (saya menggunakan homebrew) melakukan trik untuk saya:

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

Mungkin ada sesuatu untuk diperbaiki di nokogiri ...

HTH,

Stéphane Akkaoui
sumber
3

libiconv telah dihapus dari Homebrew 0.9 Sekarang direkomendasikan untuk mengkompilasi libiconv dari sumber, kemudian referensi instal ketika Anda menginstal permata nokogiri. Lihat instruksi instalasi Nokogiri di bawah bagian Homebrew 0.9 pada halaman instalasi Nokogiri

SupaIrish
sumber
Sampai hari ini saya dapat menjalankan $ brew menginstal libiconv dan itu mengunduh dan menginstal libiconv-1.14.tar.gz
Evolve
2

Lihat di file mkmf.log di direktori build gem (misalnya /Library/Ruby/Gems/1.8/gems/nokogiri-1.4.4/ext/nokogiri/mkmf.log). Itu memiliki lebih banyak info. Dalam kasus saya ketika saya menemukan ini, Nokogiri secara khusus menambahkan / opt / local / lib ke jalur pencarian perpustakaan dan GNU Backgammon telah menginstal libiconv yang tidak kompatibel di sana.

scotchi
sumber
2

Dengan asumsi Anda menginstal libxml2 dan libxslt dengan MacPorts, maka Anda mungkin masih mendapatkan kesalahan ini karena ketidakcocokan urutan jalur sertakan dan jalur tautan yang digunakan oleh panggilan untuk have_func ('iconv_open', 'iconv.h')

Solusi sederhana (tambalan): hapus libiconv. * Di / usr / local / lib

Mick West
sumber
Saya telah libxml2 dan libxslt diinstal dengan MacPorts, tetapi tidak ada file libiconv. * Di / usr / local / lib
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/

sama seperti di atas, ini adalah solusi untuk homebrew dan menggunakan gem install (terapkan perubahan tergantung pada versi Anda)

namun, jika Anda menggunakan Gemfile dan bundle install, Anda harus menerapkan konfigurasi bundle sebelum menginstal, di sini kodenya

$ 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

sekali lagi, terapkan perubahan tergantung pada versi Anda

Semoga ini bisa membantu Anda.

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

RacsO
sumber
2

Saya memiliki masalah serupa di Mountain Lion. Ternyata saya telah menginstal libiconv via paket rvm sebelumnya dan ini tidak diperlukan lagi untuk ruby ​​1.9.3 / Mountain Lion / nokogiri.

Mengikuti saran dari https://rvm.io/packages/ , saya menghapus direktori $ rvm_path / usr saya dan membangun kembali ruby ​​1.9.3. Setelah menginstal nokogiri adalah instalasi permata sederhana. Jangan main-main dengan pembuatan bir / macports / sumber manual!

Mike
sumber
2

Anda juga bisa melakukan ini di Mavericks:

permata instal nokogiri - --use-system-libraries = true --with-xml2-include = / Aplikasi / Xcode.app / Isi / Pengembang / Platform / MacOSX.platform / Pengembang / SDKs / MacOSX10.9.sdk / usr / include / libxml2

Pastikan Anda sudah menginstal xcode

Sam Rosen
sumber
solusi yang sama juga berfungsi untuk 10.7.5: instal permata nokogiri - --use-system-libraries = true --with-xml2-include = / Aplikasi / Xcode.app / Isi / Pengembang / Platform / MacOSX.platform / Pengembang /SDKs/MacOSX10.7.sdk/usr/include/libxml2
tolginho
2

Saya berkelahi dengan Nokogiri untuk sementara waktu hari ini di OS X 10.10 Yosemite

Lingkungan saya kacau karena beberapa alasan.

which bundledan which gemmemberi saya /usr/bin/bundledan /usr/bin/gembukannya~/.rbenv/shims/gem

Apa yang membantu memperbaikinya bagi saya adalah sudo rm -i /usr/bin/gem /usr/bin/bundle

Setelah itu saya: 1. beralih kembali ke direktori proyek saya 2. menghapus dependensi 3. (re) brew install libxml2 libiconv libxslt -instal lib dependen: melakukan 4. menginstal versi ruby ​​saya yang baru (dengan rbenv) 5. melakukan gem install bundler 6. dan bundle installberlari tanpa masalah.

Nokogiri baik-baik saja setelah itu.

Sebagai referensi:

╰─% 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
Sam Figueroa
sumber
1
Kalau dipikir-pikir (yang selalu 20/20) saya mungkin bisa saja menyesuaikan variabel-PATH saya untuk terlebih dulu rbenv.
Sam Figueroa
1

Anda harus meningkatkan versi homebrew Anda menjadi 0,9

kemudian ikuti langkah-langkah ini

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

Anda harus memeriksa versi perpustakaan folder.

Ilake Chang
sumber
Tautan dan sudo akan merusak barang-barang. Mereka tong-hanya karena beberapa alasan. Gunakan formula minuman karena ada cara yang lebih mudah untuk dipelihara. brew create http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.13.1.tar.gz && brew install libiconv
1

PENGGUNA HOMEBREW

Solusi yang benar untuk memperbaiki masalah ini jika Anda menggunakan homebrew:

xcode-select --install

Pilih "Dapatkan Xcode" dari kotak dialog.

brew unlink libiconv
gem install nokogiri

Langkah-pilih xcode memperbaiki instalasi Xcode Anda dan instalasi Utilitas Baris Perintah Xcode. Saya menemukan bahwa saya tidak memiliki /usr/include/iconv.h karena beberapa jenis masalah dengan upgrade O / S atau mengembalikan dari cadangan. Jika Anda tidak memiliki file header itu dan /usr/lib/libconv.dylib setelah menjalankan xcode-select maka Anda kemungkinan besar perlu menyeret Xcode dari folder Aplikasi ke tempat sampah dan menginstal ulang lalu secara manual mengunduh Command Line Tools for Xcode dari https://developer.apple.com/downloads/index.action dan instal itu.

Maka Anda perlu memutuskan tautan libiconv dari homebrew. Kamu tidak butuh ini. Dan dentang benar-benar akan mengambil /usr/local/include/iconv.h melalui /usr/include/iconv.h dan akan #define iconv_open ke libiconv_open tetapi kemudian tautan dengan /usr/lib/libiconv.dylib yang tidak memiliki libiconv_open yang Inilah yang menyebabkan kegagalan mkmf untuk menemukan libiconv. Yang perlu Anda lakukan adalah menghapus tautan di iconv.h sehingga nokogiri tidak akan menemukannya.

Maka cukup buat nokogiri secara normal.

Untuk pengguna baru, yang harus Anda lakukan adalah menginstal xcode dengan xcode-select dan install nokogiri, tetapi jika Anda menemukan pertanyaan ini, maka mungkin Anda memiliki instalasi yang gagal dan bukan instalasi Mavericks yang baru.

Beberapa jawaban lain di sini pasti salah. Sebagian besar dari mereka mencoba menggunakan libiconv dari homebrew yang sama sekali tidak perlu. Jawaban yang brew link libiconvsebenarnya menyebabkan masalah di mana dentang menjadi bingung dan mencoba untuk membaca file header homebrew dan tautan terhadap pustaka sistem. Jawaban yang menyarankan --use-system-librariesburuk karena nokogiri perlu dikaitkan dengan pustaka libxml2 dan libxslt yang dibundel karena versi pustaka tersebut tidak kompatibel dengannya. Jawaban yang ingin Anda kompilasi dari sumber terlalu rumit.

TL; DR:

  • Tingkatkan dan / atau perbaiki instalasi Xcode Anda
  • Putuskan tautan libiconv homebrew Anda sejak mencoba menggunakannya yang hanya menyebabkan masalah
  • Bangun nokogiri secara normal

PENGGUNA RVM

Instalasi RVM lama mungkin memiliki libiconv bersembunyi di direktori rvm Anda di suatu tempat yang bertentangan dengan pustaka sistem Anda. Lihat https://stackoverflow.com/a/11809261/506908 untuk informasi lebih lanjut.

PENGGUNA MacPorts

Jika Anda memiliki /opt/local/lib/libiconv.dylib maka nokogiri menambahkan path itu ke daftar direktori yang dicari dan itu akan menemukan instalasi MacPorts mirip dengan bagaimana mengambil libiconv homebrew dan konflik dengan pustaka sistem. Anda dapat mencoba:

sudo port uninstall libiconv

Jika itu gagal karena dependensi maka Anda dapat mencoba menghubungkan langsung dengan versi MacPorts (tidak diuji):

gem install nokogiri -- --with-iconv-dir=/opt/local
lamont
sumber
Mengkonfirmasi gem install nokogiri -- --with-iconv-dir=/opt/localberfungsi dengan baik dengan MacPorts libiconvdiinstal
PartialOrder
1

Yang ini berhasil untuk saya

sudo env ARCHFLAGS = "- arch x86_64" permata instal nokogiri: 1.6.6.2 - --use-system-libraries --with-xml = / usr / local / Cellar / libxml2 / 2.9.3 / --with-iconv- dir = / usr / local / Cellar / libiconv / 1.14

Chen Kinnrot
sumber
itu adalah kombinasi dari --use-system-libraries dan --with-iconv-dir yang melakukannya untuk saya
aaaarrgh
0

Saya mengalami ini, pagi ini ... setelah upgrade ke Mavericks. Kami melakukan banyak hal. Namun, jika ada yang mengalami masalah ini, berikut adalah beberapa hal untuk dicoba.

Saya menjalankan 'xcode-select --install' kemudian menginstal alat baris perintah (terkejut ini tidak memperbarui pada OS ugrade). Saya menjalankan 'rvm implode' (saya akan membangunnya kembali nanti).

Kami menyatukan dua file output kesalahan:

~ / .vagrant.d / permata / permata / nokogiri-1.6.3.1 / ext / nokogiri / gem_make.out

~ / .vagrant.d / permata / permata / nokogiri-1.6.3.1 / ext / nokogiri / tmp / x86_64-apple-darwin12.5.0 / ports / libxml2 / 2.8.0 / configure.log

Yang sepertinya menunjukkan bahwa c compiler menggunakan pengaturan yang mengejutkan.

Saya berlari 'env'

Output berisi:

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

File-file ini tidak ada di sistem file ...

Setelah semua perubahan ini pindah ke jendela terminal baru (jadi semuanya segar). Pemasangan vagrant-berkshelf (yang kemudian menginstal nokogiri) bekerja dengan baik.

CATATAN: saat menjalankan 'env' di jendela baru tidak ada lagi pengaturan untuk CC atau CXX ...

Tidak yakin pada bagian penting dari ini, atau jika pesanan penting, tetapi mencoba untuk membuat ulang bagian yang tampaknya berperan dalam membuat ini berfungsi.

aaron blythe
sumber
Apakah Anda yakin perintah itu gem install nokogiriberhasil? Layu dengan pesan "sudah terpasang" atau instalasi berhasil?
Spundun
Iya. Saya telah menginstal ulang rvm dan oh-my-zsh ketika saya membangun kembali di Mac saya. Yang belum bisa saya pahami adalah bagaimana cara menginstal nokogiri di rvm gemset. Ketika saya beralih kembali ke 'rvm use system' saya dapat menginstal nokogiri 1.6.3.1 di atas 1.5.6 yang hadir pada OS X ruby ​​2.0.0p451.
aaron blythe
Pada akhirnya bagi saya itu adalah stackoverflow.com/questions/19643153/… buatan uninstall apple-gcc42 buatan instal apple-gcc42
aaron blythe
0

Menurut dokumentasi, pada OSX 10.9 dan Homebrew 9.5+, Anda mungkin kehilangan alat pengembangan.

Instalasi Nokogiri

Penyelesaian masalah

Jika Anda memiliki masalah menyebutkan libiconv yang hilang yang terlihat seperti ini:

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 ***

Maka Anda mungkin kehilangan alat pengembang yang tepat. Ini adalah perbaikan yang sangat mudah:

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

Ini diverifikasi bekerja pada kompiler dentang OSX 10.9 w / xcode.

rexmadden
sumber
0

Saya mendapatkan masalah ini ketika saya memutakhirkan Mac OS saya ke Yosemite. Saya dapat mengatasi masalah ini dengan melakukan:

xcode-select --install
brew uninstall libiconv
brew install libiconv
gem install nokogiri
Lalu
sumber
0

Saya memiliki masalah yang sama dan jawaban yang diterima digunakan untuk saya. Sekarang, bagaimanapun saya telah melihat pesan kesalahan baru di mana gmkdirperintah tidak ada seperti dalam pertanyaan ini:

gem install nokogiri -v '1.5.11' gagal karena membuat: / usr / local / bin / gmkdir: Tidak ada file atau direktori seperti itu

Apa yang berhasil bagi saya adalah pembersihan pertama:

brew uninstall libiconv
brew uninstall libxml2
brew uninstall libxslt

Dan kemudian brew unlink libiconvdan apa pun yang Anda butuhkan untuk memutuskan tautan (tanyakan brew doctor). Kemudian, keajaiban dua baris (disalin dari jawaban yang ditautkan):

brew install coreutils
gem install nokogiri
Skensell
sumber
0

Langkah-langkah sederhana untuk diikuti sebelum Anda mulai menghapus dan memasang apa pun. Periksa apakah Anda memiliki CLT (alat baris perintah terpasang):

brew config

lihat versi CLT di sini jika diinstal tidak perlu menginstal ulang.

Ini artinya masalahnya adalah dengan izin Anda menginstal ulang hanya bundler gem make bukan sudo. Copot bundler dengan gem uninstall bundler instal ulang bundel permata gem install bundler

Poin paling penting di sini adalah izin di mana permata bundler diinstal itu tidak boleh sudoed.

Pikachu-go
sumber
-1

Pertama-tama pastikan Anda mengikuti panduan instalasi di nokogiri: http://nokogiri.org/tutorials/installing_nokogiri.html

Setelah mengikuti panduan saya masih memiliki masalah ini. Inilah cara saya menyelesaikannya:

Pertama-tama saya menginstal iconv menggunakan homebrew: brew install iconv

Lalu saya uninstall ruby, untungnya ini sangat mudah dengan rvm:

rvm uninstall 1.9.2        

Kemudian saya harus menginstal ulang ruby ​​dengan opsi berikut:

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

Lalu saya membuat permata dengan versi ruby ​​baru:

rvm use 1.9.2@coolproject

Maka akhirnya saya dapat menginstal nokogiri seperti ini:

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
Brian Jensen
sumber
-1

Dalam kasus saya, (seperti halnya scotchi) build gagal karena pustaka iconv yang tidak kompatibel di / opt / local / lib. Secara default, proses pembuatan Nogogiri melihat / opt / local terlebih dahulu. Untuk memaksanya menggunakan direktori instal yang berbeda, / usr / local misalnya, lakukan:

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
Beritahukan
sumber
-1

Posting blog ini mengusulkan untuk menginstal libiconv secara manual.

Selanjutnya, nokogiri dapat diinstal dengan sejumlah sakelar yang memberitahukan tempat menemukan libiconv (lihat posting blog).

Sebagai catatan: Setelah menginstal nokogiri, saya berhasil menginstal gollum (instalasi yang juga gagal karena tidak dapat menemukan iconv). Sekarang saya masih menghadapi masalah, karena ketika saya memulai gollum, Python crash.

gaston
sumber
-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*

Perhatikan file /lib/iconv/iconv.so yang HILANG di 2.0.0-p247 yang ada pada instalasi permata 2.0.0-p0.

$ 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'

Salin file ke atas

$ 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/

SEKARANG ITU BEKERJA!

$ pry
[1] pry(main)> require 'iconv'
=> true
Darren Weber
sumber
Catatan: Saya sedang bekerja dengan rbenv, tetapi masalah ini khusus untuk instalasi permata dan harus diperbaiki alirannya!
Darren Weber
jawaban ini tidak ada hubungannya dengan perpustakaan C libiconv yang membangun nokogiri tergantung. Jawabannya harus benar-benar dihapus.
lamont
-1

Saya harus menginstal gcc terlebih dahulu sebelum menjalankan ./configure --prefix=/usr/local/Cellar/libiconv/1.13.1

Cody Barr
sumber