数ヶ月に1回、家のサーバーのportsをアップグレードしている。
現在、2000近くportsが入っているわけだが、先日FreeBSD 9.2-RELEASEにした際にportversionで確認したら1000近くアップグレードが必要だった。
そこから2週間くらいかけてアップグレードを実施...。
今回一番手間取ったのはソフトウェアのバージョン。
いつもは目当てのportsのディレクトリに移動してmakeした後、
# make deinstall reinstall clean
とすれば古いバージョンを削除→新しいバージョンを追加、となるのだが、今回はそうならないケースが結構あった。
理由はいろいろあるようだが、一番多かったのはバージョン番号がportsの名前に入っている場合と入ってない場合があるパターン。
この場合、make deinstallを実行すると「前のバージョンは入っていない」と判断されてそのままreinstallにすべる。
reinstallも「前のバージョンは入っていない」と判断するので、そのままファイルを上書きしていく。
そして、pkg_infoなどで覗くと2つのバージョンが登録されているように見える、と。
このとき前のバージョンを削除するにはpkg_deleteなどを使うわけだが、そのまま実施すると最新バージョンのファイルまで道連れにしてしまう。
よって削除→追加する場合は
1. 最新バージョンのmake時にパッケージ名を確認
2. make deinstallを単独で実行する
→ パッケージがインストールされていない旨が表示された場合はmakeコマンドでは削除できないのでパッケージ名を(できればバージョン含む)確認の上、pkg_delete -fで削除
3. make reinstallを実行する
4. pkg_info等でportsが二重に登録されていないことを確認してmake cleanを実行
pkgも出てきているので、今後portsからコツコツコンパイルしていくことはなくなるんではなかろうか、と思うのだがどうもやってしまうんだなぁ。
次回やるのは年末年始あたりかと思う。