POPSの作成手順
Meta Packageで綺麗にできればいいのにね(試してから言えよ)。
portupgradeで綺麗にできればいいのにね(試してから言えよ)。
結局色々細々とした手作業が必要なような気がしています。
まずFreeBSDのリリースを待ちます。これはリリースと同時にpackagesもまとめて
作成されるからです。まあ見方によっては楽をするためとも言える。
リリースされたら配布されているパッケージのリストを入手します。ftpしてls
した結果をファイルに落せば良いでしょう。例えばこんな感じ
kimoto@eterna% ftp
ftp> open ftp.freebsd.org
Connected to ftp.beastie.tdk.net.
220 ftp.beastie.tdk.net FTP server (Version 6.00LS) ready.
Name (ftp.freebsd.org:kimoto): ftp
331 Guest login ok, send your email address as password.
Password:
230 Guest login ok, access restrictions apply.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> cd /pub/FreeBSD/releases/i386/4.6.2-RELEASE/packages
250 CWD command successful.
ftp> cd All
250 CWD command successful.
ftp> nlist . list_remote
これでlist_remoteというファイルに配布されているpackageのリストが入ります。
次にPOPSで導入するべきパッケージ名のベース名のリストを作成します。これは
三段階のフェイズに分けて作っておきます。
例えばFreeBSD 4.5-RELEASE用のベース名ファイルは
phase1_base,
phase2_base, phase3_base
になります。これを作成するには迂余曲折があったのですが、まあとりあえずある
ものとします。どうせここから更に迂余曲折があるので。
次に、ベース名リストと実際にあるパッケージ名とのマッチングを行ないます。
このためにpickup.plというスクリプトを作りました。
とりあえず、ベース名リストは全部catしてlist_baseというファイルに格納して
おいて作業します。
kimoto@eterna% cat phase1_base phase2_base phase3_base > list_base
kimoto@eterna% ./pickup.pl list_base list_remote > pickup.result
するとpickup.resultというファイルに結果が入り
ます。で、これを目で見ます。すると色々問題がみつかるので手で直します。
直すべきは、複数マッチしている箇所と[NONE]になっている箇所です。前者は
適当なバージョンを選んで(大抵は新しいのだけあれば大丈夫)残りは消します。
[NONE]になっているのは、どうでも良いから無視して良い場合と、適切な
バージョンを選び直さないといけない場合があるので大変です。大変だけど
頑張ります。ここらへんは実際にpkg_addしながら確認しても良いでしょうし、
もしかしたらportupgradeしてその結果を元にしても良いのかもしれません。
私は野生人なので野生の勘でえいやと編集します。
……。
できましたか?できたら、それらのパッケージをdownloadします。といっても手動
でやっていると死ぬので、fetch_pickuped.pl
というスクリプトを作りました。
kimoto@eterna% mkdir packages
kimoto@eterna% mkdir packages/All
kimoto@eterna% ./fetch_pickuped.pl pickup.result
そうすると、必要そうなファイルが全部ftpできます。この上で再度チェックして
みましょう。
kimoto@eterna% cd packages/All
kimoto@eterna% ls > ../../list_local
kimoto@eterna% ./pickup.pl list_base list_remote > pickup.result
こうするとpickup.resultにはそれなりに綺麗なリストができますが、まだ
[NONE]が現れます。これらは(色々な理由があるけど)FTPサイトにcompile済
パッケージが置かれていないものです。自力でportsからmake してmake package
しましょう。
そうしてmake packageしたものをpackage/Allの下に置くと、これでだいたい
出来上がりです。
ただし、FreeBSD 4.6.2-RELEASEの場合は以下の問題がありました。
- apahce-2がリリース時のportsのapache2のバージョンではsecurity hole
があり、利用できない。
- gnomelibにバグがあり、リリース時のportsが利用できない。
この二つ関しては、/usr/portsをCVSupして最新の物をmakeしてmake packageしま
した。ところがそうすると他の依存しているpackageのバージョンとの間に不整合
が生じます。仕方がないので、今回はこの二つは強制インストールの対象と
しました。ま、多分大丈夫でしょう。
本当はCVSupした/usr/potsから、必要なものだけmakeしてpackageして集めてくる
という作業をするべきなのでしょうが。
Masahiko KIMOTO <kimoto@ohnolab.org>
Last modified: Fri Sep 6 12:38:00 2002