バージョン番号の調べ方

現在使用中の ubuntu のバージョンの調べ方は下記の 3 つある(デスクトップ壁紙のロゴを見ればわかるじゃん…とかは除く).

lsb_release

昔の UNIX では OS の詳細なバージョン等を調べてスクリプトの動作を切り分けるのには uname コマンドを使っていたのだけど,今は lsb_release を使うのが適切.

参考 No LSB modules are available. て出るんだけど…

ubuntu の lsb_release コマンドは初期状態では No LSB modules are available. という警告メッセージらしきものが出てしまう.

  $ lsb_release -a
  No LSB modules are available.
  Distributor ID:	Ubuntu
  Description:	Ubuntu 23.10
  Release:	23.10
  Codename:	mantic

これは ubuntu(正確には ubuntu のベースになっている Debian)が LSB (Linux Standard Base) に準拠していないからで,特に気にする必要はない.

見ての通り必要な情報はでているのでそのまま使用するのがオススメ(理由は後述). 下記のようにリダイレクトしたり変数にセットしたりすると No LSB modules are available はでなくなるので,スクリプトを組んだりする際にもジャマになることはない.

  $ lsb_release -i >foo.txt
  $ cat foo.txt
  Distributor ID:	Ubuntu
  $ foo=$(lsb_release -r -s)
  $ echo $foo
  23.10

どうしてこうなっちゃったのか

LSB (Linux Standard Base) は標準化を会員企業のみで進めてしまったため,一部 不適切な仕様が含まれている. 特に悪名が高いのが,会員企業 Red Hat のパッケージ形式である RPM 形式でのソフトウェア配布を必須としたことで,Debian との折り合いが悪くなった(批判参照). そのため Debian では LSB の仕様のうちリーズナブルなものは採用し, 会員企業の都合によるもの(POSIX由来の古すぎる仕様や特定のディストリビューションのエゴによるものなど)は追加パッケージで対応する(初期状態では入れない)という選択をしている.

ここまで知っていれば No LSB modules are available は そのままソッとしておくのがオススメって理由も納得してもらえるはず. ちなみに LSB は 2023 年時点で既に役目を終えて活動を終了している[3].

どうしても消したい場合は…

LSB互換モジュール(lsb-core)をインストールすれば No LSB modules are available はでなくなる. 通常はインストールすべきではないのだけど,IBM製のプロプライエタリ ソフトウェアを Debian/ubuntu にインストールしたい場合など どうしても必要な場合はやってみてもよいかもしれない.

なお,lsb-core は既に配布されなくなってるので 以前のバージョン(例えば 20.04 LTS)から lsb-core*.deb をひろってきてインストールする必要がある.

  $ sudo apt install lsb-core*.deb

おまけ1 システム情報表示系のコマンド

システム情報を表示・編集するためのコマンド群でもバージョンを表示することができるものがある. 例えば下記.

hostnamectl neofetch

B. 参考文献

[1] Wikipedia - Linux Standard Base (LSB)
[2] Linux Standard Base (LSB)
[3] スラド - LSBの活動は終了している? (2023-03-10)
[4] Binary package “lsb-core” in ubuntu focal Linux Standard Base core support package
[5] How lsb module affects system, and can be made available to the system? (2012-12-19)

はたいたかし
https://exlight.net/
2024-02-20