在 Debian 以及基于 Debian 的发行版 Ubuntu 使用软件包管理器 APT 时,系统会根据 sources.list 文件列出的软件源搜索和下载软件包。
因此,你可以通过编辑 sources.list 文件定制系统的软件包安装和更新行为,以适应自己的需求。
在本教程中,我们将说明 sources.list 文件的作用以及如何启用与禁用 sources.list 文件的软件源记录,理解 sources.list 文件的软件源记录的含义。开始之前,我们希望你熟悉包管理器和软件源的概念。
sources.list 作用
sources.list 文件是一个重要的配置文件,用于指定在 Debian 以及基于 Debian 的 Linux 发行版的软件包管理器(如 apt 或 apt-get)中使用的软件源位置。该文件位于 Linux 系统的 /etc/apt/ 目录。
软件源包含一系列用于安装、更新和卸载软件包的服务器。在 sources.list 文件,每个软件源都由一个 URL 地址表示,该地址指向一个存储软件包和软件信息的服务器。
通过编辑 sources.list 文件,用户可以添加或删除软件源,从而改变系统所使用的软件包来源服务器。
这个文件的格式是简单的文本文件。每一行代表一个软件源,以及其对应的 URL 地址。通常,每个软件源都有一个适当的代码名称,以帮助用户识别和选择合适的软件源。
#deb cdrom:[Ubuntu 20.04.6 LTS _impish Fossa_ - Release amd64 / impish main restricted
# See http://help.ubuntu.com/community/UpgradeNotes for how to upgrade to
# newer versions of the distribution.
deb http://cn.archive.ubuntu.com/ubuntu/ impish main restricted
# deb-src http://cn.archive.ubuntu.com/ubuntu/ impish main restricted
## Major bug fix updates produced after the final release of the
## distribution.
deb http://cn.archive.ubuntu.com/ubuntu/ impish-updates main restricted
# deb-src http://cn.archive.ubuntu.com/ubuntu/ impish-updates main restricted
.....
这些行遵循特定的格式,通常是这样组成的:
archive-type repository-url distribution component
archive-type 是存档格式,repository-url 是 URL 地址, distribution 是当前 Linux 发行版的代号,component 通常是 Main、Universe、Multiverse、Restricted 和 Partner等。
让我们看一下实际的行:
deb http://cn.archive.ubuntu.com/ubuntu/ impish main restricted
archive-type
存档类型,通常是文件的格式。这里是 deb,这意味着你会从服务器下载预编译的 .deb 包。
另一种存档类型是 deb-src,它提供软件的源代码,但通常会被注释掉,因为普通用户不需要应用程序的源码。deb 文件允许你直接安装该软件包。
repository-url
软件源的 URL,这里是 http://cn.archive.ubuntu.com/ubuntu/。事实上,可以在浏览器访问此 URL 并查看各个文件夹的信息。
distribution
这里是 impish。在实际的服务器软件源中,它在 dists 目录下。dists 目录包含多个以发行版代号作为名称的目录。
每个发行版的软件源都有多种类别,例如 impish-security(安全类型的包)、impish-backports(向后移植的包)等。
如果你打开这个 URL 或者查看 dists/impish(Ubuntu 21.10 的代号)目录,你将会在此处看到以组件作为名称的目录,最多包含五种类型的组件。
实际上,你可以在同一行中组合多个多个组件的名称。而不是像这样写两行:
deb http://archive.ubuntu.com/ubuntu impish main
deb http://archive.ubuntu.com/ubuntu impish restricted
你可以将其中两个写在一起,如下所示:
deb http://archive.ubuntu.com/ubuntu impish main restricted
这意味着当你在 sources.list 文件到 deb http://cn.ubuntu.com/ubuntu impish main 这样的存软件源记录时,它会获取存储在 /ubuntu/impish 或者 /ubuntu//main/ 的软件包。
resources.list 文件与 sources.list.d 目录
如果你运行命令 ls /etc/apt
查看 /etc/apt 目录,你会注意到另一个名为 sources.list.d 的目录。
ls /etc/apt
apt.conf.d auth.conf.d preferences.d sources.list sources.list.bak sources.list.d sources.list.save trusted.gpg.d
主要的 sources.list 文件用于官方 Ubuntu 软件源,对于其它外部软件源和 PPA,你可以在此 sources.list.d 目录中添加一个以 .list
作为扩展名的文件。
ls /etc/apt/sources.list.d
google-chrome.list google-chrome.list.save vscode.list
这使得管理软件源变得更加容易,因为你可以做到不修改的默认软件源。也可以轻松禁用外部软件源。
如果你需要禁用指定软件源,可以在 .list
文件的软件源记录前面添加 # 注释掉当前行,或者直接删除其相应的 .list
文件。
如果你使用 Ubuntu 桌面,则可以使用图形软件和更新工具达到相同目的。在 Ubuntu 软件选项卡的记录来自 sources.list 文件,其它软件选项卡中的记录来自 sources.list.d 目录的文件。
结论
至此,你已了解 sources.list 文件的作用以及文件每行的含义,禁用或者启用软件源,在添加软件源时可以在 source.list.d 目录创建软件源配置文件。如果您有任何疑问,请随时发表评论。