Linuxのディストリビューション名とバージョンを確認するには/etc/os-releaseを見る。ディストリビューションを問わず使えるため、まず確認するファイルとして適している。
/etc/os-releaseを見る
/etc/os-releaseにはディストリビューション名とバージョンがキーと値の形式で記載されている。
$ cat /etc/os-release
PRETTY_NAME="Debian GNU/Linux 12 (bookworm)"
NAME="Debian GNU/Linux"
VERSION_ID="12"
VERSION="12 (bookworm)"
VERSION_CODENAME=bookworm
ID=debian
...
名前とバージョンだけ見たい場合はPRETTY_NAMEを取り出す。
$ grep PRETTY_NAME /etc/os-release
PRETTY_NAME="Debian GNU/Linux 12 (bookworm)"
主なキーの内容は次のとおり。
| キー | 内容 |
|---|---|
NAME | ディストリビューション名 |
VERSION | バージョン。コードネームを含む場合がある |
VERSION_ID | バージョン番号のみ |
PRETTY_NAME | 表示用の名前とバージョン |
ID | 小文字のディストリビューション識別子 |
ID_LIKE | 派生元のディストリビューション |
すべてのreleaseファイルをまとめて見る
ディストリビューションによっては/etc/os-release以外にも独自の-releaseファイルを持つ。/etc/*-releaseをまとめて表示すると、どれかにディストリビューション名とバージョンが含まれる。
$ cat /etc/*-release
ディストリビューションごとに存在するファイルは次のとおり。
| ディストリビューション | /etc配下の-releaseファイル |
|---|---|
| Ubuntu 22.04 | lsb-release、os-release |
| Debian 12 | os-release |
| Alpine Linux 3.20 | alpine-release、os-release |
| Amazon Linux 2023 | amazon-linux-release、os-release、system-release |
| Rocky Linux 9 | os-release、redhat-release、rocky-release、system-release |
複数のファイルが同じ内容を持つ場合、同じ行が繰り返し表示される。Rocky Linux 9ではredhat-release、rocky-release、system-releaseの内容が同一のため、末尾に同じ行が3回並ぶ。
$ cat /etc/*-release
NAME="Rocky Linux"
VERSION="9.8 (Blue Onyx)"
...
Rocky Linux release 9.8 (Blue Onyx)
Rocky Linux release 9.8 (Blue Onyx)
Rocky Linux release 9.8 (Blue Onyx)
シェルスクリプトから利用する
/etc/os-releaseはキー=値の形式のため、シェルスクリプトで読み込むと変数として扱える。
$ . /etc/os-release
$ echo "$NAME"
Debian GNU/Linux
$ echo "$VERSION_ID"
12
ディストリビューションごとに処理を分ける場合はIDを使う。
. /etc/os-release
case "$ID" in
debian|ubuntu) apt-get install -y curl ;;
rocky|amzn) dnf install -y curl ;;
alpine) apk add curl ;;
esac
主なディストリビューションのIDとID_LIKEは次のとおり。IDはディストリビューション名と一致しない場合がある。
| ディストリビューション | ID | ID_LIKE |
|---|---|---|
| Ubuntu 22.04 | ubuntu | debian |
| Debian 12 | debian | なし |
| Alpine Linux 3.20 | alpine | なし |
| Amazon Linux 2023 | amzn | fedora |
| Rocky Linux 9 | rocky | rhel centos fedora |
派生元をまとめて扱う場合はID_LIKEを見る。UbuntuとDebianを区別せず扱うならID_LIKEがdebianかどうかで判定できる。
lsb_releaseコマンド
lsb_release -aでもディストリビューション名とバージョンを確認できる。
$ lsb_release -a
Distributor ID: Ubuntu
Description: Ubuntu 22.04.5 LTS
Release: 22.04
Codename: jammy
ただしlsb_releaseは標準では導入されていない場合がある。Ubuntu 22.04やDebian 12の公式コンテナイメージには含まれておらず、実行するには別途インストールが必要である。
$ apt-get install -y lsb-release
/etc/lsb-releaseファイルとは別物である点にも注意する。Ubuntuにはlsb_releaseコマンドがなくても/etc/lsb-releaseは存在する。
$ cat /etc/lsb-release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=22.04
DISTRIB_CODENAME=jammy
DISTRIB_DESCRIPTION="Ubuntu 22.04.5 LTS"
導入状況に左右されないため、/etc/os-releaseを読むほうが確実である。
カーネルのバージョンを確認する
ディストリビューションのバージョンとカーネルのバージョンは別である。カーネルのバージョンはuname -rで確認する。
$ uname -r
6.8.0-50-generic
uname -aではホスト名やアーキテクチャも含めて表示される。
コンテナ内でuname -rを実行するとホスト側のカーネルバージョンが表示される。コンテナはホストのカーネルを共有するためである。コンテナ内のディストリビューションを確認する場合は/etc/os-releaseを見る。
