さくらサーバに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も無事にインストールする事ができました。


とりあえず、少し勉強になったので、よしという事にします。