ttt

getttyent

(FreeBSD) 最近、portversionの表示が変わりましたよね? ~ -Fオプションが必要

2008-08-06 22:22:23 | デジタル・インターネット

portsのportupgradeをインストールすると、portversionというコマンドもインストールされます。

portversion -v -l '<'

というコマンドを、呪文のようにキーボードを叩いて実行すると…

# portversion -v -l '<'
cadaver-0.22.5_2            <  needs updating (port has 0.23.2)
cairo-1.4.14,1              <  needs updating (port has 1.6.4_2,1)
dirmngr-1.0.1_1             <  needs updating (port has 1.0.1_2)
fetchmail-6.3.8_6           <  needs updating (port has 6.3.8_7)
freetype2-2.3.6             <  needs updating (port has 2.3.7)

というように表示されて、アップグレード可能なソフトウェアのパッケージ前と、バージョン番号(インストール済みのバージョンと、portsでの最新バージョン)が表示されます。

ところが、最近、portupgradeをportupgradeしてみたところ(笑)

# portversion -v -l '<'
cadaver                     <  needs updating (port has 0.23.2)
cairo                       <  needs updating (port has 1.6.4_2,1)
dirmngr                     <  needs updating (port has 1.0.1_2)
fetchmail                   <  needs updating (port has 6.3.8_7)
freetype2                   <  needs updating (port has 2.3.7)

現在インストールされているバージョン番号が表示されなくなってしまいました。

ちなみに、portupgradeのバージョンは以下のとおり。

# pkg_which `which portversion`
portupgrade-devel-2.4.4


てっきり、

portversionのバグだろうね。そのうち直るんじゃない?

と思ってたのですが、これって、どうも、最近のバージョンのportversionで、仕様が変更されたみたいです。

「-F」オプションを追加すると、以前と同じような表示になります。

# portversion -v -F -l '<'
cadaver-0.22.5_2            <  needs updating (port has 0.23.2)
cairo-1.4.14,1              <  needs updating (port has 1.6.4_2,1)
dirmngr-1.0.1_1             <  needs updating (port has 1.0.1_2)
fetchmail-6.3.8_6           <  needs updating (port has 6.3.8_7)
freetype2-2.3.6             <  needs updating (port has 2.3.7)

こっちの表示形式のほうが、

  1. ソフトウェアのオリジナル配布元側で、バージョンアップしたのか
  2. portsでのバージョン番号(_1とか_2の部分)が更新されたのか

どっちなのかが区別がつくので、ずっと便利だと思うのですが。

「man portversion」してマニュアルを見ても、「-F」というオプションの説明がないけど、おや?どこで覚えたんだっけ???

「portversion --help」で表示されました。

# portversion --help
portversion 2.4.4 (2008/06/23)

usage: portversion [-hOqv] [-l limit_chars] [-L inv_limit_chars]
        [pkgname_glob ...]
       portversion [-v] -t ver0 ver1 [ver2 ...]

    -h, --help               Show this message
    -c, --command-output     Enable command output
    -C, --command-args=ARGS  Specify the arguments for portupgrade in command
                             output (default: none)
    -F, --fullname           Display package full-name.
(以下略)

マニュアルがまだ書き直されていないんですね、きっと。

「--version」というオプションが使えるみたいなんですが…

# portversion --version
portversion 2.4.4

これについては、マニュアルにも載ってないし、--helpでも表示されないし、/usr/local/sbin/portversionを眺めても、それらしきものが書かれていません。
/usr/local/lib/ruby/1.8/optparse.rb に書いてあるやつかなぁ?
それにしても、rubyは、よくわかりません。