FreeBSD QandA 709
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 まで
お知らせください。