$ du -s /opt/local/var/macports/distfiles/まめに sudo rm -rf /opt/local/var/macports/distfiles/* とかやればいいわけなんだが、普段意識しないディレクトリなので、すぐ忘れてしまう。気になっていたのだが、ふと、いい解決策を思いついた。
5900920 /opt/local/var/macports/distfiles/
MacPortsにはpseudo-portnamesという仕掛けがある。よく使いそうなport集合をコマンド実行時に展開してくれるというもので、例えば outdated はインストール済みかつ最新版でないport集合を指す。これを使うと、sudo port upgrade outdated と実行すると、最新版がインストールされていないportを全部更新していってくれるわけだ。この辺は man port に書いてある通りである。
思いついたのはここから先である。outdated はport集合なんだから、別に upgrade でなくても適用できる。だから、以下のようなことができる。
sudo port clean --dist outdated現在最新版でないport集合のdistfiles(が古いdistfilesである)を消し、このport集合をupgradeする。このとき最新版のdistfilesを改めてダウンロードしてくるので、結果として最新版の distfiles だけが残る、というわけである。なお、port clean --dist hoge は通常 /opt/local/var/macports/distfiles/hoge ディレクトリごと消してしまうので、そこは注意が必要かもしれない。
sudo port upgrade outdated
ほかに、マニュアルに書いてある程度の tips として、port -u uninstall はよく使っている。MacPortsでupgradeを行うと、現在インストールされている版をdeactivateした後、最新版をactivateする。したがって、長く使っていると deactivate された版が消されないままたまってくる。これを消してしまうのが port -u uninstall である。
というわけで、日々のMacPortsのメンテナンスルーチンワークは次のようになった。
sudo port sync (時々 sudo port selfupdate)
sudo port clean --dist outdated
sudo port upgrade outdated
sudo port -u uninstall










