跳轉到

Ubuntu 的 PPA 指南

如果你使用過 Ubuntu 或其他基於 Ubuntu 的 Linux 發行版,像是 Linux Mint、Linux Lite、Zorin OS ,可能會遇過下面的三行程式碼:

sudo add-apt-repository ppa:dr-akulavich/lighttable
sudo apt-get update
sudo apt-get install lighttable-installer

許多網站都建議用這種稱為 PPA 的方式在 Ubuntu 中安裝應用程式。

PPA 是什麼?

PPA (Personal Package Archive) 可以讓應用程式開發人員和 Linux 使用者建立自己的儲存庫來分發軟體。

使用 PPA,也可以輕鬆取得較新的軟體版本或官方 Ubuntu 儲存庫無法提供的軟體。

在了解 PPA 之前,應該先了解 Linux 中儲存庫的概念。

儲存庫和套件管理的概念

儲存庫是檔案的集合,其中包含有關軟體、其版本以及 Checksum 和其他一些詳細資訊。每個 Ubuntu 版本都有官方的一組四個儲存庫:

  • Main: Canonical 支援的免費開源軟體。
  • Universe: 免費社群維護的開源軟體。
  • Restricted: 裝置的專有驅動程式。
  • Multiverse: 受版權或法律問題限制的軟體。

可以在這裡查看所有 Ubuntu 版本的儲存庫。

上面的連結是包含有關軟體資訊的 Web URL。可以透過它來存取各個儲存庫。而此 Web URL 資訊會儲存在 /etc/apt 目錄中的sources.list 檔案中(見下圖)。

img

當你執行 sudo apt update 時,系統將使用 APT 工具來檢查儲存庫,並將有關軟體及其版本的資訊儲存在快取中。當你執行 sudo apt install package_name 時,它會使用該資訊從儲存軟體的 URL 取得該套件。

如果儲存庫沒有關於某個套件的資訊,你會看到下面的錯誤訊息:

E: Unable to locate package

為什麼要使用 PPA?

Ubuntu 控制系統上安裝的軟體,更重要的是控制軟體的版本。

如果軟體開發人員發布了軟體的新版本。Ubuntu 不會立即提供它。而是會檢查新版本的軟體是否與系統相容以確保系統的穩定性。

這代表 Ubuntu 需要幾週甚至幾個月的時間才能提供它。但並不是每個人都願意等那麼久。

同樣地,假設有人開發了一個新軟體並希望 Ubuntu 將它包含在官方儲存庫中。 Ubuntu 仍然需要幾個月的時間才能做出決定並將其納入官方儲存庫。

還有一種情況是在 Beta 測試期間。即使官方儲存庫中有該軟體的穩定版本,軟體開發人員也會希望一些用戶測試即將發布的版本。他們如何讓用戶能夠進行 Beta 測試?

這時候 PPA 派上用場了。

怎麼使用 PPA?

Ubuntu 提供了一個名為 Launchpad 的平台,讓軟體開發人員能夠建立自己的儲存庫。用戶可以將 PPA 儲存庫新增至 sources.list,當系統更新時,系統會知道這個新軟體的可用性,用戶就可以使用sudo apt install 命令安裝它。

現在來回顧一下剛剛有提到的命令:

sudo add-apt-repository ppa:dr-akulavich/lighttable

你會發現命令沒有包含儲存庫的 URL。這是因為 add-apt-repository 會幫你找到 URL 的資訊。

使用 add-apt-repository 新增 PPA 時,它會做與以下命令相同的事情:

deb http://ppa.launchpad.net/dr-akulavich/lighttable/ubuntu YOUR_UBUNTU_VERSION_HERE main
deb-src http://ppa.launchpad.net/dr-akulavich/lighttable/ubuntu YOUR_UBUNTU_VERSION_HERE main

上面兩行是將儲存庫新增到 ources.list 的傳統方法。而 PPA 則會自動幫你準備好儲存庫 URL 和作業系統版本。

還有要注意的一件重要事情是,當使用 PPA 時,它不會更改sources.list。而是會在 /etc/apt/sources.list.d 目錄中建立兩個檔案,分別為 .list 和後綴為 .save 的備份(見下圖)。

img

後綴為 list 的檔案具有添加儲存庫資訊的命令(見下圖)。

img

這樣做可以確保新增 PPA 時不會擾亂原始 sources.list。日後要移除該 PPA 時也比較方便。

為什麼不使用 DEB 套件?

你可能會問為什麼不直接分發一個可以用 GUI 安裝的 DEB 套件呢?

答案在於更新過程。如果使用 DEB 軟體包安裝軟體,則不能保證執行 sudo apt update && sudo apt upgrade 時會將軟體升級。因為 apt 升級過程依賴於 sources.list

那麼這是否代表使用 DEB 安裝的軟體永遠不會更新?這取決於套件的創建方式。

有些開發人員會自動在 sources.list 中新增一個條目,然後像常規軟體一樣更新它。Google 瀏覽器就是這樣的例子。

當執行某些軟體時,它會通知有新版本可以用。必須下載新的 DEB 套件才能更新軟體。Oracle Virtual Box 就是屬於這種情況。

至於剩下的 DEB 軟體包,就必須手動查找更新。

官方 PPA 與非官方 PPA

當開發人員為其軟體創建 PPA 時,它被稱為官方 PPA。這很好理解,因為它就來自於開發人員。

但有時後會有人為其他開發人員創建 PPA。

為什麼有人要這麼做?因為許多開發人員只提供軟體的原始碼,而在 Linux 中從原始碼安裝軟體是一件非常痛苦的事情,並不是每個人都可以或願意這樣做。

自願者會主動從這些原始碼創建 PPA,以便其他用戶可以輕鬆安裝該軟體。畢竟使用 3 行程式碼遠比從原始碼安裝要容易得多。

要怎麼知道 PPA 是不是官方的?這沒有直接的方法。有能是開發人員的網站有提到他們有維護 PPA。也可能是在 PPA 頁面就有提到。

確認 PPA 適用於你的發行版本

當討論到在 Ubuntu 或任何其他基於 Debian 的發行版中使用 PPA 時,要記住並非每個 PPA 都適用於你的特定版本。

發行版的代號很重要,在 PPA 的網頁可以看到有支援哪些版本。

為什麼 PPA 不適用於所有 Ubuntu 發行版本?

因為必須有人去編譯軟體並在特定版本上建立 PPA。考量到在新的 Ubuntu 版本每六個月會發布一次的情況下,為每個 Ubuntu 版本更新 PPA 會是一項困難的任務。不是所有開發人員都有時間這樣做。

使用 PPA 安全嗎?

就安全性而言,可以毫不猶豫地使用官方 PPA(~~大家一起死?~~)。

最後就是經驗法則如果程式需要 sudo 存取權限才能運行的話,就應該避免透過第三方 PPA 安裝程式。

Reference