--- title: "Debian 使用 extrepo 配置第三方软件源" tags: ['Debian', 'extrepo'] published: 2025-10-21 05:45:49 updated: 2025-10-20 20:45:00 excerpt: "本文将指导如何在 Debian 下使用 extrepo 配置第三方软件源。" --- > 本文件是烧饼博客文章的 Markdown 原文,正式版本见 https://u.sb/debian-extrepo/ > 全站文章与页面索引见 https://u.sb/llms.txt,建议先读索引再继续抓取。 本文将指导如何在 Debian 下使用 extrepo 配置第三方软件源。 ## 什么是 extrepo? [extrepo](https://packages.debian.org/stable/extrepo) 用于管理 Debian 中的外部软件源。 在没有 extrepo 之前,想要使用未被 Debian 官方打包的软件,用户通常需要手动编写 APT 配置文件、以 root 身份运行未经签名的脚本,或安装一个包含所有系统配置的未签名 `.deb` 包。 遗憾的是,这些方法都不是很安全。 打个比方,我们要添加 Docker 的软件源,有三种方式。 第一种是传统的 `One-Line Style`: ```bash 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` 格式: ```bash 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 ``` 第三种方法则更为简单粗暴,直接运行脚本: ```bash curl -fsSL https://get.docker.com -o get-docker.sh sh get-docker.sh ``` 在以上这些方法中(包括第三种脚本方式),我们都需要手动下载并导入 GPG 密钥,创建必要的 APT 配置文件,更新软件列表,然后再安装软件。而我们推荐使用 extrepo 的话,只需要简单的三个命令即可完成整个过程。 ## 安装并使用 extrepo Debian Stable 下直接用如下命令安装 extrepo 即可: ```bash sudo apt update sudo apt install extrepo -y ``` 接着我们就可以启用比如 Docker CE 的仓库源: ```bash sudo extrepo enable docker-ce ``` 然后更新系统并安装 Docker: ```bash 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` 文件: ```bash # 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](https://salsa.debian.org/extrepo-team) 维护,成员主要为志愿者(包括本文作者),数据本身也有个仓库叫做 [extrepo-data](https://salsa.debian.org/extrepo-team/extrepo-data)。 我个人维护了一些仓库,包括 [Redis](https://salsa.debian.org/extrepo-team/extrepo-data/-/commits/master/repos/debian/redis.yaml?ref_type=heads),[MariaDB](https://salsa.debian.org/extrepo-team/extrepo-data/-/commits/master/repos/debian/mariadb.yaml?ref_type=heads),[N.WTF](https://salsa.debian.org/extrepo-team/extrepo-data/-/commits/master/repos/debian/n.wtf.yaml?ref_type=heads) 等,你可以从这里看到我的 [commits](https://salsa.debian.org/showfom/extrepo-data/-/commits/master?author=Xiufeng+Guo)。 任何人都可以对这个 Git 仓库做出贡献,而且 YAML 语法也十分容易上手,你可以参考默认的[模板文件](https://salsa.debian.org/extrepo-team/extrepo-data/-/blob/master/template.yaml?ref_type=heads)。 需要查看完整的第三方软件源列表的话,你可以在[这里](https://salsa.debian.org/extrepo-team/extrepo-data/-/tree/master/repos/debian?ref_type=heads)浏览所有的第三方仓库的 `.yaml` 文件。 了解了 extrepo 的机制和优势后,我们再来总结一下。 ## 结论 总之,使用 extrepo 是一种既安全又方便的添加第三方软件源的方法。 它的主要优点在于: 1. 可以让你快速启用经过测试和验证的软件源,而无需手动搜索和复制第三方软件源的配置信息。 2. 当第三方仓库的 GPG 密钥过期或 URI 发生变化(这种情况相当常见)时,也不再需要手动更新。 比如,使用 extrepo 时,只需运行 `extrepo enable docker-ce` 和 `extrepo update docker-ce`,它就会自动刷新 Docker CE 仓库的 GPG 密钥和 URI。 不过,extrepo 也有一定的缺点: 1. 目前只兼容 Debian 系统,Ubuntu 因为没有人维护 extrepo-data 所以基本没有可以用的第三方软件源。 2. 默认的 [extrepo-data](https://extrepo-team.pages.debian.net/extrepo-data/) 托管在 Debian 官方的 GitLab Pages,这对一些网络不通畅的服务器来说获取仓库信息就有点困难,而自建 extrepo-data 的过程相对繁琐,并不算方便。 ![That will save a lot of time](https://s.bh.sb/2025/10/20/that-will-save-lots-of-time-alicia-rodriguez_BhSQa.gif) [English Version](https://be.st/MIQr)