我需要 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
-u
lsb_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
$