ルート権限を持たないSolarisマシンでRubygem「Nokogiri」を実行しようとしています。私がこれまでにしたこと:
- ホームディレクトリに独自のルビーバージョン(1.9.2p180)を作成しました
- 「geminstallnokogiri」でnokogiriをインストールしようとしました
次に、geminstallは次のエラーをスローしました。
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.
だから私は/home/ myuser / work/libiconvに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
これでgemがビルドされ、エラーは表示されません。問題は、私が今それを使おうとすると、例えば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は、ビルドプロセスが失敗したというエラーをスローしません。だから私はこれを解決する方法がわからず、グーグルも私に答えを与えることができませんでした。ここの誰かが私にいくつかのヒントを教えてくれることを願っています。
/編集
私はもう少しグーグルで調べて、誰かが依存関係を示すためにlddを使用しているこの投稿を見つけました。nokogiriについても同じことをすると、次のようになります。
ldd /home/myuser/ruby/bin/nokogiri
ldd: /home/myuser/ruby/bin/nokogiri: unsupported or unknown file type
これはルビーファイルだからだと思いますが、関係がある場合は言及したいと思います。