gports 第五段2007年07月16日 12時20分43秒

今回は、何も修正がない。gports は初期設定では、ports を最新バージョンに更新するようになっている。しかし、これらのコマンドを変更することも出来る。make の特色を利用している。

gports は INDEX と pkgdb を読み込み三種類の ports に分ける。インストールされていない NEW、更新の必要な UPGRADE、既に最新のため、更新する必要の無い NOOPに分類される。

NEW
インストールされていない ports。他の ports の新しい依存関係により、インストールされる事がある。そのため、新規インストールのコマンドが初期値になっている。
UPGRADE
更新の必要な ports。動作に必要なライブラリなどの依存関係に沿って、更新されていく。また、動的ライブラリを提供する ports では .so ファイルが保存される。現在のところは、make deinstall の前にパッケージを生成し、make reinstall に失敗したら、元の ports に戻される。また、+CONTENTS ファイルも更新し、新しい依存関係に変更する。
NOOP
既に最新のものがインストールされている ports。特に何もする必要はない。

これらの動作を変えて別の処理をするのにも使える。 例えば、更新の必要な ports のソースを全て展開したい場合は、以下のように行なえる。


# gmake all UPGRADE='$(BSDMAKE) extract'

make プログラムの間で、親 make と 子 make プロセス間の引数の与え方は特に規則がない。そのため、GNU make から BSD make を呼び出すと、GNU make への引数を BSD make が処理できなくて、中止してしまう。そのれを避けるために定義されている BSDMAKE を使う必要がある。

もし、seamonkey が依存する ports のソースを全て展開したいのであれば、同じ要領で以下のように出来る。


# gmake seamonkey UPGRADE='$(BSDMAKE) extract' NOOP='$(BSDMAKE) extract'

しかし、これだと seamonkey に新しい依存関係が出来て、それの ports がインストールされていない場合には完璧にはならない。NEW でも $(BSDMAKE) extract をやった方がいいだろう。

GNU make の並列処理の -j も dialog を使った、対話的な入力を必要とするもの以外は問題なく動作するのを確認している。BATCH=YES を /etc/make.conf に書くか、あらかじめ make config-recursive を実行して、オプションの設定をしておく必要があるが、ここまでは細かい動作確認が出来ていない。

前回次回

コメント

コメントをどうぞ

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

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

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

トラックバック

このエントリのトラックバックURL: http://uyota.asablo.jp/blog/2007/07/16/1658017/tb

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