当使用 Ubuntu 软件中心或者从终端命令行输入apt
或者apt-get
安装软件包时,软件包被从一个或者多个软件源下载下来。一个 APT 软件源是一个网络服务器或者一个本地目录,它包含 deb 软件包和可以被 APT 工具读取的元文件。
虽然默认的 Ubuntu 软件源有成千上万个软件包可用,但是有时候你还是需要从第三方软件源上安装软件。
在这篇指南中,我们将会向你展示在 Ubuntu 和 Debian 系统中的两种方式,来添加 apt 软件源。第一种方式是使用add-apt-repository
命令,第二种方式是通过文本编辑器手动添加软件源。
一、 Apt 源文件
在 Ubuntu 和其他所有的 Debian 系列的发行版中,apt 软件源被定义在 /etc/apt/sources.list
文件中或者在/etc/apt/sources.list.d/
文件夹下的独立文件中。
在/etc/apt/sources.list.d/
目录下的软件源文件名称必须要以.list
结尾。
/etc/apt/sources.list
文件中的通用格式是下面这样:
deb http://repo.tld/ubuntu distro component...
- 第一个是归档类型。归档类型可以是deb或者deb-src。Deb 表明源包含的是
.deb
软件包,而 deb-src 表明是源码软件包。 - 第二个是软件源的 URL 地址
- 第三个指明了发行版的版本号,例如 beaver, xenial 等等。
- 最后一个是软件源组件或者分类。默认的 Ubuntu 软件源被分成四个组件- main, restricted, universe 和 multiverse。通常,第三方源只有一个分类。
/etc/apt/sources.list.d/
目录下的文件格式和正常的sources.list
文件格式一样。
大部分源提供了一个用于授权下载软件公开的 key,需要下载并且导入。
想要添加或者移除一个软件源,你需要以 root 或者 sudo 权限用户登录。
通常,关于如何启用某个特殊的软件源的指令,都包含在软件的文档中。
二、安装add-apt-repository (add-apt-repository command not found )
add-apt-repository
是一个 Python 脚本,它允许你添加一个 APT 软件源到/etc/apt/sources.list
或者一个/etc/apt/sources.list.d
目录下的单独文件中。这个命令也可以用来移除一个已经存在的软件源。
如果add-apt-repository
在你的系统上不可用,你可能会得到错误提示:“add-apt-repository command not found”。
add-apt-repository
工具被包含在software-properties-common
软件包。想要安装它,运行下面的命令:
sudo apt update
sudo apt install software-properties-common
三、使用add-apt-repository
添加软件源
add-apt-repository
命令的基本语法如下:
add-apt-repository [options] repository
repository
可以是一个正常的可以被添加到sources.list
文件的软件源条目,例如deb http://repo.tld/ubuntu distro component
,也可以是一个类似ppa:<user>/<ppa-name>
格式的 PPA 源。
想要查看add-apt-repository
命令所有的选项,在终端输入man add-apt-repository
。
默认情况下,在 Ubuntu 18.04 或者更新的发行版上,如果公开的 key 被导入,add-apt-repository
还会更新软件包的索引。
软件包索引是一个数据库,它记录了在你的系统上,来自软件源的所有可用软件包。
比如说,你想从它们的官方软件源中安装 MongDB。
首先导入软件源的公开 Key:
代码语言:javascript复制sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 9DA31620334BD75D9DCB49F368818C72E52529D4
使用下面的命令添加 MongoDB 软件源:
代码语言:javascript复制sudo add-apt-repository 'deb [arch=amd64] https://repo.mongodb.org/apt/ubuntu bionic/mongodb-org/4.0 multiverse'
这个软件源将会被添加到sources.list
文件中。
你现在可以从最新启用的软件源中安装任何软件包了:
代码语言:javascript复制sudo apt install mongodb-org
如果因为任何原因,你想移除一个之前启用的软件源,使用--remove
选项:
sudo add-apt-repository --remove 'deb [arch=amd64] https://repo.mongodb.org/apt/ubuntu bionic/mongodb-org/4.0 multiverse'
四、添加 PPA 软件源
个人软件包归档(PPA)是一个服务,它允许用户上传通过 Launchpad 构建和公开的 Ubuntu 源码软件包。
当添加一个 PPA 软件源时,add-apt-repository
命令在/etc/apt/sources.list.d/
目录下创建一个新文件。
例如,添加提供 FFmpeg 的 Jonathon F 的 PPA,你需要运行:
代码语言:javascript复制sudo add-apt-repository ppa:jonathonf/ffmpeg-4
当被提示时,按Enter
,这个源将被启用。
Press [ENTER] to continue or Ctrl-c to cancel adding it.
PPA 软件源的公开 Key 将会被自动下载并导入。
一旦 PPA 被添加到你的系统中,你可以安装软件源的软件包:
代码语言:javascript复制sudo apt install ffmpeg
apt
命令将会安装软件包和它所有的依赖软件包。
五、手动添加软件源
如果你想对于你的软件源如何组织拥有更多控制操作,你可以手动编辑文件/etc/apt/sources.list
并且在文件中添加 apt 软件源的地址。
为了演示,我们将会启用 CouchDB 软件源并且安装软件。CouchDB是一个免费并且开源的容错 NoSQL 数据库,由 Apache 自由软件基金会维护。
想要添加源,使用你的文本编辑器打开sources.list
文件。
sudo nano /etc/apt/sources.list
将软件源添加到文件最后一行:
代码语言:javascript复制deb https://apache.bintray.com/couchdb-deb bionic main
如果不用文本编辑器,你也可以通过下面的命令,直接将软件源添加到sources.list
文件:
echo "deb https://apache.bintray.com/couchdb-deb $(lsb_release -cs) main" | sudo tee -a /etc/apt/sources.list
$(lsb_release -cs)
将会打印出 Ubuntu 的代号。例如,如果你有 Ubuntu 18.04,这个命令将会打印出bionic
。
另外一个选项就是在/etc/apt/sources.list.d/
目录下创建一个新的软件源文件。
当手动配置软件源时,你仍然需要手动导入公开源 key 到我们的系统。想要这么做,使用wget
或者curl
:
curl -L https://couchdb.apache.org/repo/bintray-pubkey.asc | sudo apt-key add -
上面的命令将会打印出OK
,这代表 GPG key 已经被城管导入,并且这个软件源的软件包可以被信任。
在安装最近添加的软件源中的软件包时,你必须更新软件包索引:
代码语言:javascript复制sudo apt update
一旦软件包索引更新完成,你可以从最近添加的软件源中安装软件包:
代码语言:javascript复制sudo apt install couchdb
六、总结
我们已经展示了如何在 Ubuntu 中添加 apt 软件源。同样的指令同样适合于基于 Debian 的任何 Linux 发行版,包括 Kubuntu, Linux Mint 和 Elementary OS。