Я пытаюсь запустить Ruby Gem "Nokogiri" на машине Solaris, где у меня нет привилегий root.Что я сделал до сих пор:
- Я собрал свою собственную версию ruby (1.9.2p180) в своем домашнем каталоге
- попытался установить nokogiri с помощью "gem install nokogiri"
После установки gem выдается эта ошибка:
Building native extensions. This could take a while...
ERROR: Error installing nokogiri:
ERROR: Failed to build gem native extension.
/home/bender/ruby/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.
Поэтому я скачал и собрал libiconv в / home / myuser / work / libiconv
$ ls /home/myuser/work/libiconv/
bin build include lib share
И передал локации в качестве аргументов для nokogiri:
gem install nokogiri -- --with-iconv-dir=/home/myuser/work/libiconv --with-iconv-include=/home/myuser/work/libiconv/include --with-iconv-lib=/home/myuser/work/libiconv/lib
Теперь драгоценный камень строится и никаких ошибок не отображается.Проблема в том, что когда я сейчас пытаюсь его использовать, например, в irb он как-то не загружается:
require 'nokogiri'
LoadError: ld.so.1: ruby: fatal: libiconv.so.2: open failed: No such file or directory - /home/myuser/ruby/lib/ruby/gems/1.9.1/gems/nokogiri-1.4.4/lib/nokogiri/nokogiri.so
from /home/myuser/ruby/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:36:in `require'
from /home/myuser/ruby/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:36:in `require'
from /home/myuser/ruby/lib/ruby/gems/1.9.1/gems/nokogiri-1.4.4/lib/nokogiri.rb:13:in `<top (required)>'
from /home/myuser/ruby/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:57:in `require'
from /home/myuser/ruby/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:57:in `rescue in require'
from /home/myuser/ruby/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:35:in `require'
from (irb):1
from /home/myuser/ruby/bin/irb:12:in `<main>'
Но когда я ищу файл, который должен отсутствовать, он там и также читаемый / исполняемый:
ll /home/myuser/ruby/lib/ruby/gems/1.9.1/gems/nokogiri-1.4.4/lib/nokogiri/
total 66
...
-rwxr-xr-x 1 myuser group 370552 Jun 6 22:53 nokogiri.so
...
Хорошо, и вот где я застрял ... файл есть, но не может быть открыт?Я попытался восстановить libiconv, который не имел никакого эффекта.Nokogiri не выдаёт ошибку, что процесс сборки завершится неудачей.Так что я не знаю, как решить эту проблему, и Google также не может дать мне ответы.Я надеюсь, что кто-то здесь может дать мне несколько подсказок.
/ edit
Я погуглил еще немного и нашел этот пост , где кто-то использует ldd для показа зависимостей.Когда я делаю то же самое для nokogiri, он говорит:
ldd /home/myuser/ruby/bin/nokogiri
ldd: /home/myuser/ruby/bin/nokogiri: unsupported or unknown file type
Я полагаю, это потому, что это рубиновый файл, но в случае его актуальности я хочу упомянуть об этом.