Ubuntu: 軟體庫(software repositories)

sparkdev發表於2019-03-07

Linux 生態下,幾乎每個發行版都有自己的軟體庫(software repositories),Ubuntu 當然也不例外。Ubuntu 提供了四個不同的軟體庫,分別是 main、restricted、universe 和 multiverse:

本文主要介紹它們之間的區別。本文的演示環境為 Ubuntu Desktop 18.04。

Main 庫

Main 庫由 Ubuntu 官方支援,其中的軟體都是開源免費的。Ubuntu 的預設安裝中的所有開源軟體都在 main 庫中,另外還有一些比較重要的伺服器軟體也被包含在 main 庫中。在 Ubuntu 發行版的生命週期中,main 庫中的軟體會有安全更新,嚴重的問題會被修復。

Main 庫是 Ubuntu 最重要的軟體庫,Ubuntu 官方(實際上是 Canonical 公司)承諾在發行版的生命週期中,這裡面的每一個軟體包都會收到安全補丁和嚴重問題的修復補丁。比如對於 Ubuntu LTS(長期支援版)來說,支援週期為五年,就是保證在五年內會有安全更新。而這裡的安全更新,實際上就是對 main 庫中的包進行安全更新。之所以會有這樣的保證,也是因為 main 庫中的軟體都是開源軟體,Ubuntu 自己的開發人員就可以修復這些問題而無需依賴第三方。

在 Ubuntu Desktop 中通過 GUI 工具管理軟體時,可以在軟體的詳細資訊處看到該軟體屬於哪個庫,比如下圖中的 Vim 屬於 main 庫:

Restricted 庫

Restricted 庫中包含 Ubuntu 官方支援的閉源軟體(Closed-Source),主要是一些硬體驅動程式。比如執行一些遊戲程式,需要安裝 NVIDIA 或 AMD 的圖形驅動程式來獲得最佳的圖形硬體效能。這些驅動程式可以通過 Ubuntu 中的其他驅動管理工具來啟用。

Ubuntu 官方將在承諾的支援期內為這些閉源的驅動程式和韌體包提供支援。他們致力於讓這些驅動程式繼續工作,解決任何嚴重的問題,並堵住任何的安全漏洞。當然,Ubuntu 自己無法做到這一點——當出現問題時,他們必須等待硬體製造商釋出新的驅動程式或更新有問題的驅動程式。因為程式碼不是開源的,所以 Ubuntu 官方無法自己修復它,這就是為什麼這裡只包含關鍵的硬體驅動程式的原因(沒有其他的封閉源軟體得到官方支援)。

Universe 庫

Universe 庫中存放的是由社群維護的開源軟體。我們在 GUI 工具 Ubuntu Software 中看到的軟體多數都來自 universe 庫:

這些軟體包要麼是自動從最新版本的 Debian 庫中匯入的,要麼是由 Ubuntu 社群上傳和維護的。
Ubuntu 不為 universe 庫中的軟體提供官方支援或更新。即便不能收更新,universe 庫中的軟體通常也能夠執行的很好。所以我們基本上可以放心的使用 universe 庫中的軟體!
但是,在伺服器系統上,需要我們考慮安裝的伺服器軟體是 main 庫的一部分還是  universe 庫的一部分。如果它來自 universe 庫,您需要關注其安全性更新。如果發現漏洞,您需要自己更新該伺服器軟體。

同樣在 Ubuntu Software 中,可以在軟體的詳細資訊處看到該軟體是否屬於 universe 庫,比如下圖中的 plan 程式就屬於 universe 庫:

Multiverse 庫

Multiverse 庫是不受 ubuntu 官方支援的軟體、閉源軟體和專利授權軟體聚集的地方。這是哪些有爭議的東西存在的地方。它包括像 Adobe Flash 外掛這樣的閉源軟體,和那些依賴於閉源軟體的包,比如 Skype 的外掛。它還包括受法律限制的開源軟體,例如侵犯專利的音訊和視訊播放軟體。這裡不包括 DVD 播放軟體——開源的 libdvdcss DVD 播放庫存在嚴重的法律問題。

Ubuntu 不會在主發行版釋出的同時釋出這些包,但是我們卻可以從這裡提供的內容獲得便利。在其他 Linux 發行版中,這裡的內容通常可以在第三方儲存庫中找到,比如 Fedora 的 RPM Fusion、openSUSE 的 Packman 等。
和 universe 庫一樣,Multiverse 也是一個由社群支援的庫,因此這裡不會保證有安全更新。

Download Server

Ubuntu 官方提供了上述庫的下載伺服器,但是對於全球的使用者來說使用預設的伺服器並不一定是最好的選擇。我們可以指定一個地理位置上比較近或者是認為下載速度比較快的伺服器:

總結這樣下載更新檔案的速度可能會有比較大的提升。

配置檔案

我們在 GUI 工具中配置的 Download Server 資訊都儲存在配置檔案 /etc/apt/sources.list 和 /etc/apt/sources.list.d 目錄下的檔案中。/etc/apt/sources.list 中一般儲存 Ubuntu 庫的配置資訊,比如:

deb http://cn.archive.ubuntu.com/ubuntu/ bionic main restricted

這行資訊指明 Ubuntu bionic(18.04) 版本的 main 庫和 restricted 庫的伺服器地址為  http://cn.archive.ubuntu.com/ubuntu/。
如果要新增第三方軟體庫的資訊,可以在 /etc/apt/sources.list.d 目錄下建立 .list 檔案,把源資訊寫入到檔案中就可以了。

或者我們不使用 GUI 工具,直接編輯配置檔案 /etc/apt/sources.list,把其中指定的預設的庫的 Download Server 修改為指定的伺服器。修改後執行下面的命令,然後就可以使用新指定的伺服器安裝包了:

$ sudo apt-get update

Other Softwares

還有一些軟體提供了自己的庫和下載伺服器,它們被顯示為 "Other Software",比如下圖中顯示的 docker 和 vscode:

在我們安裝這些軟體前,需要先新增其下載伺服器已經庫資訊:

當然,你也可以通過編輯配置檔案或者是通過命令完成同樣的任務。

參考:
What's the Difference Between Main, Restricted, Universe, and Multiverse on Ubuntu?

相關文章