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