FreeBSD QandA 709

FreeBSD QandA

Q. コマンドのバージョンを知るには どうしたらいいですか?

A. いろいろ考えられますが、以下の方法が比較的簡単です。

   1. what(1) や、ident(1) を使う。ただし全てのソースのリビジョン番号が
      表示されますので、「このコマンドのバージョンを知りたい」という場合は
      不向きです。

      % what /bin/ls
      /bin/ls:
          Copyright (c) 1989, 1993, 1994
         termcap.c       8.1 (Berkeley) 6/4/93
         strftime.c      7.38
         strftime.c      5.4 (Berkeley) 3/14/89
         (略)
      % ident /bin/ls
      /bin/ls:
        $FreeBSD: src/lib/msun/i387/s_ilogb.S,v 1.7.2.1 2000/07/10 09:16:28 obrien Exp $
        $FreeBSD: src/lib/libc/i386/string/strrchr.S,v 1.5 1999/08/27 23:59:35 peter Exp $
        $FreeBSD: src/lib/libc/i386/string/strncmp.S,v 1.6 1999/08/27 23:59:35 peter Exp $
        $FreeBSD: src/lib/libc/i386/string/index.S,v 1.5 1999/08/27 23:59:30 peter Exp $
        (略)

   2. strings(1) を使う。
      % strings hogehoge | grep -i version

   3. ports/packages を利用してインストールしたものなら、
      % pkg_info -aI | grep hogehoge

   4. command 自身の version 表示。

      command のなかには、バージョン表示オプションを持っていたり、help 表示すると
      version を表示してくれるものがあります。
        % hogehoge -h や hogehoge -V

      最近の GNU 系のコマンドであれば、hogehoge --version なども使えるでしょう。

   5. その他
      (servername で動いている) bind のバージョン
          % nslookup -q=txt -class=chaos version.bind servername
        または
          % dig @servername txt chaos version.bind

      sendmail のバージョン
        - macro 'v' の値を調べる
            % echo '$v' | sendmail -bt
            ADDRESS TEST MODE (ruleset 3 NOT automatically invoked)
            Enter <ruleset> <address>
            > 8.9.1

        - デバッグ用オプションを使って表示させる。
            % sendmail -bt -d0.1 < /dev/null | head -1
            Version 8.9.1

        - コマンドラインから SMTP 的にお話をする。
            % echo HELP | sendmail -bs | head -2 | tail -1
            214-This is Sendmail version 8.9.1

        - SMTP でお話でする。
            % telnet servername smtp
            Trying 127.0.0.1...
            Connected to servername.
            Escape character is '^]'.
            220 servername ESMTP Sendmail 8.9.1/8.9.1 ...

            ただし、その sendmail の設定ファイル /etc/sendmail.cf の
               SmtpGreetingMessage=$j Sendmail $v/$Z; $b
            が書きかわっていたなら、正しく表示されません。逆に言うと、
            外部に sendmail のバージョンを漏らしたくない場合は、ここを
            書きかえておくとよいでしょう。

      XFree86 のバージョン
        % /usr/X11R6/bin/X -version
        (--version ではありません。-version です)

      OpenSSL のバージョン
          % openssl version
          OpenSSL 0.9.7c 30 Sep 2003


   最も確実なのはコマンドのソースを調べる事でしょう :)

間違い・追加情報を見付けた場合は、 修正案の投稿のしかた を読んだ上で、
QandA@jp.FreeBSD.org まで お知らせください。