sources.list文件和sources.list.d目录

1 sources.list文件

Debian 是一款广泛使用的 Linux 发行版,它使用 apt 软件包管理工具来处理软件包的安装、升级和删除。apt 管理软件包的工作依赖于一个或多个软件仓库(repository),这些仓库定义在 /etc/apt/sources.list 文件以及 /etc/apt/sources.list.d/ 目录下的文件中。

/etc/apt/sources.list 文件包含了 Debian 软件包管理器 apt 所需的软件源列表。软件源是指存储有软件包及其数据的服务器或本地目录,它们允许用户安装和更新软件包。这些源可以是官方的,也可能是第三方的。

源的格式一般是这样的:

1
类型 URL 发行版 软件分区
  • 类型:软件源的类型。通常是 deb 用于二进制包,或者是 deb-src 用于源代码包。
  • URL:软件源的网址或路径。
  • 发行版:指定发行版的代号(如 stretch,buster,bullseye)或类别(如 stable,testing,unstable)。
  • 软件分区:软件库的分区,如 main、contrib 和 non-free。

例如:

1
deb http://mirrors.tencentyun.com/ubuntu jammy main restricted
  • jammy 是 Ubuntu 版本的代号。在这个例子中,jammy 代表 Ubuntu 22.04 LTS (代号为 Jammy Jellyfish)。它指定了要从哪个 Ubuntu 版本的仓库中获取软件包。
  • main:这是 Ubuntu 官方支持的软件包集合,包含开源且免费分发的软件。
  • restricted:这是 Ubuntu 官方支持的,但由于许可或版权原因,只有少量闭源软件包的集合。例如,一些硬件驱动程序可能包含在 restricted 组件中。

2 sources.list.d目录

  • 目录结构/etc/apt/sources.list.d 是一个目录,可以包含多个 .list 文件,每个文件都是一个单独的源列表。

  • 分离管理:每个软件源可以被单独放在一个文件中,这样可以更好地管理和组织复杂的源配置。例如,可以为第三方软件源或特定的软件源创建单独的 .list 文件。它适合于复杂的系统配置,尤其是在需要使用多个独立管理的软件源时。这样,如果需要禁用或移除某个源,只需修改或删除对应的文件即可,而不会影响其他源。

例如:

1
2
3
4
5
6
7
ubuntu@VM-24-12-ubuntu:/etc/apt/sources.list.d$ ll
total 24
drwxr-xr-x 2 root root 4096 Aug 9 10:29 ./
drwxr-xr-x 8 root root 4096 Aug 8 16:21 ../
-rw-r--r-- 1 root root 146 Jun 13 18:06 docker.list
-rw-r--r-- 1 root root 70 Aug 9 10:29 focal.list
-rw-r--r-- 1 root root 69 Aug 8 16:21 timescaledb.list
  • 优先级:在使用 APT 的时候,系统会同时读取 /etc/apt/sources.list/etc/apt/sources.list.d/ 目录下的所有 .list 文件。

  • 在配置了新的源后,需要执行:

1
apt-get update

以下是一个示例,为docker.list的内容:

1
deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://mirrors.cloud.tencent.com/docker-ce/linux/ubuntu   jammy stable

其中[]是可选的参数:

arch=amd64:指定了软件包的架构为 amd64,这表示适用于 64 位的 x86 架构(Intel 或 AMD 处理器)。

signed-by=/usr/share/keyrings/docker-archive-keyring.gpg:指定了用于验证该软件包源的 GPG 密钥的位置。/usr/share/keyrings/docker-archive-keyring.gpg 是一个密钥文件,用于确保从这个源下载的软件包是经过签名和信任的。

3 其他

  • 从默认源换成镜像源:[[Docker实践学习笔记#^7c1a05]]
  • sources.list.d下添加新的源:[[Docker实践学习笔记#^18d0f4]]