如需学习视频,请在微信搜索公众年夜众号“智传网优”直接开始自助视频学习
序言
本文紧张讲解Ubuntu PPA源的事理以及日常运用,还有利用中的把稳事变。
我们先来回顾一下Ubuntu是如何利用apt命令添加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。
想要理解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 也是一个包含软件信息的网址。
当你运行 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/456sudo apt-get updatesudo apt-get install xxx
阐明一下上面三个命令:
sudo add-apt-repository <- 此命令将 PPA 仓库添加到列表中。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 maindeb-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
查看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 mainoucanrong@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-dailysudo apt-get updatesudo 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 FoundE: 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 可用的包。已安装的软件前面会有恰当的符号进行标识。
启动 Synaptic 包管理器查找PPA软件
找到包后,你可以从 Synaptic 删除它们。
当然你可以选择利用命令行对软件进行移除:
sudo apt remove package_name
然后把/etc/apt/sources.list.d/里的干系PPA源文件删除即可。
当然,你也可以选择图形界面删除这些源,
在设置中打开 “软件和更新”,然后点击 “其他软件” 选项卡。查找要删除的 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
点击理解更多,快速查看更多的技能文章列表。