myfreax
apt

了解 Ubuntu 和 Debian 的 sources.list 文件

sources.list 文件是重要的配置文件,用于指定在基于 Debian 的 Linux 发行版包管理器的软件源位置,因此在遇到软件依赖问题时你需要理解 sources.list 文件的作用

6 min read
By myfreax
了解 Ubuntu 和 Debian 的 sources.list 文件
了解 Ubuntu 和 Debian 的sources.list 文件

在 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 的代号)目录,你将会在此处看到以组件作为名称的目录,最多包含五种类型的组件

如何在 Ubuntu 添加其它软件仓库 | myfreax
当您使用 apt 命令安装软件时,抛出错误 E: Unable to locate package,你需要启用 Universe 或 Multiverse 仓库才能安装
ubuntu 软件源

实际上,你可以在同一行中组合多个多个组件的名称。而不是像这样写两行:

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 目录创建软件源配置文件。如果您有任何疑问,请随时发表评论。