MacPortsでdeactiveなportを削除するスクリプト

追記: port uninstall inactiveでできます。
追記2: port uninstall -uでもできます。

30分プログラム、その704。MacPortsでdeactiveなportを削除するスクリプト
MacPortsを長い間使っていると、古いportがたまってきます。

# (active)以外が古いport
$ port installed
The following ports are currently installed:
  a2ps @4.13b_3
  a2ps @4.14_0 (active)
  a52dec @0.7.4_0 (active)
  apg @2.2.3_0 (active)
  apr @1.3.2_0+darwin_9
  apr @1.3.3_0
  apr @1.3.3_1
  apr @1.3.8_0 (active)

古いportは無効化(deactivate)されているので邪魔じゃないんですが、気分的にちょっと嫌です。

というわけで、古いportを削除するスクリプトを書いてみました。シェルスクリプトでも十分な気がしますが、拡張のしやすさとかを考えてPerlで書いておきました。

使い方

$ ./port-uninstall
....

ソースコード

#!/usr/bin/env perl
use strict;
use warnings;
use Data::Dumper;

foreach(`port installed`) {
    next if /active/;
    next unless /@/;
    system "port -d uninstall $_";
}