烧饼博客

Debian 使用 extrepo 配置第三方软件源

Oct 20th, 2025

本文将指导如何在 Debian 下使用 extrepo 配置第三方软件源。

什么是 extrepo?

extrepo 用于管理 Debian 中的外部软件源。

在没有 extrepo 之前,想要使用未被 Debian 官方打包的软件,用户通常需要手动编写 APT 配置文件、以 root 身份运行未经签名的脚本,或安装一个包含所有系统配置的未签名 .deb 包。

遗憾的是,这些方法都不是很安全。

打个比方,我们要添加 Docker 的软件源,有三种方式。

第一种是传统的 One-Line Style

curl -sSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor > /usr/share/keyrings/docker-ce.gpg

echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-ce.gpg] https://download.docker.com/linux/debian $(lsb_release -sc) stable" | sudo bash -c 'cat > /etc/apt/sources.list.d/docker-ce.list'

sudo apt update
sudo install docker-ce docker-ce-cli containerd.io docker-compose-plugin -y

第二种是新的 DEB822 格式:

curl -sSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor > /usr/share/keyrings/docker-ce.gpg

sudo bash -c 'cat > /etc/apt/sources.list.d/docker-ce.sources << EOF
Components: stable
Architectures: $(dpkg --print-architecture)
Suites: $(lsb_release -cs)
Types: deb
Uris: https://download.docker.com/linux/debian
Signed-By: /usr/share/keyrings/docker-ce.gpg
EOF'

sudo apt update
sudo apt install docker-ce docker-ce-cli containerd.io docker-compose-plugin -y

第三种方法则更为简单粗暴,直接运行脚本:

curl -fsSL https://get.docker.com -o get-docker.sh
sh get-docker.sh

在以上这些方法中(包括第三种脚本方式),我们都需要手动下载并导入 GPG 密钥,创建必要的 APT 配置文件,更新软件列表,然后再安装软件。而我们推荐使用 extrepo 的话,只需要简单的三个命令即可完成整个过程。

安装并使用 extrepo

Debian Stable 下直接用如下命令安装 extrepo 即可:

sudo apt update
sudo apt install extrepo -y

接着我们就可以启用比如 Docker CE 的仓库源:

sudo extrepo enable docker-ce

然后更新系统并安装 Docker:

sudo apt update
sudo apt install docker-ce docker-ce-cli containerd.io docker-compose-plugin -y

此时我们会发现在 /etc/apt/sources.list.d 目录中多了一个 extrepo_docker-ce.sources 文件:

# cat /etc/apt/sources.list.d/extrepo_docker-ce.sources 
Suites: trixie
Types: deb
Uris: https://download.docker.com/linux/debian
Components: stable
Architectures: amd64 arm64 armhf s390x ppc64el
Signed-By: /var/lib/extrepo/keys/docker-ce.asc

换句话说,extrepo 帮我们完成了以下工作:

  1. 抓取经过验证的 GPG Key
  2. 使用 DEB822 格式写入 APT 配置

对比之前的几种方法,你可能还需要满大街找配置命令,找脚本命令,现在只要敲几行命令就可以搞定,何乐而不为呢?

External Repository Metadata

看到这里读者可能有疑问,extrepo 的数据又是谁维护的呢?它是由 Debian External Repositories Team 维护,成员主要为志愿者(包括本文作者),数据本身也有个仓库叫做 extrepo-data

我个人维护了一些仓库,包括 RedisMariaDBN.WTF 等,你可以从这里看到我的 commits

任何人都可以对这个 Git 仓库做出贡献,而且 YAML 语法也十分容易上手,你可以参考默认的模板文件

需要查看完整的第三方软件源列表的话,你可以在这里浏览所有的第三方仓库的 .yaml 文件。

了解了 extrepo 的机制和优势后,我们再来总结一下。

结论

总之,使用 extrepo 是一种既安全又方便的添加第三方软件源的方法。

它的主要优点在于:

  1. 可以让你快速启用经过测试和验证的软件源,而无需手动搜索和复制第三方软件源的配置信息。
  2. 当第三方仓库的 GPG 密钥过期或 URI 发生变化(这种情况相当常见)时,也不再需要手动更新。

比如,使用 extrepo 时,只需运行 extrepo enable docker-ceextrepo update docker-ce,它就会自动刷新 Docker CE 仓库的 GPG 密钥和 URI。

不过,extrepo 也有一定的缺点:

  1. 目前只兼容 Debian 系统,Ubuntu 因为没有人维护 extrepo-data 所以基本没有可以用的第三方软件源。
  2. 默认的 extrepo-data 托管在 Debian 官方的 GitLab Pages,这对一些网络不通畅的服务器来说获取仓库信息就有点困难,而自建 extrepo-data 的过程相对繁琐,并不算方便。

That will save a lot of time

English Version

Debian 使用 extrepo 配置第三方软件源
无责任编辑
Showfom
发布时间
Oct 20th, 2025
版权协议
人過留名,雁過留聲,翺翔的飛鳥總會尋到屬於自己的領地。
記得,要讓簡樸而純粹的心靜靜地感受,你要相信,美好的世界總會自己尋路向你走來。