如何確定我使用的是哪種 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.
意思?(它輸出到stderr:
user@host:~$ lsb_release -a >/dev/null No LSB modules are available.
所以我猜在名義情況下它不應該在那裡)
作為一般規則,您不應該編寫關心您所使用的 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)。
有時了解您正在使用的變體很有用,以便從光碟/USB 媒體重新安裝(例如匹配 iso 版本或 x86/x64 架構)。
這些是我知道的發現:
$ dpkg -l '*buntu-desktop' | grep ^ii 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