apt
ソースを生成するには、Ubuntuコードネームが必要です。
Ubuntuでは、lsb_release --codename --short
を使用できます。これにより、(たとえば)trusty
が返されます。
(例)Linux Mintでlsb_release -cs
を使用すると、(例)rosa
が返されます。アップストリームのコードネームが必要な場合は、lsb_release -csu
(trusty
を返す)を使用できます。
しかし、Ubuntuでlsb_release -csu
を使用すると、エラーlsb_release: error: no such option: -u
が発生します。
on Ubuntuを含む、上流に最も近いUbuntuコードネームを取得する方法はありますか?
Ubuntu trustyのUBUNTU_CODENAME
には/etc/os-release
がありません(古すぎます)。ミントシルビアは、-u
スイッチのサポートをlsb_release
にドロップしました。
そこにはisがあり、私が試したUbuntuとMintのすべてのバージョンで、/etc/lsb-release
というファイルがあり、DISTRIB_CODENAME
を定義しています。 Mintの場合、それはMintコードネームですが、Ubuntuファイルである/etc/upstream-release/lsb-release
もあります。
そう...
現在、以下を使用しています。
UBUNTU_CODENAME=$( \
(grep DISTRIB_CODENAME /etc/upstream-release/lsb-release || \
grep DISTRIB_CODENAME /etc/lsb-release) 2>/dev/null | \
cut -d'=' -f2 )
Linux Mintでは/etc/os-release
とUbuntuのコード名にアクセスします。
source /etc/os-release
echo $UBUNTU_CODENAME # xenial
または、sed
で抽出することもできます
sed 's/UBUNTU_CODENAME=//;t;d' /etc/os-release # xenial
Linux Mint Sylviaでは、これが/etc/os-release
は次のようになります。
NAME="Linux Mint"
VERSION="18.3 (Sylvia)"
ID=linuxmint
ID_LIKE=ubuntu
PRETTY_NAME="Linux Mint 18.3"
VERSION_ID="18.3"
HOME_URL="http://www.linuxmint.com/"
SUPPORT_URL="http://forums.linuxmint.com/"
BUG_REPORT_URL="http://bugs.launchpad.net/linuxmint/"
VERSION_CODENAME=sylvia
UBUNTU_CODENAME=xenial
lsb_release -csu
を実行して、出力が得られたかエラーが返されたか(エラーメッセージを非表示にしたか)を確認し、その場合はlsb_release -cs
にフォールバックできます。
lsb_release -csu 2> /dev/null || lsb_release -cs
Ubuntuの「上流」はDebianなどです
$ cat /etc/debian_version
stretch/sid
$