如何确定我使用的是哪种 Ubuntu 版本?

如何确定我使用的是哪种 Ubuntu 版本?

我在 Xubuntu (16.04,顺便说一句)但是lsb_release -a给了我:

user@host:~$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 16.04.3 LTS
Release:    16.04
Codename:   xenial

它应该显示Xubuntu,还是这是合法的输出?
如果是,我如何(通过 CLI)知道我所在的确切 Ubuntu 发行版?

无论如何,这个警告No LSB modules are available.意味着什么?
(它输出到标准错误

user@host:~$ lsb_release -a >/dev/null
No LSB modules are available.

所以我猜在名义情况下它不应该在那里)

答案1

有时,了解您正在使用的变体很有用,以便从光盘/USB 介质重新安装(例如,匹配 iso 版本或 x86/x64 arch)。

这些是我所知道的发现或提示:

$ dpkg -l '*-desktop' | grep ^ii | grep 'ubuntu-'
ii  xubuntu-desktop 2.225   amd64     Xubuntu desktop system

或者

head -1 /etc/apt/sources.list
#deb cdrom:[Xubuntu 18.04 LTS _Bionic Beaver_ - Release amd64 XXXXXX

答案2

作为一般规则,您编写的软件不应该关心您使用的 Ubuntu 的“风格”。 Ubuntu、Kubuntu、Xubuntu 和大多数其他上游支持版本之间的唯一区别是桌面环境以及默认安装的高级软件。它们的核心都是 Ubuntu,因此lsb_release输出是正确的,一旦系统安装完毕,这并不重要(您只需几个apt-get命令就可以轻松地在变体之间进行转换)。

如果您实际上需要默认情况下仅安装在一种变体上的特定软件,您应该检查该软件,而不是变体本身(例如,如果您需要 GNOME 3 才能使您的软件运行,您应该依赖它,而不是在 Ubuntu 上)。

如果您绝对必须检查特定变体,则每个变体在包管理器中都有自己的元包(例如,对于 Xubuntu,您应该xubuntu-meta在已安装包列表中看到一个名为的包)。但这不是一种可靠的检查方法,因为这样的元包并不相互排斥(我见过终端服务器安装了大部分元包只是为了让用户选择他们的桌面环境),并且可以在初始安装后手动安装或删除安装。

至于这个No LSB modules are available.位,如果您不使用需要 LSB 合规性的软件(现在没有任何理智的软件可以这样做),您可以安全地忽略它。 LSB 标准本身最初旨在为 Linux 发行版定义一个通用平台,以便第三方软件可以轻松地以与发行版无关的方式检查其依赖性是否得到满足。 “模块”指的是 LSB 标准的可选子组件。整个事情在今天基本上已经无关紧要了(除了该lsb_release命令是确定您所使用的发行版的唯一可靠方法),因为它已经多年没有更新,并且包括 Qt 3 之类的东西,并且它从未在 Ubuntu 或 Debian 上得到很好的支持首先是系统(因为它主要基于 Red Hat)。

相关内容