wtnabeの日記

2005-11-23

listupgrade 20051123

こはなんぞ?

  1. FreeBSDports で、新しいバージョンが出ているものを
  2. オレ的美観で過不足なく美しく出力してくれる*1

そんなツールです。今回のバージョンは、

  • portversion と awk依存するようになりました*2
  • awk なのに行末に ; がついているのは Emacsawk-mode の挙動に合わせたからです
  • pkgdb に矛盾がある場合とかはとりあえず考えてません
#! /usr/bin/awk -f                                                              
# -*- awk -*-                                                                   

BEGIN {
  num    = 0;
  maxlen = 0;
  while ( "portversion -v" | getline ) {
    if ( $3 !~ /up-to-date/ ) {
      num++;
      item = $1;
      if ( length( item ) > maxlen ) {
        maxlen = length( item );
      }
      ver = $7;
      sub( /\)$/, "", ver );
      port[num]   = item;
      latest[num] = ver;
    }
  }

  for ( i = 1; i <= num; i++ ) {
    printf( "%-*s --> %s\n", maxlen, port[i], latest[i] );
  }
}

好きにいじって好きに利用してくださいライセンスで。

catchup_ports

listupgrade を含めて crontab にはこんなものを仕掛けておく。

#! /bin/sh

/usr/local/sbin/portsnap cron > /dev/null
/usr/local/sbin/portsnap update > /dev/null
/usr/local/sbin/portsdb -uU > /dev/null
/usr/local/sbin/listupgrade

skelton を更新して、アップデートの必要なものだけ定期的にメールで教えてもらえる、と。ports 丸ごとしか更新チェックしない場合はこれで十分かな。負荷的にどうこうより、cvsup より設定が楽なのが嬉しい。

システム丸ごとソースから作ってる場合はこういうわけにいかないけど。

しかし、グループ日記ってどうしてプレビューできないの?

*1:portversion の出力のままだと、いっぱいインストールしてあったときに邪魔くさいし

*2awk は base に入っているので実質 portversion だけ