如何将 APT 软件包存储库添加到 Debian、Ubuntu 和 Mint
软件包存储库(简称repo)是存储软件包并可从中检索的位置。它被组织在一个特殊的目录树中,通常包含一个索引文件和 Linux 包管理器访问 repo 中的包及其依赖项所需的元数据。
包管理器(例如类 Debian 系统)使您能够从已配置的存储库自动安装和升级包。
它们还具有依赖性解析功能和软件更新检查功能。此外,所有包管理器(如果不是大多数的话)都可以删除不再需要的包。
本指南介绍如何在 Debian 和 Ubuntu Linux 及其衍生产品(如 Linux Mint)中添加软件包存储库。
了解 Debian 和 Ubuntu 上的 APT 存储库
APT 包管理器从各种存储库中获取包。存储库可以是二进制的或源代码的,可以是自动的或普通的。它也可以在线或离线(例如在 CD-ROM 上),但前者更常见。此外,存储库可以是官方的(由 Debian 或 Ubuntu/Canonical 维护)或非官方的(第三方)。
存储库在 /etc/apt/sources.list 配置文件或存储在 /etc/apt/sources.list.d 目录下的文件中定义。每个 repo 文件必须以 .list
扩展名结尾。
$ ls /etc/apt/sources.list.d/

在存储库文件中,每一行都具有以下语法。
deb URI distribution component1 component2 … componentN
OR
deb-src URI distribution component1 component2 … componentN
第一个参数指定存档类型(deb – 二进制或 deb-src – 源文件),接下来是 URI – 根目录存储库,然后是分发,以及一个或多个组件。

自动 APT 存储库
要定义自动存储库,您必须指定一个发行版和一个或多个组件,并且发行版不得以斜杠结尾。
以下是自动回购定义的示例:
deb http://repository.spotify.com stable non-free
deb https://ftp.postgresql.org/pub/pgadmin/pgadmin4/apt/focal pgadmin4 main
deb https://download.mono-project.com/repo/ubuntu stable-focal main
非自动或简单的 APT 存储库
对于非自动 存储库,分布 指定索引文件的相对路径并且必须以斜杠结尾。此外,不得指定任何组件。
这里有些例子:
deb http://cloud.r-project.org/bin/linux/debian bullseye-cran40/
deb file:///home/tecmint/rep-exact binary/
重要的是,APT 依赖于本地包索引,这是一个包含来自 /etc/apt/sources.list 文件和 /etc/apt/sources.list.d 目录。您可以在 /var/lib/apt/lists/ 目录下找到包索引文件。
更改存储库配置后,您必须始终在安装或更新包之前更新本地包索引。
$ sudo apt update
OR
$ sudo apt-get update
让我们看看如何添加 apt 存储库,如下所述。
在 Debian 和 Ubuntu 上手动添加 APT 存储库
要手动添加存储库,只需在 /etc/apt/sources.list.d 目录下创建 repo 文件即可。我们不建议在 /etc/apt/sources.list 文件中添加所有存储库。
此示例显示如何添加 R 软件环境包存储库。
$ sudo vim /etc/apt/sources.list.d/r-packages.list
将存储库配置复制并粘贴到文件中,确保 URI 和 distribution 以及 components 等参数与存储库中定义的相匹配:
deb https://cloud.r-project.org/bin/linux/ubuntu focal-cran40/

然后使用以下 wget 命令添加存储库密钥。
$ wget -qO- https://cloud.r-project.org/bin/linux/ubuntu/marutter_pubkey.asc | sudo tee -a /etc/apt/trusted.gpg.d/cran_ubuntu_key.asc
或者,您也可以使用 tee 命令添加存储库,如下所示:
$ echo "deb https://cloud.r-project.org/bin/linux/ubuntu focal-cran40/" | sudo tee /etc/apt/sources.list.d/r-packages.list
$ wget -qO- https://cloud.r-project.org/bin/linux/ubuntu/marutter_pubkey.asc | sudo tee -a /etc/apt/trusted.gpg.d/cran_ubuntu_key.asc
接下来,您需要使用存储库中所做的最新更改更新本地包索引,然后从存储库安装包,如下所示:
$ sudo apt update
$ sudo apt install --no-install-recommends r-base
要禁用 apt 存储库,只需在存储库配置文件中将其注释掉,如以下屏幕截图所示。

使用 apt-add-repository 命令添加 APT 存储库
add-apt-repository 命令行实用程序用于将存储库添加到 /etc/apt/sources.list 文件或 /etc/apt/ sources.list.d 目录。如果存储库已经存在,它可以使用 -r
标志将其删除。
如果 add-apt-repository 实用程序在您的系统上不可用,您可以安装提供它的 software-properties-common 软件包:
$ sudo apt update
$ sudo apt install software-properties-common
让我们看看下面的例子。第一个命令添加 repo,第二个命令使用 tee 实用程序检索 repo 密钥:
$ sudo add-apt-repository "deb https://cloud.r-project.org/bin/linux/ubuntu $(lsb_release -cs)-cran40/"
$ wget -qO- https://cloud.r-project.org/bin/linux/ubuntu/marutter_pubkey.asc | sudo tee -a /etc/apt/trusted.gpg.d/cran_ubuntu_key.asc
如果您尝试添加已存在的存储库,add-apt-repository 命令将显示消息“存储库已存在”,如以下屏幕截图所示。

下一步是更新 apt 包索引并从存储库安装包,如前所示:
$ sudo apt update
$ sudo apt install --no-install-recommends r-base
添加个人包档案 (PPA)
PPA 是软件存储库,用于通过 Launchpad 发布用户贡献的软件包。本示例展示了如何添加 Shutter 截图工具的官方 PPA。
$ sudo add-apt-repository ppa:shutter/ppa
$ sudo apt-get update
$ sudo apt install shutter
删除 PPA 存储库
要使用 apt-add-repository 实用程序删除存储库,请使用其 -r
或 --remove
标志,如前所述:
$ sudo add-apt-repository -r "deb https://cloud.r-project.org/bin/linux/ubuntu $(lsb_release -cs)-cran40/"
使用 GUI 实用程序添加包存储库
最后但并非最不重要的一点是,您还可以使用 GUI 应用程序将存储库添加到您的系统。在 Ubuntu 上,通过活动 搜索栏打开软件和更新。
然后切换到 Other Software 选项卡,如以下屏幕截图中突出显示的那样。接下来,单击添加 并输入存储库配置并按照提示进行操作。

在 Linux Mint 上,打开系统菜单并搜索 Software Sources,然后将其打开。当要求进行身份验证时,输入您的密码以使用根权限调用应用程序。
接下来,单击其他存储库 选项卡,然后单击添加 按钮。

在弹出窗口中,添加 repo 并单击OK。

成功添加 repo 后,窗口底部将显示一条消息。点击确定继续。

然后等待本地包索引更新。一旦确定,您就可以继续从刚刚添加的存储库安装软件包。

现在就是这样!在本指南中,我们展示了在 Debian 和 Ubuntu Linux 及其衍生产品(如 Linux Mint)中添加包存储库的不同方法。如有任何意见或问题,请通过下面的反馈表联系我们。