さくらサーバにrubygems
そろそろ、さくらのサーバでrailsを動かしてみようかなと思い、さくらのサーバにsqliteと、rubygemsを入れました。ものぐさだったので、rubyはサーバに入っているものを使って、gemを/home/user/local以下にインストールしました。
次にrailsをインストールしたところまではよかったのですが、sqlite3-rubyをインストールしようと
gem install sqlite3-ruby
を実行すると
gem Operation not permitted
というようなエラーが。
$GEM_HOME/sqlite3-ruby-1.2.1/ext/sqlite3_api/Makefileをみると、なぜか
INSTALL = /usr/bin/install -c -o root -g wheel
になっており、rootでインストールをしようとして、パーミッションエラーが発生してるみたいでした。拡張ライブラリはだめなのかなと思い、Hpricotも試してみましたが、同様のエラーが。
調べると、Rubyの拡張ライブラリでは、mkmfというライブラリでMakefileが作成されている事がわかりました。それで手元のWindowsの環境のmkmf.rbを見ると、以下のような該当と思われる行が1088行付近にありました。
INSTALL = #{config_string('INSTALL') || '@$(RUBY) -run -e install -- -vp'}
それで、次は66行目付近のconfig_stringを見ると
def config_string(key, config = CONFIG) s = config[key] and !s.empty? and block_given? ? yield(s) : s end
というわけで、CONFIGにたどり着いたので、grepをかけてみると、c:/ruby/lib/ruby/1.8/i386-mswin32/rbconfig.rbが該当し、
CONFIG["INSTALL"] = "copy > nul"
になっていました。そこでサーバで以下を試すと
% ruby -rrbconfig -e "puts Config::CONFIG['install']" /usr/bin/install -c -o root -g wheel
とMakefileと同じ内容が。どうしようかと思ったんですが、あきらめてrubyをソースからインストールして、再度gemをインストールすると、sqlite3-rubyもHpricotも無事にインストールする事ができました。
とりあえず、少し勉強になったので、よしという事にします。