PPA ,Personal Package Archive,即为个人软件包存档。
一、PPA介绍
- 先说ubuntu官方仓库
ubuntu利用apt工具(Advanced Packaging Tool)管理软件包,采用集中式的软件仓库机制,将各种软件分门别类的放在软件仓库之中,从而有效地自动管理软件依赖关系。
ubuntu将软件仓库放置主服务器上,并在世界各地都有镜像服务器中,镜像服务器与主服务器保持基本一致,但下载速度可能更快。这些服务器上的软件仓库就是ubuntu官方软件仓库。
ubuntu18.04的主仓库及163镜像仓库
Ubuntu每个版本的软件仓库包含 :
1、Main Canonical 支持的免费和开源软件
2、Universe 社区维护的免费和开源软件
3、Restricted 设备的专有驱动
4、Multiverse 有版权和合法性问题限制的软件
软件仓库的地址信息存储在 /etc/apt 目录的 sources.list 文件中:
##163源
deb http://mirrors.163.com/ubuntu/ bionic main restricted universe multiverse
deb http://mirrors.163.com/ubuntu/ bionic-security main restricted universe multiverse
deb http://mirrors.163.com/ubuntu/ bionic-updates main restricted universe multiverse
deb http://mirrors.163.com/ubuntu/ bionic-proposed main restricted universe multiverse
deb http://mirrors.163.com/ubuntu/ bionic-backports main restricted universe multiverse
deb-src http://mirrors.163.com/ubuntu/ bionic main restricted universe multiverse
deb-src http://mirrors.163.com/ubuntu/ bionic-security main restricted universe multiverse
deb-src http://mirrors.163.com/ubuntu/ bionic-updates main restricted universe multiverse
deb-src http://mirrors.163.com/ubuntu/ bionic-proposed main restricted universe multiverse
deb-src http://mirrors.163.com/ubuntu/ bionic-backports main restricted universe multiverse
当执行 sudo apt update
检查更新信息时, APT 工具根据地址检查在线存储库,并将有关软件及其版本的信息存储到缓存中。 执行sudo apt install package_name
安装软件时,系统就会使用该信息从存储实际软件的 URL 获取该软件包。
- 再说ppa库
为了保持系统稳定性,Ubuntu 官方仓库中的软件都需要被检查软件版本是否与系统兼容,而这个检查过程需要的时间,可能是几周,也可能是几个月。这样有时候是很不方便的。
另一种情况是在 beta 测试阶段。即使官方软件仓库中提供了稳定版本的软件,软件开发人员也可能希望某些终端用户测试他们即将发布的版本。
为此,产生了ppa库--私人软件包库。
Ubuntu 提供了一个名为Launchpad 的平台,让软件开发人员能够创建自己的存储库;用户将 PPA 存储库添加到自己的源列表上,并能通过这个ppa安装和更新软件。
比如要通过Launchpad安装peek软件,先在https://launchpad.net/ubuntu/+ppas上精确搜索:
然后在列出的结果列表,选择合适的软件源,注意查看是否适配自己的系统版本(这比较需要耐耐心):
查看软件源是否适配系统
然后根据软件源的提示,添加ppa、更新和安装:
sudo add-apt-repository ppa:peek-developers/stable
sudo apt-get update
sudo apt install peek
为了与ubuntu官方仓库源相区分,ppa源不是放在/etc/apt/sources.list
, 而是在/etc/apt/sources.list.d
目录中为每个ppa创建了两个相关的文件,一个 .list
文件和一个带有 .save
后缀的备份文件。
查看peek相关的.list
文件内容,与/etc/apt/sources.list
类似:
$ cat /etc/apt/sources.list.d/peek-developers-ubuntu-stable-bionic.list
deb http://ppa.launchpad.net/peek-developers/stable/ubuntu bionic main
# deb-src http://ppa.launchpad.net/peek-developers/stable/ubuntu bionic main
二、PPA管理
- 添加ppa
sudo add-apt-repository ppa:ownername/projectname
sudo apt update
- 删除ppa
删除ppa之前一般先删除软件,因为ppa删除后,软件就不再得到更新。
可以在ubuntu的软件与更新图形界面工具中删除:
在ubuntu的软件与更新管理ppa源
也可以在/etc/apt/sources.list.d/
下直接删除相关的PPA文件:
sudo rm /etc/apt/sources.list.d/XXX.list*
- 查看ppa源
因为PPA源是单独存放在/etc/apt/sources.list.d/
文件夹中的,直接查看该目录即可:
ls -l /etc/apt/sources.list.d/
另外,部分不是通过ppa安装的软件包会在安装时把源地址添加到/etc/apt/sources.list
文件中,这也算是ppa软件,但是只能通过/etc/apt/sources.list
查看。
相关问题
- 为什么使用PPA?为何不用DEB包?
答案在于更新的过程。ppa源和官方仓库一样,都是基于apt进行管理,解决包依赖和更新问题。如果使用 DEB 包安装软件,将无法保证在运行 sudo apt update 和 sudo apt upgrade 命令时,已安装的软件会被更新为较新的版本。
这是因为 apt 的升级过程依赖于 sources.list 文件。如果文件中没有相应的软件条目,则不会通过标准软件更新程序获得更新。
那么这是否意味着使用 DEB 安装的软件永远不会得到更新?不是的。这取决于 DEB 包的创建方式。
一些DEB包会自动在 sources.list 中添加自己的源地址,这样软件就可以通过apt命令更新。谷歌 Chrome 浏览器就是这样一个例子。
某些软件会在运行时通知你有新版本可用。你必须下载新的 DEB 包并再次运行,来将当前软件更新为较新版本。Oracle Virtual Box 就是这样一个例子。
对于其余的 DEB 软件包,你必须手动查找更新,这很不方便,尤其是在你的软件面向 Beta 测试者时,你需要频繁的添加很多更新。这正是 PPA 要解决的问题。 - 官方和非官方 PPA
你可能还听说过官方 PPA和非官方PPA的说法,这两者之间又有什么不同呢?
当软件开发商或开发人员为他们的软件创建 PPA 时,被称为官方 PPA。但有时,一些个人也会为其它开发人员的项目创建 PPA。为什么有人这么做呢?主要是因为有的开发人员只提供软件源码,而对很多普通用户来说,在 Linux 中进行源码编译安装是非常痛苦的事,而通过志愿者创建的非官方 PPA,就可以方便用户对软件进行轻松安装和管理了。这就是一个软件可能会有多个相关的PPA的原因。 - 移除失效的ppa源
在升级Ubuntu发行版后,在旧版本上添加的一些第三方PPA仓库就可能不支持新版本ubuntu,相应的软件得不到更新。
要筛选和删除这些软件及相关的源,可以按照上面的方法,还可以:
sudo apt update|grep Failed
根据ppa源格式,知道无效源为“ppa:finalterm/daily”,删除:
sudo add-apt-repository --remove ppa:finalterm/daily
然后sudo apt update
即可。
网友评论