ports: 分析2006年04月24日 11時37分06秒

Some of the targets work recursively through subdirectories. This lets you, for example, install all of the ``biology'' ports. The targets that do this are build, checksum, clean, configure, depends, extract, fetch, install, and package
man ports より。

portsupgrade も基本的には ports の make システムを呼んでいるのに過ぎないので、王道の man から始める。

高速化の基本は、分析からである。まずは、何が起きているかを把握し、それらの特徴を掴む。そして、欠点を洗い出し、それに適した対策を取る。

ターゲットの中で、checksum、configure、depends は手を入れることはほとんど出来ない。package はわざわざ、使う必要はない。そこで、残るは fetch、extract、build、install、clean である。

fetch は ftp でソースを取って来る段階である。なお、既に手元にあり、md5 等の checksum が一致すると、そのまま、利用できる。これは、ネットワークが隘路になる。

extract は、取ってきたソースを展開する段階である。まあ、ディスクが隘路なのは明瞭であろう。

build は少々、複雑になる。linux_base などの一部のものは build はほとんど何もなくて、install 時にほとんどの作業があるものもあるので、一概には言えない。また、スクリプトが入るときも、ここでは殆んど何も行われない。なにもしないのであれば、高速化はちょっと無理だ。他は、コンパイル言語で書かれたプログラムのコンパイルになる。これは、CPU が隘路になる。

install は出来たプログラムを指定された位置に移動することである。ディスクが隘路になる。

clean は作業領域の掃除である。まず明らかなのはディスクである。rm をするので、fs の性能に依存する。また、馬鹿にならないのが make の操作の時間である。clean は依存しているものを全て削除しようとするので、削除するものが無くてもたいそうな時間がかかる。

さて、次回は対策である。