rubyのファイル構成

ソースツリーのファイルについては本編で話した。 こちらはインストール後のファイル構成の話である。

autoconfの想定するインストールイメージ

ruby は autoconf の configure を使っているため、 それに色濃く影響されている。autoconf の想定する ディレクトリ構造は次のようなものだ (少し簡略化してある)。

名称定義置くもの
bindir$prefix/binコマンド
libdir$prefix/libライブラリ (lib*.so, lib*.a)
libexecdir$prefix/libexecコマンドの中だけから使うコマンド
datadir$prefix/shareプラットフォーム独立形式のファイル
mandir$prefix/manUNIX のマニュアルページ

$prefix はデフォルトでは /usr/local である。 configure の --prefix オプションを指定すると変わる。 またもちろん $prefix/bin 全体も --bindir で変えられるし ライブラリのディレクトリは --libdir で変えられる。 これはあくまでデフォルトの話だ。 しかしこのデフォルトは UNIX でのかなり典型的な ディレクトリツリーのイメージではある。

bindir

ruby が bindir にインストールするのは ruby と irb だけである。 irb は interactive ruby の略で、コマンドラインから使える 対話的なインタプリタである。これ自体も Ruby で書いてある。

libdir

ここが一番複雑である。順番に話す。

$libdir/libruby.so

まず libdir のトップに共有ライブラリ libruby.so。 libruby.so は ruby 世界の外から見えないと困るので、 一般のライブラリがある場所に置かなければならない。 ちなみに言うまでもないと思うがこれが置かれるのは --enable-shared のときだけである。

$libdir/ruby/

その下に ruby/ がある。ここにいきなり Ruby ライブラリを 置いてもいい。

$libdir/ruby/$VERSION/            # /usr/local/lib/ruby/1.7/
$libdir/ruby/$VERSION/$arch       # /usr/local/lib/ruby/1.7/i686-linux

ruby のバージョン番号のディレクトリの下には ruby のバージョン依存のライブラリが入る。 具体的には .../ruby/1.7 は標準添付ライブラリ (ソースツリーの lib/ 以下) である。 また .../ruby/1.7/i686 以下には、バージョン依存でしかも アーキテクチャ依存のファイルが入る。 つまり標準添付の拡張ライブラリ (ソースツリーの ext/ 以下) だ。

$libdir/ruby/site_ruby/$VERSION/
$libdir/ruby/site_ruby/$VERSION/$arch

さらに途中に site_ruby がはさまるっているディレクトリは、 このコンピュータ用の独自ライブラリを入れる場所である。 このディレクトリを指して単に site_ruby と言うことも多い。 ruby はここには何もインストールしないのでユーザの好きな ライブラリを入れて構わない。あるいは、自分でインストール するときにはこちらに入れるべきだ、と言ってもいい。

libexec

ruby では libexec は使わない。

datadir

datadir も使わない。Emacs なんかは Lisp のライブラリを datadir に 入れるのだが、ruby は全部 libdir に入れる。拡張ライブラリがあるから だろう。perl や python も全部 libdir だ。

mandir

$mandir/man1/ruby.1

実は man ページもひっそりと存在する。

Copyright (c) 2002 Minero Aoki <aamine@loveruby.net>