使用 Ubuntu 衍生产品*和* Ubuntu,如何获取 Ubuntu 代号?

使用 Ubuntu 衍生产品*和* Ubuntu,如何获取 Ubuntu 代号?

我需要 Ubuntu 代号来生成apt源。

在 Ubuntu 上,我可以使用lsb_release --codename --short,它将返回(例如)trusty

在(例如)Linux Mint 上,如果我使用lsb_release -cs,它会返回(例如)rosa。如果我想要上游代号,我可以使用lsb_release -csu(返回trusty)。

但是,如果我lsb_release -csu在 Ubuntu 上使用,我会收到错误 lsb_release: error: no such option: -u

有没有办法获取最上游的 Ubuntu 代号,包括乌班图?

答案1

在 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

答案2

您可以尝试运行,检查它是否给出输出或返回错误(隐藏错误消息),并在这种情况下lsb_release -csu返回:lsb_release -cs

lsb_release -csu 2> /dev/null || lsb_release -cs

答案3

Ubuntu Trusty 没有(太旧了)。Mint Sylvia 放弃了对UBUNTU_CODENAME的转换支持。/etc/os-release-ulsb_release

那里在我尝试过的所有 Ubuntu 和 Mint 版本中,都有一个名为 的文件/etc/lsb-release,它定义了DISTRIB_CODENAME。对于 Mint,它是 Mint 代号,但还有/etc/upstream-release/lsb-release,它是 Ubuntu 文件。

所以...

目前,我们正在使用以下内容:

UBUNTU_CODENAME=$( \
   (grep DISTRIB_CODENAME /etc/upstream-release/lsb-release || \
    grep DISTRIB_CODENAME /etc/lsb-release) 2>/dev/null | \
   cut -d'=' -f2 )

答案4

Ubuntu 的“上游”是 Debian,因此

$ cat /etc/debian_version
stretch/sid
$ 

相关内容