通過添加Ubuntu ppa源,傻瓜式地安裝任意軟件,適用於國產深度

前言

本文主要講解Ubuntu PPA源的原理以及日常應用,還有使用中的注意事項。

我們先來回顧一下Ubuntu是如何使用apt命令添加PPA源然後安裝軟件的

通過添加Ubuntu ppa源,傻瓜式地安裝任意軟件,適用於國產深度

添加PPA源

sudo add-apt-repository ppa:123/456

更新本地緩存

sudo apt-get update

安裝指定的軟件包

sudo apt-get install xxx

許多網站推薦使用類似於以上幾行的形式 在 Ubuntu 中安裝應用程序。這就是所謂的使用 PPA 安裝應用程序。

那麼什麼是 PPA?為什麼要用PPA?PPA 安全嗎?如何正確使用 PPA?如何刪除 PPA?

本文的演示的案例都是在Ubuntu 18.04系統上進行的,但文中的說明和步驟也適用於其他基於 Debian/Ubuntu 的發行版。

什麼是 PPA?

PPA 表示個人軟件包存檔Personal Package Archive。

通過添加Ubuntu ppa源,傻瓜式地安裝任意軟件,適用於國產深度

想要了解PPA,我們想來了解一下軟件倉庫的概念:

軟件倉庫是一組文件,其中包含各種軟件及其版本的信息,以及校驗和等其他一些詳細信息。每個版本的 Ubuntu 都有自己的四個官方軟件倉庫:

  • Main - Canonical 支持的自由開源軟件。
  • Universe - 社區維護的自由開源軟件。
  • Restricted - 設備的專有驅動程序。
  • Multiverse - 受版權或法律問題限制的軟件。

你可以在https://packages.ubuntu.com/ 看到所有版本的 Ubuntu 的軟件倉庫。你可以瀏覽並轉到各個倉庫。

那你的系統又是如何知道這些倉庫的位置的呢?

這些信息存儲在 /etc/apt 目錄中的 sources.list 文件中。如果查看此文件的內容,你就會看到裡面有軟件倉庫的網址。#開頭的行表示註釋不起作用。

oucanrong@zcwyou:~$ cat /etc/apt/sources.list

查看ubuntu倉庫源:

通過添加Ubuntu ppa源,傻瓜式地安裝任意軟件,適用於國產深度

查看ubuntu倉庫源

同樣道理,PPA 也是一個包含軟件信息的網址。

當你運行 sudo apt update 命令時,你的系統將使用 APT 工具來檢查軟件倉庫並將軟件及其版本信息存儲在緩存中。當你使用 sudo apt install xxx命令時,它通過該信息從實際存儲軟件的網址獲取該軟件包。

如果軟件倉庫中沒有關於某個包的信息,你將看到如下錯誤:

E: Unable to locate package

為什麼要使用PPA

問題來了,既然有了官方倉庫,為什麼還要使用PPA?

解釋如下:

根據上面講述的原理,Ubuntu 對系統中的軟件進行管理,更重要的是控制你在系統上獲得哪個版本的軟件。但想象一下開發人員發佈了軟件的新版本的情況。

Ubuntu 不會立即提供該新版本的軟件。需要一個步驟來檢查此新版本的軟件是否與系統兼容,從而可以確保系統的穩定性。

但這也意味著它需要經過幾周才能在 Ubuntu 上可用,在某些情況下,這可能需要幾個月的時間。不是每個人都想等待那麼長時間才能獲得他們最喜歡的軟件的新版本。

類似地,假設有人開發了一款軟件,並希望 Ubuntu 將該軟件包含在官方軟件倉庫中。在 Ubuntu 做出決定並將其包含在官方存軟件倉庫之前,還需要幾個月的時間。

另一種情況是在 beta 測試階段。即使官方軟件倉庫中提供了穩定版本的軟件,軟件開發人員也可能希望某些終端用戶測試他們即將發佈的版本。他們是如何使終端用戶對即將發佈的版本進行 beta 測試的呢?

答案是:通過 PPA!

怎樣添加PPA源?

PPA代表個人軟件包存檔Personal Package Archive。在這裡注意 “個人” 這個詞,它暗示了這是開發人員獨有的東西,並沒有得到分發的正式許可。

Ubuntu 提供了一個名為 Launchpad 的平臺,使軟件開發人員能夠創建自己的軟件倉庫。終端用戶,也就是你,可以將 PPA 倉庫添加到 sources.list 文件中,當你更新系統時,你的系統會知道這個新軟件的可用性,然後你可以使用標準的 sudo apt install 命令安裝它。

sudo add-apt-repository ppa:123/456
sudo apt-get update
sudo apt-get install xxx

解釋一下上面三個命令:

  • sudo add-apt-repository
  • sudo apt-get update
  • sudo apt-get install
  • 你會發現使用 sudo apt update 命令非常重要,否則你的系統將無法知道新軟件包何時可用。

重點在於第一條命令:

sudo add-apt-repository ppa:123/456

你會注意到此命令沒有軟件倉庫的 URL。這是因為該工具被設計成將 URL 信息抽象之後再展示給你。

注意一下:如果你添加的是 ppa:123/456,你會得到456。但是如果你添加 ppa:123,你將得到 “上層軟件倉庫” 中的所有倉庫或軟件包。它是按層級劃分的。

基本上,當您使用 add-apt-repository 添加 PPA 時,它將執行與手動運行這些命令相同的操作:

deb http://ppa.launchpad.net/123/456/ubuntu YOUR_UBUNTU_VERSION_HERE main
deb-src http://ppa.launchpad.net/123/456/ubuntu YOUR_UBUNTU_VERSION_HERE main

以上兩行是將任何軟件倉庫添加到你係統的 sources.list 文件的傳統方法。但 PPA 會自動為你完成這些工作,無需考慮確切的軟件倉庫 URL 和操作系統版本。

此處不那麼重要的一點是,當你使用 PPA 時,它不會更改原始的 sources.list 文件。相反,它在 /etc/apt/sources.list.d 目錄中創建了兩個文件,一個 .list 文件和一個帶有 .save 後綴的備份文件。

以本人計算機為例,Ubuntu 18.04 ,看看Google Chrome瀏覽器安裝包是怎樣添加自己的PPA

oucanrong@zcwyou:~$ ll /etc/apt/sources.list.d/

總用量 16

drwxr-xr-x 2 root root 4096 12月 19 20:56 ./

drwxr-xr-x 6 root root 4096 12月 19 20:56 ../

-rw-r--r-- 1 root root 189 12月 19 20:56 google-chrome.list

-rw-r--r-- 1 root root 189 12月 19 20:56 google-chrome.list.save

通過添加Ubuntu ppa源,傻瓜式地安裝任意軟件,適用於國產深度

查看Google Chrome倉庫源

帶有後綴 .list 的文件含有添加軟件倉庫的信息的命令。

oucanrong@zcwyou:~$ cat /etc/apt/sources.list.d/google-chrome.list
### THIS FILE IS AUTOMATICALLY CONFIGURED ###

# You may comment out this entry, but any other modifications may be lost.
deb [arch=amd64] http://dl.google.com/linux/chrome/deb/ stable main
oucanrong@zcwyou:~$ cat /etc/apt/sources.list.d/google-chrome.list.save
### THIS FILE IS AUTOMATICALLY CONFIGURED ###
# You may comment out this entry, but any other modifications may be lost.
deb [arch=amd64] http://dl.google.com/linux/chrome/deb/ stable main

這是一種安全措施,可以確保添加的 PPA 不會和原始的 sources.list 文件弄混,它還有助於移除 PPA。

不要試圖去猜測PPA的地址,直接上launchpad.net搜索相關軟件,比如搜索VLC,進入詳情頁面https://launchpad.net/~videolan/+archive/ubuntu/master-daily

Launchpad(啟動器)是Canonical公司所架設的網站,是一個提供維護、支援或連絡Ubuntu開發者的平臺。其中Launchpad提供了線上翻譯軟件的功能,你可以自由的參與Ubuntu或相關自由軟件的開發或翻譯工作。而你也可以利用該網站的回報機制來回報相關軟件的Bug,或者進一步提供建議。

使用PPA的好處是Ubuntu系統中使用PPA源的軟件可以讓你在第一時間體驗到最新版本的軟件。

有很多PPA軟件源提供多個版本,包括正式穩定版、每日創建版,開發版、測試版等等。

例如,chromium 瀏覽器的源:

  • chromium daily(每日創建版)
  • chromium dev(開發版)
  • chromium stable(穩定版)
  • chromium beta(測試版)

每日創建版源地址:https://launchpad.net/~chromium-daily/+archive/daily

添加該源的方法,打開終端,輸入下面的命令:

sudo add-apt-repository ppa:chromium-daily/stable

穩定版源地址:https://launchpad.net/~chromium-daily/+archive/stable

添加該源的方法,打開終端,輸入下面的命令:

sudo add-apt-repository ppa:chromium-daily/daily

一個完整的通過PPA源安裝軟件的命令,例如添加VLC播放器源並安裝的命令:

sudo add-apt-repository ppa:videolan/stable-daily
sudo apt-get update
sudo apt-get install vlc

PPA的優勢

你可能會問為什麼要使用 PPA,PPA 需要通過命令行使用,而不是每個人都喜歡用命令行。為什麼不直接分發可以圖形方式安裝的 DEB 包呢?

答案在於更新的過程。如果使用 DEB 包安裝軟件,將無法保證在運行 sudo apt update 和 sudo apt upgrade 命令時,已安裝的軟件會被更新為較新的版本。

這是因為 apt 的升級過程依賴於 sources.list 文件。如果文件中沒有相應的軟件條目,則不會通過標準軟件更新程序獲得更新。

那麼這是否意味著使用 DEB 安裝的軟件永遠不會得到更新?不是的。這取決於 DEB 包的創建方式。

一些開發人員會自動在 sources.list 中添加一個條目,這樣軟件就可以像普通軟件一樣更新。谷歌 Chrome 瀏覽器就是這樣一個例子。

某些軟件會在運行時通知你有新版本可用。你必須下載新的 DEB 包並再次運行,來將當前軟件更新為較新版本。Oracle Virtual Box 就是這樣一個例子。

對於其餘的 DEB 軟件包,你必須手動查找更新,這很不方便,尤其是在你的軟件面向 Beta 測試者時,你需要頻繁的添加很多更新。這正是 PPA 要解決的問題。

官方PPA與非官方PAA

你或許聽過官方 PPA 或非官方 PPA 這個詞,二者有什麼不同呢?

開發人員為他們的軟件創建的 PPA 稱為官方 PPA。很明顯,這是因為它來自項目開發者。

但有時,個人會創建由其他開發人員所創建的項目的 PPA。

為什麼會有人這樣做? 因為許多開發人員只提供軟件的源代碼,而且你也知道 在 Linux 中從源代碼安裝軟件[7] 是一件痛苦的事情,並不是每個人都可以或者會這樣做。

這就是志願者自己從這些源代碼創建 PPA 以便其他用戶可以輕鬆安裝軟件的原因。畢竟,使用這 3 行命令比從源代碼安裝要容易得多。

注意PPA的兼容性

當在 Ubuntu 或任何其他基於 Debian 的發行版中使用 PPA 時,並非每個 PPA 都適用於你的特定版本。你應該知道正在使用 哪個版本的 Ubuntu。版本的開發代號很重要,因為當你訪問某個 PPA 的頁面時,你可以看到該 PPA 都支持哪些版本的 Ubuntu。

不要試圖去猜測PPA的兼容性,直接上launchpad.net搜索相關軟件,然後通過頁面介紹查看兼職性,比如搜索VLC,進入詳情頁面https://launchpad.net/~videolan/+archive/ubuntu/master-daily

如果不驗證是否適用當前的版本就添加 PPA,當嘗試安裝不適用於你的系統版本的軟件時,可能會看到類似下面的錯誤。

E: Unable to locate package

更糟糕的是,因為它已經添加到你的 source.list 中,每次運行軟件更新程序時,你都會看到 “無法下載軟件倉庫信息[10]” 的錯誤。

如果你在終端中運行 sudo apt update,錯誤提示將包含導致此問題的倉庫的更多詳細信息。你可以在 sudo apt update 的輸出內容結尾看到類似的內容:

W: Failed to fetch http://ppa.launchpad.net/venerix/pkg/ubuntu/dists/raring/main/binary-i386/Packages 404 Not Found
E: Some index files failed to download. They have been ignored, or old ones used instead.

上面的錯誤提示說的很明白,是因為系統找不到當前版本對應的倉庫。還記得我們之前看到的倉庫結構嗎?APT 將嘗試在 http://ppa.launchpad.net//ubuntu/dists/中尋找軟件信息。

如果特定版本的 PPA 不可用,它將永遠無法打開 URL,你會看到著名的 404 錯誤。

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

這是因為 PPA 的作者必須編譯軟件並在特定版本上創建 PPA。考慮到每六個月發佈一個新的 Ubuntu 版本,為每個版本的 Ubuntu 更新 PPA 是一項繁瑣的任務,並非所有開發人員都有時間這樣做。

如果 PPA 不適用於你的系統版本,該如何安裝應用程序?

儘管 PPA 不適用於你的 Ubuntu 版本,你仍然可以下載 DEB 文件並安裝應用程序。

嘗試在 http://ppa.launchpad.net//ubuntu/dists/中查找deb包。

對於下載回來的本地deb包,我建議 使用 Gdebi 安裝這些 DEB 文件, 而不是通過軟件中心,因為 Gdebi 在處理依賴項方面要好得多。

但是!!請理解,以這種方式安裝的軟件包可能無法獲得任何將來的更新。

怎樣刪除PPA

我建議在刪除 PPA 之前刪除從 PPA 安裝的軟件。如果只是刪除 PPA,則已安裝的軟件仍保留在系統中,但不會獲得任何更新。

那麼,問題來了,如何知道是哪個 PPA 安裝了哪個應用程序?

Ubuntu 軟件中心無法移除 PPA 安裝的軟件包,你必須使用具有更多高級功能的 Synaptic 包管理器。

可以從軟件中心安裝 Synaptic 或使用以下命令進行安裝:

sudo apt install synaptic -y

安裝後,啟動 Synaptic 包管理器並選擇 “Origin”。你會看到添加到系統的各種軟件倉庫。PPA 條目將以前綴 PPA 進行標識,單擊以查看 PPA 可用的包。已安裝的軟件前面會有恰當的符號進行標識。

通過添加Ubuntu ppa源,傻瓜式地安裝任意軟件,適用於國產深度

啟動 Synaptic 包管理器查找PPA軟件

找到包後,你可以從 Synaptic 刪除它們。

當然你可以選擇使用命令行對軟件進行移除:

sudo apt remove package_name

然後把/etc/apt/sources.list.d/裡的相關PPA源文件刪除即可。

當然,你也可以選擇圖形界面刪除這些源,

在設置中打開 “軟件和更新”,然後點擊 “其他軟件” 選項卡。查找要刪除的 PPA:

通過添加Ubuntu ppa源,傻瓜式地安裝任意軟件,適用於國產深度

Ubuntu圖形界面啟用和禁用指定軟件倉庫

此處你可以進項兩項操作,可以取消選擇 PPA 或選擇 “刪除” 選項。

區別在於,當你取消選擇 PPA 條目時,系統將在 /etc/apt/sources.list.d 中的ppa_name.list 文件中註釋掉倉庫條目;但如果選擇 “刪除” 選項,將會刪除 /etc/apt/sources.list.d目錄中 ppa_name.list 文件裡的倉庫條目。

在這兩種情況下,文件 ppa_name.list 都保留在所在的目錄中,即使它是空的。

關於PPA安全性

因為PPA不屬於官方源,所以並不保證安全性,但是開源社區裡極少發現惡意PPA的,本人並不排斥PPA的使用,而是根據需求添加PPA源。

https://www.linuxrumen.com/rmxx/950.html

點擊瞭解更多,快速查看更多的技術文章列表。


分享到:


相關文章: