gports 第一段2007年07月10日 10時17分15秒

portupgrade が遅いので、それに変わるものを実験している。まだ、実際に使うのには足りない部分があるが、更新手順を表示するだけなら、ほぼ期待通りの動作をしている。そこで、試しに一般公開をしてみることにした。GNU make を使った、ports システムの拡張なので、安直に gports と開発コードを付けてみた。

動作環境は、gmake と gawk の入っている FreeBSD。GNU make の独自拡張機能を最大限に使うように組んである。そのため、他の make では動作不可能だ。gawk 以外の awk でも動くかも知れないが、今のところは gawk を前提としている。

ダウンロードした後に展開されるディレクトリのみで動作する。


# fetch http://www.ne.jp/asahi/export/uyota/src/gports-1.36.tar.bz2
# md5 gports-1.36.tar.bz2 
MD5 (gports-1.36.tar.bz2) = 17526006ff5df0418e363261884eb3c4
# tar xvf gports-1.36.tar.bz2
# cd gports
# gmake -n sylpheed all

インストールされている ports のディレクトリ名を元とした名前と、all がターゲットとして有効だ。all はインストールされている ports を全て最新にアップグレードすることを示す。

実際に ports を更新する為に実行するのは、まだ調整中のため控えて欲しい。MOVED の処理はまだ未実装なので、どのような動作をするのかは不明だ。また、実際に動かすと ports を更新するが、+CONTENTS の更新が未実装なので、整合性の無い +CONTENTS が出来てしまう。これは pkgdb を使えば、問題なく修正できるとは思う。この様な理由で、gports を使っての ports の更新は、勧められない。もし gports を実際に実行するのであれば、バックアップの用意なども含めて、試して欲しい。 gmake -n でのみ使うよう推奨する。

更新を控えたい ports は gports.conf に記述する。


GPORTS_IGNORE =
GPORTS_IGNORE += rubygem.*
GPORTS_IGNORE += ruby18.*

などのように、正規表現を用いて指定する。awk の正規表現なので、portupgrade の書式とは違うのに注意して頂きたい。単純な変換方法としては、portupgrade の * の前に点(.) を付ければ、ほとんどの場合は十分であろう。

前回次回