如果你在使用 Ubuntu 系统,或其它衍生版本,如 linux Mint、Linux Lite 或者 Zorin OS 等,可能会遇到添加使用 PPA 的情况。那什么是 PPA?为什么要使用 PPA?如何正确添加、使用,以及 PPA 安全吗?下面就为大家介绍,如何在 Ubuntu 系统中使用 PPA。
什么是 PPA,为什么使用它
PPA 全称 Personal Package Archive,顾名思义就是「个人包归档」。在正式了解 PPA 之前,您应该先了解 Linux 中「存储库」的概念:
存储库和包管理的概念
「存储库」repository 是一组文件,其中包含了有关各种软件的版本信息和详细信息,如「校验值」。每个 Ubuntu 版本都有自己的 4 个官方「存储库」:
Main Canonical 支持的免费和开源软件Universe 社区维护的免费和开源软件Restricted 设备的专有驱动Multiverse 有版权和合法性问题限制的软件
您可以点击查看所有 Ubuntu 版本的「存储库」,也可以在页面中查看专「存储库」,例如 Ubuntu 16.04 Main 存储库。其实简单来说,「存储库」就是包含有关软件信息的 Web URL。
那么,系统是如何得知「存储库」repository 位置的呢?其实该信息就存储在 /etc/apt 目录的 sources.list 文件中。如果你查看该文本文件,就可以看到存储库的 URL。
当您执行 sudo apt update 命令时,Ubuntu 系统就会使用 APT 工具检查在线「存储库」,并将有关软件及其版本的信息存储到缓存中。 当您使用 sudo apt install package_name 安装软件时,系统就会使用该信息从存储实际软件的 URL 获取该软件包。
如果存储库中没有关于某个软件包的信息,「终端」中将返回以下错误:
E: Unable to locate package
在介绍完「存储库」的一些基本信息后,我们就可以开始了解 PPA 了。
什么是 PPA
如您所见,Ubuntu 的「存储库」控制着用户可以在系统上获得的软件版本。但如果 ISV 或开发人员发布了软件新版本,Ubuntu 的官方「存储库」不可能立即提http://www.devze.com供。为了确保系统稳定性,官方源会检查新版本是否与系统兼容,所以在软件发布新版本后,短时间内用户是无法通过 Ubuntu 的官方「存储库」来获得最新软件版本的。
另一方面,官方存储库仅提供「稳定版」软件,如果 ISV 要发布软件版本的 beta 测试,是无法通过官方源来发布的。
在遇到以上情况时,就需要使用 PPA 了。
如何使用 PPA,以及 PPA 如何工作
PPA 意味着个人包存档,请注意「个人」这个词,它暗示了这是开发人员所独有的东西,并没有得到分发的正式认可。
Ubuntu 提供了一个名为 Launchpad 的平台,让软件开发人员能够创建自己的存储库,方便最终用户将 PPA 存储库添加到 sources.list。当用户更新系统时,Ubuntu 系统就能够知道这个新软件的可用性,而且可以使用标准的 sudo apt install package_name 命令来安装它,就比如:
sudo add-apt-repository ppa:dr-akulavich/lighttable suGkCLKyltrXdo apt-get update sudo apt-get install lighttable-installer
将上述命令总结一下就是:
- sudo add-apt-repository <PPA_info> 命令可以将 PPA 存储库添加到 sources.list 列表中
- sudo apt-get update 此命令更新软件包列表
- sudo apt-get install <package_in_PPA> 命令用于安装软件包
现在让我们详细拆解一下:
sudo add-apt-repository ppa:dr-akulavich/lighttable
上述命令中并没有列出存储库的 URL,这是因为该工具旨在对有关 URL 的信息进行抽象化。如果你添加 ppa:dr-akulavich/lighttable,将会获取到 Lipythonght Table;如果添加的是 ppa:dr-akulavich,将能够获取到「上层存储库」中的所有存储库或软件包。
基本上,当您使用 add-apt-reposito编程客栈ry 添加 PP A时,相当于手动执行类似如下命令:
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
上述 2 条命令是将存储库添加到 sources.list 的传统方法,而在添加 PPA 时会自动完成对 sources.list 文件的配置,而无需用户知道确切的存储库 URL 和操作系统版本,相当于是自动化的。
而相当重要的一点就是,使用 PPA 时它不会更改 Ubuntu 系统中的原始 sources.list 配置文件,而是根据最佳实践在 /etc/apt/sources.list.d/ 目录中创建列表文件和对应(save 扩展名)的备份文件。
这是一种安全措施,可确保添加 PPA 时不会污染原始 sources.list,而且还有助于 PPA 移除。
官方和非官方 PPA
你可能还听说过官方 PPA和非官方 PPA的说法,这两者之间又有什么不同呢?
当软件开发商或开发人员为他们的软件创建 PPA 时,被称为官方 PPA。但有时,一些个人也会为其它开发人员的项目创建 PPA。为什么有人这么做呢?主要是因为有的开发人员只提供软件源码,而对很多普通用户来说,在 Linux 中进行源码编译安装是非常痛苦的事,而通过志愿者创建的非官方 PPA,就可以方便用户对软件进行轻松安装和管理了。
确保你的Linux发行版可以使用PPA
当在 Ubuntu 或其他基于 Debian 的 Linux 发行版中使用 PPA 时,应该记住一些事:
并非每个 PPA 都适用于您的特定 Linux 版本。你需要知道当前正在使用哪个 Ubuntu 版本,该版本的代号非常重要。当您转到某个 PPA 的网页时,就可以看到 PPA 支持哪些 Ubuntu 版本。
如何获取 PPA 的网址呢?只需在互联网上搜索 PPA 名称,如 ppa:dr-akulavich/lighttable,就可以获得 Launchpad 这一官方 PPA 托管平台中的结果。当然,你也可以直接到 Launchpad 网站中进行搜索。
为什么PPA不适用于所有Ubuntu发行版本
Ubuntu 每 6 个月会发布一个新版本,而必需要为特定版本编译软件创建 PPA 才能适配,为每个 Ubuntu 版本更新 PPA 是一项繁琐的任务,而维护老版本的软件更新也不太现实,所以并非所有开发人员或 PPA 维护者都会花时间这么做。
如果PPA不适用于你的Linux版本,要如何安装应用程序?
如果 PPA 不适用于您的 Ubuntu 版本,仍然可以下载 DEB 文件来安装应用程序。您可以点击「View package details」:
此后可以单击包以显示更多详细信息,还可以在此处找到包的源代码和 DEB 文件:
由于 Gdebi 在处理依赖项方面要好得多,建议使用 Gdebi 而非「软件中心」来安装这些 DEB 文件。
如何删除PPA
建议在删除 PPA 之前事先删除通过 PPA 安装的软件,如果你只删除 PPA,则已经安装的软件仍然会保留在系统当中,而且还无法获得任何更新。
那么问题来了,如何判断哪些应用程序是通过 PPA 安装的呢?
找出通过PphpPA安装的软件
Ubuntu「软件中心」是不包括这个功能的,我们可以通过「新立得包管理器」来找出通过 PPA 安装的软件:
sudo apt install synaptic
在「新立得包管理器」中选择「源自」:
找到包后,您可以直接用「新立得包管理器」来删除它们,或者执行「终端」命令来删除:
sudo apt remove package_name
删除用 PPA 安装的软件包后,您可以继续从 sources.list 中删除 PPA。
以图形方式删除PPA
转到「软件和更新」——然后转到「其它软件」选项卡——查找要删除的 PPA:
你有两个选择:您取消选择 PPA 或直接用「删除」选项。
其区别在于:当您取消选择 PPA 条目时,系统会将 /etc/apt/sources.list.d 中的 ppa_name.list 文件注释掉;如果选择「删除」选项,就会直接删除 /etc/apt/sources.list.d 目录中的 ppa_name.list文 件。
使用PPA安全吗
由于提供对软件安装的简单选择,PPA 在 Debian 和 Ubuntu 用户群体中很受欢迎。就安全性而言,官方 PPA可以不加考虑的使用,而是否使用非官方 PPA就完全取决于你的个人选择了。
根据经验,如果程序需要 sudo 权限,则应避免通过第三方 PPA 安装程序。
精彩评论