myfreax

如何在Ubuntu/Debian中添加Apt仓库

在本教程中,我们将向您展示两种在Ubuntu和Debian系统上添加apt仓库的方法。第一种方法是使用add-apt-repository命令,第二种方法是使用文本编辑器手动添加存储库

6 min read
By myfreax
如何在Ubuntu/Debian中添加Apt仓库

使用Ubuntu软件中心或命令行apt或apt-get安装软件包时,这些软件包是从一个或多个apt软件存储库中下载的。 APT存储库是一个网络服务器或本地目录,其中包含可被APT工具读取的deb包和元数据文件。

尽管默认的Ubuntu存储库中有成千上万的应用可用,但有时您可能需要从第三方存储库中安装软件。

在本教程中,我们将向您展示两种在Ubuntu和Debian系统上添加apt仓库的方法。第一种方法是使用add-apt-repository命令,第二种方法是使用文本编辑器手动添加存储库。还包括add-apt-repository命令语法,/etc/apt/sources.list文件的作用,/etc/apt/sources.list.d/目录的意义。

如果你需要更快的软件源列表,请参考我们的教程如何更改ubuntu 20.04的软件源

Ap软件源

在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...

该行的第一字段定义包的类型。包类型可以是debdeb-src 。 Deb表示存储库包含.deb软件包,而deb-src表示deb源码包。第二个字段是存储库URL。第三个字段指定Linux发行版的名称,例如beaver ,xenial等。

最后一个字段是存储库组件或类别。默认的Ubuntu存储库分为四个部分-主组件,受限组件,Universe和multiverse。通常,第三方存储库只有一个类别。

/etc/apt/sources.list.d/目录下文件的格式与sources.list文件相同。大多数存储库都提供公钥,以对需要下载和导入的软件包进行验证。

要添加或删除存储库,您需要以具有sudo权限或root用户登录。通常,关于如何启用特定存储库的说明包含在软件文档中。

安装add-apt-repository

add-apt-repository是Python脚本,允许您将APT存储库添加到/etc/apt/sources.list或者作为单个文件添加/etc/apt/sources.list.d目录中。该命令还可以用于删除已经存在的存储库。

如果您的系统上没有add-apt-repository,您会收到一条错误消息,提示“找不到add-apt-repository命令”。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及更高版本上,add-apt-repository也会更新包索引。

软件包索引是一个数据库,包含系统中启用的存储库中可用软件包的记录。假设您要从MongoDB官方存储库中安装MongoDB。首先导入存储库公钥:

sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 9DA31620334BD75D9DCB49F368818C72E52529D4

使用以下命令添加MongoDB存储库。

sudo add-apt-repository 'deb [arch=amd64] https://repo.mongodb.org/apt/ubuntu bionic/mongodb-org/4.0 multiverse'

存储库将添加到sources.list文件中。您现在可以从启用的存储库中安装任何软件包:

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个人软件包存档(Personal Package Archive)是一项服务,允许用户上传使用Launchpad构建和发布的Ubuntu源软件包作为apt信息库。

添加PPA存储库时,add-apt-repository命令在/etc/apt/sources.list.d/目录下创建一个新文件。

例如,要添加Jonathonf的PPA以安装FFmpeg 4.x版本,您可以运行:

sudo add-apt-repository ppa:jonathonf/ffmpeg-4

出现提示时,按Enter,将启用存储库。

Press [ENTER] to continue or Ctrl-c to cancel adding it.

PPA存储库公钥将自动下载并注册。将PPA添加到系统后,您可以安装存储库软件包:

sudo apt update
sudo apt install ffmpeg

apt命令将安装软件包及其所有依赖项。

手动添加存储库

如果您想进一步控制来源的组织方式,可以手动编辑/etc/apt/sources.list文件,并将apt信息库记录添加到该文件中。为演示,我们将启用CouchDB存储库并安装该软件。 CouchDB是由Apache Software Foundation维护的自由开源的容错NoSQL数据库。

要添加存储库,请使用文本编辑器打开sources.list文件:

sudo vim /etc/apt/sources.list

将存储库记录添加到文件末尾:

deb https://apache.bintray.com/couchdb-deb bionic main
/etc/apt/sources.list

除了使用文本编辑器编辑文件外,还可以使用以下echo命令将存储库行追加到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/目录下创建一个新的存储库文件。手动配置存储库时,您还需要手动将公共存储库密钥导入系统。为此,请使用wgetcurl命令导入GPG密钥:

curl -L https://couchdb.apache.org/repo/bintray-pubkey.asc | sudo apt-key add -

上面的命令应该输出OK,这意味着已成功导入GPG密钥,并且该存储库中的软件包将被视为受信任的。在从新添加的存储库中安装软件包之前,您必须更新软件包索引:

sudo apt update

更新软件包索引后,您可以从新添加的存储库中安装软件包:

sudo apt install couchdb

结论

我们已向您展示了如何在Ubuntu中添加apt信息库。相同的说明适用于任何基于Debian的发行版,包括Kubuntu,Linux Mint和Elementary OS。如有任何疑问,请随时发表评论。