portsnap で更新がうまくいかない場合2007年11月11日 12時23分30秒

リリースに向けて、進んでいる 7.0-RELEASE の src を cvs で、ports を portsnap で、ほぼ毎日追っている。

最近は、ハードウェアを入れ換えたので、以前の様に ports のコンパイルも時間は取らない。そこで、空いている時間に、kde3 と gnome2 をインストールして遊んでいる。ports はあまり、手をいれる気もないので、csup よりも速いと言われる、portsnap を使うことにした。 portsnap は確かに、csup よりは速いが、ディスクをその分消費する。 以前使った時 はディスクに余裕が無かったので使えなかった。

様子を見ていると、gnome-speech が何故だかうまくいかない。何度やっても、fetch が失敗するのだ。更新時刻が合わないと言われた。そこで、少し調べてみる。原因は、distfile がどうも最新状態ではないようだった。どうも、portsnap が正しく更新できなかった様である。再現性があるバグなのか、その他の要因で壊れたのかは知らない。

さて、解決策は、portsnap extract だった。普段は、一度 extract を行なった後は、update で差分を更新する。そこで、extract で全てを、取り出し直せばいいわけだ。portsnap extact は上書き更新をした。その後は、gnome-speech も問題なかった。portsnap は普段は速いが、何か問題があると、実質全て ports のファイルを作り直すことになる。

csup や cvsup の場合は、配付元と一致しないファイルがあると、更新する。そのため、csup/cvsup の方が、portsnap よりも予期しないファイルの破損に強い。ただ、この動作は使い方によっては利点にする事も出来るので、portsnap が csup や cvsup に劣るといった意味ではない。

前回