MacPorts で active でないバージョンの port をアンインストールする

MacPorts では、port install や port upgrade で新しいバージョンの port がインストールされるときに、古いバージョンも残ったままになるようだ。

### 複数のsubversionがインストールされているが、
### 使われているのは 1.5.3_0+mod_dav_svn だけ
$ port installed subversion
The following ports are currently installed:
  subversion @1.4.6_1+mod_dav_svn
  subversion @1.5.0_1+mod_dav_svn
  subversion @1.5.1_0+mod_dav_svn
  subversion @1.5.2_0+mod_dav_svn
  subversion @1.5.2_1+mod_dav_svn
  subversion @1.5.3_0+mod_dav_svn (active)


export MAPATH=$MANPATH:/opt/local/share/man man 1 port としてマニュアルを見ると、port uninstall -u を使えば、使われていない (= active でない) バージョンの port をアンインストールできるとある。
しかし実際に試してみると、エラーになってうまくいかない。

### 使われているもの以外をアンインストールしたいけどエラー
$ sudo port uninstall -u subversion
--->  The following versions of subversion are currently installed:
--->    subversion @1.4.6_1+mod_dav_svn
--->    subversion @1.5.0_1+mod_dav_svn
--->    subversion @1.5.1_0+mod_dav_svn
--->    subversion @1.5.2_0+mod_dav_svn
--->    subversion @1.5.2_1+mod_dav_svn
--->    subversion @1.5.3_0+mod_dav_svn (active)
Error: port uninstall failed: Registry error: Please specify the full version as recorded in the port registry.


しょうがないので、shell で削除。

$ port installed subversion | grep '@' | grep -v '(active)' | xargs -L 1 sudo port uninstall


今後のためにshell script化。

#/bin/sh

###
### port-uninstall-u : uninstall non-active ports
###
### usage: sudo port-uninstall-u name1 name2 ...
###

for i in $*; do
  port installed $i | grep '@' | grep -v '(active)' | xargs -L 1 port uninstall
done