現在使用中の ubuntu のバージョンの調べ方は下記の 3 つある(デスクトップ壁紙のロゴを見ればわかるじゃん…とかは除く).
昔の UNIX では OS の詳細なバージョン等を調べてスクリプトの動作を切り分けるのには uname コマンドを使っていたのだけど,今は lsb_release を使うのが適切.
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] | 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) |