PPA
PPA(Persional Package Archive)
参考资料:https://itsfoss.com/ppa-guide/
私人包存档,这暗示对一个开发人员独有的东西,是非官方支持的发布。
Ubuntu提供了一个叫做Launchpad的平台使软件开发人员能够创建属于他们自己的仓库。你可以将PPA repository
加入到你的sources.list
里面当你更新你的系统时,你的系统将知道新软件的可用性,并且你可以使用标准的sudo apt install
命令安装这个软件。
1 | 将the PPA repository添加到list中 |
sudo add-apt-repository ppa:dr-akulavich/lighttable
这个命令中没有URL,是因为the tool被设计使用抽象信息表达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
上面这两行是添加任何仓库(repositories)到你的sources.list
的传统方式。
但是PPA对你来说是自动的,无需担心精准的repository URL
地址和操作系统版本。
一个要提及的重要的事就是当你使用PPA的时候,他不会改变你的原来的sources.list
文件,而它会在/etc/apt/sources.d
目录中创建两个文件,一个list文件和一个备份文件(后缀为save)。
以list为后缀的文件包含添加关于库的信息的命令。
这是一个确保添加PPA不会弄乱原来的sources.list
文件的安全的措施,也可以帮助删除PPA。
为什么是PPA?为什么不是DEB包?
你也许会问为什么你应该使用PPA,当涉及到使用不是每个人偏爱的命令行的时候。为什么不直接发布能详细安装的DEB包?
答案在于更新过程。如果你使用DEB包安装软件,则不能保证安装的软件在你运行sudo apt update && sudo apt upgrade
命令时能被更新。
因为apt upgrade过程依赖sources.list
,如果没有软件条目,那么他就无法通过标准软件更新获得更新。
所以,这就意味着使用DEB包安装的软件将永远不会获得更新?不是,这要看这个包是如何被创建的。
一些开发者自动添加一个条目到sources.list
,然后这个软件就像常规软件那样更新。Google Chrome就是这样一个例子。
当你试图运行一些软件时,它会通知你新版本的可用性。你将不得不下载一个新的DEB包,然后再次运行以更新当前软件到一个新的版本。Oracle Virtual Box就是这样一个例子。
对于剩下的DEB包,你将不得不手动寻找一个更新,并且这样并不方便,特别是如果你的软件是为了beta测试者。你需要频繁地添加更多的更新。这就是PPA抢救的地方。
官方的PPA vs 非官方的PPA
你可能听说过官方的PPA和非官方的PPA。两者有什么不同?
当开发者为他们的软件创建一个PPA时,这个PPA就被称作官方的PPA。很明显,它来自于项目开发人员。
但是有时候,个人创建一个项目的PPA,但这个项目由其他人创建。
为什么有些人这样做?因为有些开发人员仅仅提供软件的源代码,并且你知道installing software from source code in Linux 是痛苦的,不是所有人可以或者愿意这样做。
这就是为什么志愿者自己根据这些源代码创建PPA,以便其他使用者能容易地安装软件,毕竟,使用那3行命令要比源代码安装容易的多。
确保PPA对你的发行版本是可用的
当在Ubuntu或其他基于Debian的发行版来说,有一点事情要牢记。
不是所有的PPA对你的特定的发行版是可用的。你应该知道哪一个Ubuntu版本是你正在使用的。发行的codename是重要的,因为当你转到某个PPA网页时,你能看到那一个Ubuntu版本是PPA所支持的。
对于其他基于Ubuntu的发行版,你可以检查这目录/etc/os-release
,找到Ubuntu 的版本信息。
https://itsfoss.com/how-to-know-ubuntu-unity-version/
如何知道PPA的URL呢?在网络上简单搜索PPA的名称,如ppa:dr-akulavich/lighttable 并且你应该获得Launchpad网站的第一个结果,Launchpad是存储PPA的官方平台。在那你也能直接地去发布和搜索需要的PPA。
如果你没有核实并添加PPA,当你尝试去安装一个对你系统版本不可用的软件时,你可能看到一个错误:
E: Unable to locate package
更糟糕的是自从它被加入到你的source.list
后,你每次运行软件更新(software updater),你将会看到一个错误:Failed to download repository information
如果你在终端中运行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错误。
为什么PPAs不是对所有的Ubuntu发行版都可用呢?
这是因为有人必须编译这个软件并且在特定版本上创建PPA。考虑到每6个月发行一次Ubuntu版本,为每一个Ubuntu发行版更新PPA是一个烦人的任务。
如果PPA对你的版本是不可用,那么该如何安装应用程序?
尽管PPA对你的版本是不可用的,那么安装程序也是可能的。你仍然可以下载DEB文件,然后安装这个应用程序。
假设你转到Light Table PPA页面。使用刚刚所学的PPA的知识,你了解到PPA是对你的Ubuntu版本不可用。
你能做的是点击View package details’
在那,你能点击一个包去揭露更多详情信息。你也将发现源代码和DEB文件。
我建议使用using Gdebi to install these DEB files而不是软件中心,因为Gdebi是比处理依赖要好的多。
请注意,这种方式安装的软件包可能不会在未来更新。
我认为你已经阅读了关于添加PPAs足够多的内容。如何一处PPA并且由它安装的软件呢?
如何删除PPA?
我曾经写了关于如何删除PPA,我在这也会描述一些方法。
https://itsfoss.com/how-to-remove-or-delete-ppas-quick-tip/
我建议你删除从PPA中安装的软件之前先删除PPA。如果你仅仅移除PPA,已安装的软件仍然在你的系统中,他不会获取任何更新。你不想这样,对吗?
因此问题来了,如何知道那个应用使用哪个PPA安装的呢?
寻找由PPA安装的package并删除他们
Ubuntu的软件中心不会帮助。你将必须使用Synaptic package manager,它有更多高级特性。
你能在Ubuntu上安装Synaptic,或者使用以下命令:
sudo apt install synaptic
安装后启动Synaptic package manager,并选择Origin。你将看到各种各样的加入到系统中的库。PPA条目以PPA为前缀。点击他们查看PPA可用的软件包。已安装的软件在它之前将会有适当的符号。
在你发现软件包之后,你能从Synaptic上删除他们。另外,你总是能使用这个命令:
sudo apt remove package_name
在你删除由PPA安装的软件包后,你能从你的sources.list
中继续删除这个PPA。
图形化地删除PPA
打开Software & Updates,然后打开Other Software标签。寻找你要删除的PPA。
在这你有两个选项。要不取消选定PPA,要不你选择Remove选项。
两者不同的是当你取消选定PPA条目时,你的系统将在/etc/apt/sources.list.d
目录下ppa_name.list
文件中注释掉库条目,但是你选择Remove选项它就会从/etc/apt/sources.list.d
目录下ppa_name.list
文件中删除库条目。
这两种情况,ppa_name.list
文件存在于那个目录中,即使它是空的。
使用PPA安全吗?
这是一个主观性的问题。纯粹主义者讨厌PPA,因为大多数情况下PPAs是来自与第三方开发者。但是与此同时,由于提供了一个更容易的安装选项,PPAs是在Debian/Ubuntu世界是受欢迎的。
就安全性而言,你使用PPA和Linux系统受到恶意软件的攻击或劫持是几乎不可能的。到目前为止,我想不起这种偶然事件曾经发生过。
官方PPAs能被使用,这无需多想。使用非官方PPA完全取决于你的决定。
根据经验,如果该程序需要sudo权限才能运行,则应避免通过第三方PPA安装该程序。