Ubuntu 中的 PPA 终极指南

一篇深入的文章,涵盖了在 Ubuntu 和其他 Linux 发行版中使用 PPA 的几乎所有问题。

如果您一直在使用 Ubuntu 或其他基于 Ubuntu 的 Linux 发行版,例如 Linux Mint、Linux Lite、Zorin OS 等,您可能会遇到这样的三行命令:

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

许多网站建议使用这种方法在 Ubuntu 中安装应用程序。这就是所谓的使用 PPA 安装应用程序。

什么是 PPA ?为什么使用它?使用 PPA 安全吗?如何正确使用 PPA ?如何删除 PPA ?

我将在本详细指南中回答上述所有问题。即使您已经对 PPA 有所了解,我相信这篇文章仍然会增加您的知识。

请注意,本文全程以 Ubuntu 为例进行操作,但解释和步骤也适用于其他基于 Debian/Ubuntu 的发行版。

Ubuntu 中的 PPA 终极指南插图

什么是 PPA?

PPA(Personal Package Archive)就是个人软件包档案。PPA 允许应用程序开发人员和 Linux 用户创建自己的存储库来分发软件。有了 PPA,你可以很容易地获得更新的软件版本或通过 Ubuntu 官方存储库无法获得的软件。

在了解 PPA 之前,您应该简单了解 Linux 中存储库的概念。

存储库和包管理的概念

存储库是文件的集合,其中包含有关各种软件、其版本和其他一些详细信息(如校验和)的信息。每个 Ubuntu 版本都有自己的一套官方的四个存储库:

  • Main – 规范支持的免费和开源软件。
  • Universe – 社区维护的自由和开源软件。
  • Restricted – 设备的专有驱动程序。
  • Multiverse – 受版权或法律问题限制的软件。

您可以在 此处 查看所有 Ubuntu 版本的此类存储库。您可以浏览它们,也可以转到各个存储库。例如,Ubuntu 22.04 主存储库可以在 这里 找到。

所以基本上它是一个包含有关软件信息的 Web URL。您的系统如何知道这些存储库的位置?

此信息存储在目录 /etc/apt/sources.list 文件中。使用命令 sudo cat /etc/apt/sources.list 查看其内容,您会发现它具有存储库的 URL。开头带有 # 的行将被忽略。

Ubuntu 中的 PPA 终极指南插图1

现在,当您运行命令 sudo apt update 时,您的系统使用 APT 工具来检查存储库,并将有关软件及其版本的信息存储在缓存中。当您使用命令 sudo apt install package_name 时,它会使用该信息从存储实际软件的 URL 获取该软件包。

如果存储库没有有关某个包的信息,您将看到 “无法定位软件包” 错误:

Ubuntu 中的 PPA 终极指南插图2

在这一点上,我建议阅读我的使用 apt 命令的指南。这将使您更好地了解 apt 命令、更新等。

以上这些是关于存储库的简单介绍。但是什么是 PPA?它是如何使用的?

为什么使用 PPA?

正如你所看到的,Ubuntu 控制着你在系统中使用的软件,更重要的是控制着你的软件版本。但是想象一下,如果一个软件开发人员发布了一个新版本的软件。

Ubuntu 不会立即提供。他们有一个程序可以检查新版本的软件是否与系统兼容。这确保了系统的稳定性。但这也意味着,Ubuntu 还需要几周或几个月才能提供它。并不是每个人都想等那么久才能拿到他们最喜欢的软件的新版本。

另一种情况是在 beta 测试期间。即使官方存储库中提供了该软件的稳定版本,软件开发人员也可能希望一些最终用户测试其即将发布的版本。它们如何使最终用户能够对即将发布的版本进行 beta 测试?

结束这一切,开始使用 PPA 吧!

如何使用 PPA?PPA 是如何工作的?

PPA,正如我已经告诉你的,它是个人软件包档案。请注意这里的 “个人” 一词。这暗示这是开发人员独有的东西,并且没有得到发行版的正式认可。

Ubuntu 提供了一个名为 Launchpad 的平台,使软件开发人员能够创建自己的存储库。最终用户,即您可以将 PPA 存储库添加到您的 sources.list 中,当您更新系统时,您的系统会知道这个新软件的可用性,您可以使用这样的标准 sudo apt install package_name 命令来安装它。

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

总结一下:

  • sudo add-apt-repository <PPA_info>  #此命令将 PPA 存储库添加到列表中。
  • sudo apt update #此命令更新可以安装在系统上的软件包列表。
  • sudo apt install <package_in_PPA> #此命令安装软件包。

您会看到使用命令 sudo apt update 很重要,否则您的系统将不知道何时有新软件包可用。Ubuntu 18.04 及更高版本会在添加 PPA 源后自动运行更新以刷新软件包列表,但我不能保证其他发行版。最好运行此命令。

现在让我们更详细地看一下第一个命令。

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

您会注意到,此命令没有指向存储库的URL。这是因为该工具旨在从您那里提取有关URL的信息。

只是一张小纸条。如果你加上 ppa:dr-akulavich/lighttable,你就得到了 Light Table。但是,如果您添加 ppa:dr-akulavich,您将获得 “上层存储库” 中提到的所有存储库或包。这是分层的。

基本上,当您使用 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

以上两行是将任何存储库添加到 /etc/apt/sources.list 的传统方法。但是 PPA 会自动为您执行此操作,而无需考虑确切的存储库 URL 和操作系统版本。

这里需要注意的一件重要事情是,当您添加 PPA 存储库时,它不会更改您的原始 /etc/apt/sources.list。相反,它会在 /etc/apt/sources.list.d 目录中创建两个文件,一个列表和一个后缀为 “save” 的备份文件。

Ubuntu 中的 PPA 终极指南插图3
PPA 创建单独的源列表

每个文件具有添加有关存储库信息的命令:

Ubuntu 中的 PPA 终极指南插图4
PPA 列表源内容

这是一项安全措施,可确保添加 PPA 不会弄乱原始 /etc/apt/sources.list 它还有助于删除 PPA。

为什么选择 PPA?为什么不是 DEB 包?

您可能会问,当 PPA 使用可能不是每个人都喜欢的命令行时,为什么要使用 PPA。为什么不分发一个可以图形方式安装的 DEB 包呢?

答案在于更新过程。如果您使用 DEB 软件包安装软件,则无法保证在运行 sudo apt update && sudo apt upgrade 升级时,已安装的软件将更新到较新版本。

这是因为 apt 升级过程依赖于 sources.list 如果没有软件条目,则不会通过标准软件更新程序获取更新。那么这是否意味着使用 DEB 安装的软件永远不会得到更新?也有例外。这取决于包的创建方式。

一些开发人员会自动将条目添加到 sources.list 中,然后像常规软件一样对其进行更新。微软的 Edge 浏览器就是这样一个例子。

有的时候,某些软件会通知您有新版本可用。您必须下载新的 DEB 软件包并再次安装它,才能将当前软件更新到较新版本。就像在 Windows 下,大部分软件采用这种方式来提示用户更新。

对于其余的 DEB 软件包,您必须手动查找更新,这并不方便,特别是如果您的软件适用于 beta 测试人员。您需要经常添加更多更新。这就是 PPA 的优势所在。

官方 PPA 与非官方 PPA

您也可以听到术语 “官方PPA” 或 “非官方PPA”。有什么区别?

当开发者为他们的软件创建 PPA 时,它被称为官方 PPA。很明显,因为它正是来自项目的原始开发人员。

但有时,个人会为其他开发商创建的项目创建 PPA。

为什么会有人这么做?因为许多开发人员只是提供软件的源代码,而你知道在 Linux 中从源代码安装软件是一件痛苦的事情,并不是每个人都能或愿意这样做。

这就是为什么志愿者会自己根据这些源代码创建 PPA,以便其他用户可以轻松安装该软件。毕竟,使用这3行代码要比安装源代码容易得多。

确保 PPA 可用于您的分发版本

当谈到在 Ubuntu 或任何其他基于 Debian 的发行版中使用 PPA 时,有几件事你应该记住。

并非每个 PPA 都适用于您的特定版本。你应该知道你使用的是哪个 Ubuntu 版本。发行版的代号很重要,因为当你进入某个 PPA 的网页时,你可以看到 PPA 支持哪些 Ubuntu 版本。

Ubuntu 中的 PPA 终极指南插图5

对于其他基于 Ubuntu 的发行版,您可以使用命令 cat /etc/os-release 查看版本的内容以了解版本信息。

Ubuntu 中的 PPA 终极指南插图6

如何知道 PPA 网址?您首选可以从 https://launchpad.net/ 网站获得,该网站是托管 PPA 的官方平台。您也可以转到快速启动板并直接在那里搜索所需的 PPA。

如果您不验证并添加 PPA,则在尝试安装不适用于您的版本的软件时,可能会看到这样的错误。

Ubuntu 中的 PPA 终极指南插图7

更糟糕的是,由于它已添加到您的源列表,因此运行软件更新程序时,您都会看到一个错误“无法下载存储库信息”。

Ubuntu 中的 PPA 终极指南插图8

如果您在终端中运行 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/<PPA_NAME>/ubuntu/dists/Ubuntu_Version

如果特定版本的 PPA 不可用,它将永远无法打开 URL,并且您会收到著名的 404 错误。

为什么 PPA 不适用于所有 Ubuntu 发行版?

这是因为必须有人编译软件并在特定版本上从中创建 PPA。考虑到每六个月发布一个新的 Ubuntu 版本,为每个 Ubuntu 版本更新 PPA 是一项令人厌烦的任务。并非所有开发人员都有时间这样做。

如果 PPA 不适用于您的 Ubuntu 系统版本,如何安装应用程序?

虽然 PPA 不适用于您的 Ubuntu 版本,但您仍然可以下载 DEB 文件并安装应用程序

假设您转到 https://launchpad.net/ 网站的某个 PPA 页面。使用您刚刚学到的有关 PPA 的知识,您意识到 PPA 不适用于您的特定 Ubuntu 版本。您可以做的是单击 “查看软件包详细信息”。

Ubuntu 中的 PPA 终极指南插图9

在这里,您可以单击一个包以显示更多详细信息。您还可以在此处找到软件包的源代码和 DEB 文件。

Ubuntu 中的 PPA 终极指南插图10

我建议使用 Gdebi 而不是软件中心来安装这些 DEB 文件,因为 Gdebi 在处理依赖项方面要好得多。

请注意,以这种方式安装的软件包可能不会获得任何将来的更新。

我想你已经阅读了足够多的关于添加 PPA 的信息。如何删除 PPA 及其安装的软件?

如何删除 PPA?

我建议在删除 PPA 之前删除您从 PPA 安装的软件。如果您只是删除 PPA,已安装的软件将保留在系统中,但不会获得任何更新。你不会想要这样吧?

那么,问题来了,如何知道哪个 PPA 安装了哪个应用程序?

查找 PPA 安装的软件包并将其删除

Ubuntu 软件中心在这里没有帮助。您必须在此处使用具有更高级功能的 Synaptic 包管理器。

可以从 Ubuntu 的软件中心安装 Synaptic,也可以使用以下命令:

sudo apt install synaptic

安装后,启动 Synaptic 包管理器并选择源。您将看到添加到系统中的各种存储库。PPA 条目将标有前缀 PPA。单击它们以查看 PPA 提供的软件包。已安装的软件前面将有适当的符号。

Ubuntu 中的 PPA 终极指南插图11

找到软件包后,您可以从Synaptic本身中删除它们。否则,您始终可以选择使用命令行:

sudo apt remove package_name

删除 PPA 安装的软件包后,可以继续从 /etc/apt/sources.list.d 目录中删除 PPA 源文件了。

或者以图形方式删除 PPA,转到“软件和更新”,然后转到“其他软件”选项卡。查找要删除的 PPA:

Ubuntu 中的 PPA 终极指南插图12

您在这里有两个选择。您可以取消选择 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 在 Debian/Ubuntu 世界中很受欢迎,因为它们提供了更简单的安装选项。

就安全性而言,您使用 PPA 并且您的 Linux 系统被黑客入侵或注入恶意软件的可能性较小。到目前为止,我不记得发生过这样的事件。

官方 PPA 可以不假思索地使用。使用非官方的 PPA 完全由您决定。

根据经验,如果程序需要 sudo 访问权限才能运行,则应避免通过第三方 PPA 安装程序。

标签

发表评论