base/ports split: analysis2006年04月07日 06時31分55秒

/var/db/pkg に ports/packages でインストールした物の情報が保持される。なお、/var/db/ports には、ports のコンパイルオプションが保持される。

pkg 以下を覗くと、@cwd がインストールディレクトリを指定するようだ。


% grep @cwd */+CONT* | cut -f 2 -d' ' | sort | uniq
.
/
/compat/linux
/usr/X11R6
/usr/local
@cwd

何だか変な出力が。もう少し、見やすいようにしてみる。

% awk '/@cwd/{print}' */+CONT* | sort | uniq | less
@comment @cwd /usr/X11R6
@cwd .
@cwd /
@cwd /compat/linux
@cwd /usr/X11R6
@cwd /usr/local

ん。ルートディレクトリに突っ込む ports があるらしい。後で、調べねば。

local はいつも FreeBSD の ports が色々入れるところで、よく知られている。しかし、/usr/local ばかり強調されるが、それは間違っているようだ。/usr/X11R6 には X 関連のものが入るがかなりの量のものが入っている。


# cd /usr; du -s local X11R6
3646588 local
531784  X11R6

Java コンパイラが、linux のも含めて、五つぐらい入っているので /usr/local が大きいのは予想されたことだが、X11R6 も十分大きい。

% grep -A1000 '@cwd \.$' */+C* | less
Hermes-1.3.3_1/usm-1.3.3_1/+CONTENTS:@cwd .
Hermes-1.3.3_1/+CONTENTS-@ignore
Hermes-1.3.3_1/+CONTENTS-+COMMENT
Hermes-1.3.3_1/+CONTENTS-@comment MD5:9310f6d7ee02e038da68b03efdf4d7bc
Hermes-1.3.3_1/+CONTENTS-@ignore
Hermes-1.3.3_1/+CONTENTS-+DESC
Hermes-1.3.3_1/+CONTENTS-@comment MD5:3c56525e4bc1280cba524d194d10be4d
Hermes-1.3.3_1/+CONTENTS-@ignore
Hermes-1.3.3_1/+CONTENTS-+MTREE_DIRS
Hermes-1.3.3_1/+CONTENTS-@comment MD5:fb5c522ba3ebbed5ebe23270a8dfc9e5
Hermes-1.3.3_1/+CONTENTS-@mtree +MTREE_DIRS
--
ORBit-0.5.17_2/+CONTENTS:@cwd .
ORBit-0.5.17_2/+CONTENTS-@ignore
ORBit-0.5.17_2/+CONTENTS-+COMMENT
...

これの結果によると、@cwd . は /var/db/pkg を指すらしい。全てのファイルにないところを見ると、少々古いものに入っているのだろうか。

/var/db/pkg は pkg_* が使うディレクトリなので、ports を分けるには、否応なしにも別の方法で分けるしかない。/var/db/ports は ports 自体の設定ファイルになるので、ここでいいと思うが、/var/db/pkg は感心できない。/usr/local/var/db/pkg や /var/local/db/pkg 等、/usr/local 以下に置いた方が、ベースシステムから切り離すのに向いている。

pkg tools はこのデータベースを指定する方法がないので、何らかの対処を施す必要がある


% grep compat */+C* | grep cwd
linux-atk-1.2.0_3/+CONTENTS:@cwd /compat/linux
linux-esound-0.2.22_4/+CONTENTS:@cwd /compat/linux
linux-expat-1.95.5_3/+CONTENTS:@cwd /compat/linux
linux-fontconfig-2.2.3/+CONTENTS:@cwd /compat/linux
linux-jpeg-6b.15_4/+CONTENTS:@cwd /compat/linux
linux-libaudiofile-0.1.11_5/+CONTENTS:@cwd /compat/linux

linux-png-1.2.7_6/+CONTENTS:@cwd /compat/linux
linux-tiff-3.6.1_3/+CONTENTS:@cwd /compat/linux
linux_base-rh-7.3/+CONTENTS:@cwd /compat/linux

/compat にはもちろん compat のが入っているのである。この内容からすると、ライブラリ関連のみのようだ。

%grep -A1000 '@cwd /$' */+C*
qemu-0.7.2s.20050909_2/+CONTENTS:@cwd /
qemu-0.7.2s.20050909_2/+CONTENTS-@comment %%KMODDIR%%/kqemu.ko

ルートパーティションに突っ込んでたのは、qemu だった。カーネルは別に入れ換えることが多いから、カーネルモジュールは別途に保存しておいた方がよさそうだ。

以上の情報を元に、/ports を作り、以下のように配置する事にした。


# find /ports
/ports
/ports/compat/linux
/ports/X11R6
/ports/db/pkg

恐らく、これを nullfs を利用してと、本来の位置に mount する事になると思われる。ln -s は避けたいところである。

また、linprocfs を使うときには、fstab の順番にも多少気を使う必要がある。今、気がついたのだが、/compat は usr/compat へのリンクになっているようだ。自分で作ったものか ports が作ったものかは定かではない。

前回次回

コメント

コメントをどうぞ

※メールアドレスとURLの入力は必須ではありません。 入力されたメールアドレスは記事に反映されず、ブログの管理者のみが参照できます。

※なお、送られたコメントはブログの管理者が確認するまで公開されません。

名前:
メールアドレス:
URL:
コメント:

トラックバック

このエントリのトラックバックURL: http://uyota.asablo.jp/blog/2006/04/07/318600/tb

※なお、送られたトラックバックはブログの管理者が確認するまで公開されません。