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?
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.sudo gem install nokogiri
". Jangan gunakansudo
untuk menginstal permata atau memodifikasi Ruby default. Alih-alih menggunakan rbenv atau RVM untuk mengelola Ruby yang terpisah. Ini dibahas beberapa kali di Stack Overflow.Jawaban:
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:
Catatan : Di OSX 10.9+ Anda mungkin perlu menginstal alat perintah xCode untuk memungkinkan Anda menginstal libiconv.
kemudian instal versi libiconv yang lebih baru
lalu instal permata Anda
sumber
brew install libiconv
meludahkan: 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.xcode-select --install
. Ini memperbaiki masalah bagi saya.brew install libiconv
mendapatkan formula yang tepat, gunakan ini:brew tap homebrew/dupes
Yosemite
(10.10) Saya tidak perlu melakukanbrew
hal - hal itu; hanyaxcode-select --install
memperbaiki masalah ini untukku.Coba gunakan pustaka sistem. OSX hadir dengan libiconv dalam versi yang lebih baru, tetapi skrip instalasi default tampaknya memiliki masalah
Sunting: Jika menggunakan bundler, seperti yang disebutkan oleh Geoff Anda dapat melakukannya:
sumber
libxml2 version 2.6.21 or later is required!
.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:
lalu pasang permata Anda:
sumber
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 nokogiri
menggunakan 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):
Pada titik ini saya mengikuti petunjuk di situs nokogiri dan mencoba
Namun, ini masih gagal karena ketika membangun libxslt dari sumber, ia menginstal
/include
folder di tempat yang funky. Jadi, Anda perlu menentukanlib
daninclude
folder secara terpisah seperti:Ini masih tidak berhasil (kesalahan libiconv yang sama), jadi saya mencoba menentukan ketiga pustaka yang diperlukan (libxslt, libxml2 dan libiconv):
Sekarang saya mendapat kesalahan yang berbeda! Itu masih kesalahan tetapi setidaknya itu berbeda. Proses make gagal dengan:
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
lagi dan semuanya baik-baik saja. Saya harap ini membantu orang lain.
sumber
Hanya menambahkan suara saya ke kerumunan, tetapi mkmf.log mengatakan sesuatu tentang tidak dapat menemukan simbol untuk arsitektur x86_64. Saya menemukan solusi ini:
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.
sumber
ARCHFLAGS="-arch x86_64" sudo gem install nokogiri -- --use-system-libraries
berhasil ...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 versi
1.6.6.4
sumber
--with-xml2-include
opsi untuk saya di Catalina ...gem install nokogiri --version=1.6.6.2 -- --use-system-libraries
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
Instal libxml2 libxslt
Tautkan kedua libxml2 libxslt
Jika Anda mendapat peringatan untuk menggunakan --force, cukup gunakan perintah di bawah ini
Instal alat perintah xCode untuk memungkinkan Anda menginstal libiconv
Instal libiconv
Langkah terakhir, instal nokogiri!
sumber
Saya memecahkan ini
Yosemite
berjalanRuby 2.1.4
denganxcode-select --install
, kemudianxcode-select --install
tidak melakukan - desah)bundle install
bekerja seperti biasa.Saya juga melakukan
brew install libiconv
tetapi saya tidak yakin bahwa langkah diperlukan.sumber
brew install libiconv
itu 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.xcode-select --install
dan saya dapat menginstal Nokogiri.Saya mencoba banyak hal tetapi tidak ada yang berhasil untuk saya. Kemudian saya akhirnya menemukan dokumentasi iconv dan menyelamatkan hari saya!
sumber
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:
Mungkin ada sesuatu untuk diperbaiki di nokogiri ...
HTH,
sumber
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
sumber
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.
sumber
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
sumber
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
sekali lagi, terapkan perubahan tergantung pada versi Anda
Semoga ini bisa membantu Anda.
kredit: https://gist.github.com/1344331
sumber
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!
sumber
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
sumber
Saya berkelahi dengan Nokogiri untuk sementara waktu hari ini di OS X 10.10 Yosemite
Lingkungan saya kacau karena beberapa alasan.
which bundle
danwhich gem
memberi saya/usr/bin/bundle
dan/usr/bin/gem
bukannya~/.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. melakukangem install bundler
6. danbundle install
berlari tanpa masalah.Nokogiri
baik-baik saja setelah itu.Sebagai referensi:
sumber
Anda harus meningkatkan versi homebrew Anda menjadi 0,9
kemudian ikuti langkah-langkah ini
Anda harus memeriksa versi perpustakaan folder.
sumber
brew create http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.13.1.tar.gz && brew install libiconv
PENGGUNA HOMEBREW
Solusi yang benar untuk memperbaiki masalah ini jika Anda menggunakan homebrew:
Pilih "Dapatkan Xcode" dari kotak dialog.
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 libiconv
sebenarnya menyebabkan masalah di mana dentang menjadi bingung dan mencoba untuk membaca file header homebrew dan tautan terhadap pustaka sistem. Jawaban yang menyarankan--use-system-libraries
buruk 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:
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:
Jika itu gagal karena dependensi maka Anda dapat mencoba menghubungkan langsung dengan versi MacPorts (tidak diuji):
sumber
gem install nokogiri -- --with-iconv-dir=/opt/local
berfungsi dengan baik dengan MacPortslibiconv
diinstalYang ini berhasil untuk saya
sumber
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:
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.
sumber
gem install nokogiri
berhasil? Layu dengan pesan "sudah terpasang" atau instalasi berhasil?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:
Maka Anda mungkin kehilangan alat pengembang yang tepat. Ini adalah perbaikan yang sangat mudah:
Ini diverifikasi bekerja pada kompiler dentang OSX 10.9 w / xcode.
sumber
Saya mendapatkan masalah ini ketika saya memutakhirkan Mac OS saya ke Yosemite. Saya dapat mengatasi masalah ini dengan melakukan:
sumber
Saya memiliki masalah yang sama dan jawaban yang diterima digunakan untuk saya. Sekarang, bagaimanapun saya telah melihat pesan kesalahan baru di mana
gmkdir
perintah 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:
Dan kemudian
brew unlink libiconv
dan apa pun yang Anda butuhkan untuk memutuskan tautan (tanyakanbrew doctor
). Kemudian, keajaiban dua baris (disalin dari jawaban yang ditautkan):sumber
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 permatagem install bundler
Poin paling penting di sini adalah izin di mana permata bundler diinstal itu tidak boleh sudoed.
sumber
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:
Kemudian saya harus menginstal ulang ruby dengan opsi berikut:
Lalu saya membuat permata dengan versi ruby baru:
Maka akhirnya saya dapat menginstal nokogiri seperti ini:
sumber
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:
sumber
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.
sumber
Perhatikan file /lib/iconv/iconv.so yang HILANG di 2.0.0-p247 yang ada pada instalasi permata 2.0.0-p0.
Salin file ke atas
SEKARANG ITU BEKERJA!
sumber
Saya harus menginstal gcc terlebih dahulu sebelum menjalankan
./configure --prefix=/usr/local/Cellar/libiconv/1.13.1
sumber