joH*_*oH1 6 command-line xubuntu distributions lsb-release
我在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
Run Code Online (Sandbox Code Playgroud)
它应该显示Xubuntu
,还是合法的输出?
如果是,我如何(通过 CLI)知道我使用的确切 Ubuntu 发行版?
No LSB modules are available.
无论如何,警告是什么意思?
(它输出到stderr:
user@host:~$ lsb_release -a >/dev/null
No LSB modules are available.
Run Code Online (Sandbox Code Playgroud)
所以我猜在名义上它不应该在那里)
作为一般规则,您不应该编写关心您使用的 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)。
小智 7
有时,了解您正在使用的变体是有用的,以便从光盘/USB 媒体重新安装(例如匹配 iso 版本或 x86/x64 架构)。
这些是我所知道的发现:
$ dpkg -l '*buntu-desktop' | grep ^ii
ii xubuntu-desktop 2.225 amd64 Xubuntu desktop system
Run Code Online (Sandbox Code Playgroud)
或者
head -1 /etc/apt/sources.list
#deb cdrom:[Xubuntu 18.04 LTS _Bionic Beaver_ - Release amd64 XXXXXX
Run Code Online (Sandbox Code Playgroud)