ソースツリーのファイルについては本編で話した。 こちらはインストール後のファイル構成の話である。
ruby は autoconf の configure を使っているため、 それに色濃く影響されている。autoconf の想定する ディレクトリ構造は次のようなものだ (少し簡略化してある)。
名称 | 定義 | 置くもの |
---|---|---|
bindir | $prefix/bin | コマンド |
libdir | $prefix/lib | ライブラリ (lib*.so, lib*.a) |
libexecdir | $prefix/libexec | コマンドの中だけから使うコマンド |
datadir | $prefix/share | プラットフォーム独立形式のファイル |
mandir | $prefix/man | UNIX のマニュアルページ |
$prefix はデフォルトでは /usr/local である。 configure の --prefix オプションを指定すると変わる。 またもちろん $prefix/bin 全体も --bindir で変えられるし ライブラリのディレクトリは --libdir で変えられる。 これはあくまでデフォルトの話だ。 しかしこのデフォルトは UNIX でのかなり典型的な ディレクトリツリーのイメージではある。
ruby が bindir にインストールするのは ruby と irb だけである。 irb は interactive ruby の略で、コマンドラインから使える 対話的なインタプリタである。これ自体も Ruby で書いてある。
ここが一番複雑である。順番に話す。
$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 はここには何もインストールしないのでユーザの好きな ライブラリを入れて構わない。あるいは、自分でインストール するときにはこちらに入れるべきだ、と言ってもいい。
ruby では libexec は使わない。
datadir も使わない。Emacs なんかは Lisp のライブラリを datadir に 入れるのだが、ruby は全部 libdir に入れる。拡張ライブラリがあるから だろう。perl や python も全部 libdir だ。
$mandir/man1/ruby.1
実は man ページもひっそりと存在する。
Copyright (c) 2002 Minero Aoki
<aamine@loveruby.net>