グローバルにある共有ライブラリをローカルのrbenvから参照する

グローバルインストールしたRuby-mapscriptをローカルのrbenvから参照するためにシンボリックリンクを張って対処しました。経緯を記載します。

ubuntu14.04の場合、aptからインストールしたRuby-mapscriptは以下のパスに存在します。

/usr/lib/x86_64-linux-gnu/ruby/vendor_ruby/2.0.0/mapscript.so

デフォルトのRubyからはこの共有ライブラリを参照できます。

$ /usr/bin/ruby2.0 -e 'puts $:'

/usr/local/lib/site_ruby/2.0.0
/usr/local/lib/x86_64-linux-gnu/site_ruby
/usr/local/lib/site_ruby
/usr/lib/ruby/vendor_ruby/2.0.0
/usr/lib/x86_64-linux-gnu/ruby/vendor_ruby/2.0.0
/usr/lib/ruby/vendor_ruby
/usr/lib/ruby/2.0.0
/usr/lib/x86_64-linux-gnu/ruby/2.0.0
$ /usr/bin/ruby2.0 -e "require 'mapscript'" && echo $?

0

しかしながら、rbenvを使ってユーザーのローカル環境にインストールした場合、Rubyからはこのフォルダを参照できません。

$ ~/.rbenv/shims/ruby -e 'puts $:'

~/.rbenv/rbenv.d/exec/gem-rehash
~/.rbenv/versions/2.2.1/lib/ruby/site_ruby/2.2.0
~/.rbenv/versions/2.2.1/lib/ruby/site_ruby/2.2.0/x86_64-linux
~/.rbenv/versions/2.2.1/lib/ruby/site_ruby
~/.rbenv/versions/2.2.1/lib/ruby/vendor_ruby/2.2.0
~/.rbenv/versions/2.2.1/lib/ruby/vendor_ruby/2.2.0/x86_64-linux
~/.rbenv/versions/2.2.1/lib/ruby/vendor_ruby
~/.rbenv/versions/2.2.1/lib/ruby/2.2.0
~/.rbenv/versions/2.2.1/lib/ruby/2.2.0/x86_64-linux
$ ~/.rbenv/shims/ruby -e "require 'mapscript'"

/home/user/.rbenv/versions/2.2.1/lib/ruby/2.2.0/rubygems/core_ext/kernel_require.rb:54:in `require': cannot load such file -- mapscript (LoadError)
	from /home/user/.rbenv/versions/2.2.1/lib/ruby/2.2.0/rubygems/core_ext/kernel_require.rb:54:in `require'
	from -e:1:in `<main>'

&lt;

グローバルインストールしたRuby-mapscriptへのシンボリックリンクをローカル環境に貼ることで、ローカルのRubyからRuby-mapscriptを参照できるようになりました。

$ ln -s /usr/lib/x86_64-linux-gnu/ruby/vendor_ruby/2.0.0/mapscript.so ~/.rbenv/versions/2.2.1/lib/ruby/vendor_ruby/2.2.0/x86_64-linux/mapscript.so
$ ~/.rbenv/shims/ruby -e "require 'mapscript'" && echo $?

0

他にもパスを追加するなどの方法があると思います。このようにRubyGemとして提供されていないライブラリをrbenvから使う場合、何か対処が必要なようです。これが根本的な解決方法なのかははっきりとは分かりません。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です