Ubuntu Sources List2025年3月17日 | 阅读 12 分钟 我们使用 CentOS、Debian、Ubuntu 等操作系统。如果有人问,“我们使用什么操作系统?” 大多数人可能会回答,“我们使用 Linux”。但那不是 Linux。Linux 只是内核的名称。实际上,它是 Linux 的一个不同发行版。 现在,我们可能会问,“什么是 Linux 发行版?” Linux 内核本身无法做很多花哨的事情。它是一种处理硬件、为函数分配内存、帮助我们执行程序以及为我们处理许多其他非常底层的基本任务的软件。例如,如果我们想使用 nano 文本编辑器编辑任何文件。Linux 内核没有它。我们需要在 Linux 内核之上单独安装它才能使用它。 - 没有有用的程序,Linux 内核将无法帮助普通用户。
- 再次在 Linux 内核之上安装程序并不是普通用户愿意做的事情。
- 因此,不同的个人和公司将 essential tools 打包在 Linux 内核之上,并将它们组合起来供我们使用。
- 因此,当我们安装它时,我们可以开始使用所需的程序。它被称为基于 Linux 的操作系统或 Linux 发行版。
- Fedora、CentOS、Debian、Ubuntu 等都是基于 Linux 的操作系统或 Linux 发行版。它们不仅仅是 Linux。
- Linux 上有各种我们甚至无法计数的软件。将所有这些都包含在一个操作系统包中将使操作系统的大小不必要地变得更难、更大,难以分发。
- 因此,操作系统需要一种机制来根据需要轻松安装软件包。
- 这样,它们就可以添加非常基本的服务,并减小安装过程。
- 对于用户来说,下载、分发和开发都更容易,而且方法更标准化。
之后,附加包被托管在 Linux 发行版的 FTP 服务器或 Web 服务器上,所有用户都可以从中获取。这些 FTP 服务器或 Web 服务器被称为软件包存储库。此外,我们需要一种方法来通过软件包存储库来处理(安装、删除和下载)软件包。因此,包管理器被添加到我们最喜欢的 Linux 发行版中。 Ubuntu 基于 Debian GNU/Linux 发行版。Ubuntu 应用 APT(Advanced Package Tool)包管理器来管理软件包。这个包管理器及其所有图形前端(aptitude、Muon、Ubuntu Software Center 等)都使用 sources.list 文件来了解要使用哪些存储库或软件包存储库。 在本文中,我们将讨论文件,即 sources.list,如何在 Ubuntu 中使用。 配置文件包管理器及其每个图形前端都从文件 /etc/apt/sources.list 以及目录 /etc/apt/sources.list.d 中的文件获取包存储库详细信息。 不同的包管理器直接编辑 Ubuntu 中的文件 /etc/apt/sources.list。我们不建议在此处添加自定义包存储库。如果我们确实需要添加任何额外的包存储库,最好只将它们添加到目录 /etc/apt/sources.list.d/ 中。 什么是 sources.list?文件,即 /etc/apt/sources.list 的内容,看起来有点像下面的图片  在这里,以 #(hash)符号开头的行是注释。它们用于此文件的文档。此外,注释还用于禁用软件包存储库。 以 deb 开头的 APT 行表示软件包存储库可以共享软件,其形式为许多预编译的二进制文件,采用 deb 文件格式。  此外,以 deb-src 开头的 APT 行表示此软件包存储库可以共享软件的源代码,我们需要将其编译在我们的系统上才能使用。默认情况下,每个 deb-src 软件包存储库在 Ubuntu 中都已禁用。我们更倾向于禁用它们,因为我们不使用它们。通过源代码获取软件包需要一些时间,具体取决于我们系统的规格。  之后,我们有了软件包存储库的 FTP、HTTPS 或 HTTP URL。这就是所有软件包数据库和软件包文件所在的位置。包管理器可以下载软件包元数据和其他详细信息,以了解存在哪些软件包以及在哪里安装它们。  然后,我们需要输入我们的 Ubuntu 操作系统的简短代号。它对于所有 Ubuntu 版本都不同。例如,在 Ubuntu 的 18.04 LTS 版本中它是 bionic。  我们可以使用以下命令查看它是什么,以了解我们发行版的版本 然后,我们用空格分隔不同的软件包存储库的各个部分。软件包存储库的软件包可以按逻辑分为几个组,正如我们在下面突出显示的部分中看到的。 Ubuntu 软件包存储库分为 main、universe、restricted 和 multiverse 部分。在此示例中,我们仅添加了 bionic 包存储库的 restricted 和 main 部分。  Sources.list.d目录 /etc/apt/sources.list.d 提供了一种将 sources.list 条目包含在隔离文件中的方法。允许两种不同的文件格式。文件名需要具有 .sources 和 .list 扩展名,具体取决于包含的格式。这些文件名只能包含句点(.)、连字符(-)、下划线(_)、数字(0-9)和字母(A-Z 和 a-z)。在其他情况下,APT 会打印一条消息,说明它已忽略某个文件,但该文件应与配置列表中的模式匹配,即 Dir::Ignore-Files-Silently。 单行样式格式在此格式中,文件具有 .list 扩展名。定义源的所有行都以一个类型开头,后跟该类型的参数和选项。单个条目不能跨越多行。空白行被忽略,行中的 # 字符会将其余部分视为注释。因此,可以通过注释掉整行来禁用一个条目。如果应提供选项,它们将用空格分隔,并且所有选项都包含在行中的方括号内,紧随其类型之后,并用空格分隔。 - 如果任何选项允许多个值,则它们用逗号分隔。
- 选项的名称与其值由等号(=)分隔。
- 此外,多值选项使用 += 和 -= 作为分隔符,它们不是用提供的值替换默认值,而是通过包含或删除提供的值来更改默认值。
这是传统样式,并且被所有 apt 版本支持。请记住,并非所有选项都得到所有版本的支持。此外,请记住,一些以前独立解析此样式的应用程序可能无法识别选项,因为它们在引入多架构支持之前是不常见的。 DEB822 样式格式在此格式中,文件具有 .sources 扩展名。此格式在语法上与 Debian 及其衍生版本使用的其他文件相同,例如 apt 将从中安装的元数据文件,或 Debian 源代码包中的 control/Debian 文件。 - 单个条目由一个空白行分隔;多余的空白行将被忽略,行开头的 # 字符将整行标记为注释。
- 因此,可以通过注释掉与节相关的所有行来禁用一个条目。但是,通过在节中添加 "Enabled: no" 字段来禁用该条目会更容易。
- 删除该字段并将其设置为 yes 以重新启用它。
- 选项具有与所有其他字段相似的系统。
- 字段的名称由冒号和空格分隔,后面可选地跟着其值。
注意:多个值由空格(例如换行符、制表符和空格)分隔,而不是由逗号分隔。多值字段(如 Architectures)也包含 Architectures-Remove 和 Architectures-Add,以更改默认值而不是替换它。- 这是 apt 本身自 1.1 版本起支持的新格式。
- 旧版本会忽略此类文件,并显示警报消息,如前所述。
- 旨在逐步将此格式设为默认格式,逐步淘汰先前定义的单行样式格式,因为它更容易供机器和人类 alike 修改、扩展和创建,尤其是在涉及多个选项和源时。
鼓励处理 sources 的开发人员支持此格式,并鼓励联系 APT 团队以共享和协调此工作。用户已经可以接受此格式,但可能会遇到一些应用程序尚不支持此格式的问题。 文件列表是单行样式(每行一个源),包含描述多个 deb822 样式的多行节(每节一个源),其中最推荐的源排在最前面。from sources 的信息由 apt-get update 命令继承。 deb 和 deb-src 选项所有源条目都可以有许多指定的选项来更改使用的源以及如何从此源继承数据。选项的名称、语法和格式在 deb822 样式和单行样式格式之间有所不同,如前所述,但它们有类似的可用选项。 为简洁起见,我们提到了 deb822 字段名,并在括号中给出了单行名称。请注意,除了设置多值选项外,还有一个选项可以基于默认值来更改它们。但是,我们在此处明确不提及这些名称。所有 APT 版本都会静默忽略不受支持的选项。  - Architecture (arch): 这是一个多值选项,用于指定必须下载哪个架构的详细信息。如果未配置 Architecture,则默认值为配置选项 APT::Architecture 指定的所有架构。
- Language (lang): 这是一个多值选项,用于指定必须下载哪个语言的详细信息,例如翻译的软件包描述。如果未配置 Language,则默认值为配置选项 Acquire::Languages 指定的所有语言。
- Target (target): 这是一个多值选项,用于指定 apt 将尝试从源继承的下载点。如果未指定(目标通过 Created-By 字段中的名称描述),则默认集由配置范围指定,即 Acquire::IndexTargets。目标还可以通过将标识符字段应用于布尔值而不是应用此多值选项来禁用或启用。
- By-Hash (by-hash): 此选项可以具有 force、yes 或 no 值,并管理 APT 是否应尝试通过从预期的文件哈希值配置的 URI 来继承索引,而不是使用稳定的索引文件名。它可以忽略哈希值不匹配,但需要支持的镜像。yes 或 no 值将启用或禁用此方面的使用,前提是源代表支持它,但 force 将激活该方面,无论源代表什么。默认为特定索引文件中指定的类似名称的选项值,即 Acquire::IndexTargets,它也默认为 Acquire::By-Hash 配置选项值,该选项值默认为 yes 值。
- PDiffs (pdiffs): 这是一个 no/yes 值,用于管理 APT 是否应尝试应用 PDiffs 来完全更新之前的索引,而不是下载新的索引。如果存储库不宣布 PDiffs 可用性,则将忽略此选项的值。默认为特定索引文件中指定的类似名称的选项值,即 Acquire::IndexTargets,它也默认为 Acquire::PDiffs 配置选项值,该选项值默认为 yes 值。
此外,还有许多选项,如果已配置,则会影响所有具有类似 Suite 和 URI 的源,因此它们需要配置在每个此类条目上,并且不能在不同元素之间进行更改。 - Allow-Downgrade-To-Insecure (allow-downgrade-to-insecure)、Allow-Weak (allow-weak) 和 Allow-Insecure (allow-insecure) 是布尔值,默认均为 no。它们绕过了 apt-secure 的某些部分,如果设置为 yes,则不应轻易使用。
- Trusted (trusted): 这是一个三态值。默认情况下,其值为 APT,确定一个源是否被视为受信任,或者在发出警报之前。例如, 使用此源下载软件包。trusted 选项可以用来覆盖该决定。yes 值表示 APT 始终将此源视为受信任,即使它未通过验证检查。
- Signed-By (signed-by): 它是指向任何密钥环文件的完整路径(需要 _apt 用户可读且可访问,因此请确保所有人对该文件都具有读取权限),或者是在密钥环(例如 trusted.gpg)或密钥环目录(例如 trusted.gpg.d/)中的一个或多个密钥的指纹。
在此密钥环中,如果设置了此选项,则仅使用具有这些指纹的密钥或仅使用具有这些指纹的密钥来进行此存储库的 apt-secure 身份验证。如果设置了旧的继承 Release 文件中的类似名称的选项值,则默认为该选项值。否则,所有密钥都将被视为此存储库的受信任密钥中的有效签名者。 - Check-Valid-Until (check-valid-until): 这是一个 no/yes 值,用于管理 APT 是否应尝试查找重放攻击。存储库的创建者可以宣布一个信息在存储库中必须被视为有效的时间,当该时间到期时。但是,如果没有提供新信息,则信息将被视为已过期,并会引发错误。
此外,它还可以帮助用户识别未更新的镜像。虽然,有些存储库,例如历史存档,已不再设计为更新,因此可以通过将此选项设置为 no 来禁用此检查。默认为 Acquire::Check-Valid-Until 配置选项值,该值本身默认为 yes 值。 - Valid-Until-Max (valid-until-max) 和 Valid-Until-Min (valid-until-min):它们可用于降低和提高数据被视为有效的时间(以秒为单位)。特别是 Max 在存储库未提供发布文件中的有效到期日期时,可以帮助设置超出值。同时,min 可以用于在不完全禁用检查的情况下,增加不那么常用但更频繁更新的存档的有效时间,而不是完全禁用检查。默认值为配置选项 Acquire::Max-ValidTime 和 Acquire::Min-ValidTime 的值,它们默认为 unset。
- Check-Date (check-date): 这是一个 no/yes 值,用于管理 APT 是否应考虑机器的时间是否正确,并因此执行相关的检查,例如验证 Release 文件是否来自未来。此外,禁用它也会禁用选项 Check-Valid-Until。
- Date-Max-Future (date-max-future): 它管理存储库可能来自未来的时间。默认值为 Acquire::Max-FutureTime 配置选项值,该值默认为 10 秒。
- InRelease-Path (inrelease-path): 它确定了 InRelease 文件的路径,对应于 InRelease 文件的正常位置。此选项默认未设置,APT 将尝试获取 InRelease,如果失败,则获取任何 Release 文件及其相关的 Release.gpg 文件。通过设置此选项而不是 InRelease 文件来尝试指定的路径,并且 Release 文件回退将被禁用。
URI 规范URI 的类型如下  - http: http 方案描述了一个用于任何存档的 HTTP 服务器,它是最常用的技术。
- https: http 方案描述了一个 HTTP 服务器,并且在可用选项和用法方面与 http 方案相同。这两者之间的主要区别在于服务器和 apt 之间的通信是加密的。
- file: 它允许将任意目录视为文件系统内的存档。这对于本地存档或本地镜像和 NFS 挂载很有用。
- cdrom: 此方案允许 APT 使用本地 USB、DVD 或 CD-ROM 进行介质交换。我们可以应用 apt-cdrom 程序在源列表中创建 cdrom 条目。
- copy: 它与 file 方案相同,只是软件包会被精确地复制到缓存目录中,而不是直接在它们的位置使用。这对于使用可移动介质将文件与 APT 复制的用户很有用。
- ftp: 此方案定义了一个用于任何存档的 FTP 服务器。随着 HTTP 和 HTTPS 的普及,FTP 的使用正在下降,许多存档要么从未提供,要么正在分离 FTP 访问。如果我们仍然需要此技术,其几个配置选项可在作用域内找到,即 Acquire::ftp 并在 apt.conf 中描述。
- ssh, rsh: 它调用 RSH/SSH 来连接到远程主机并使用文件。建议预先配置 RSA 密钥或 rhosts。标准命令用于通过远程主机执行文件传输。
这基本上是我们理解 Ubuntu 中 source.list 所需的一切。 添加 multiverse、universe 等存储库默认情况下,我们应该启用 universe 和 main 存储库。但是,如果我们希望从命令行启用额外的存储库,以下是一些命令。 - 我们可以使用以下命令激活 Universe 存储库
- 我们可以使用以下命令激活 Restricted 存储库
- 我们可以使用以下命令激活 Multiverse 存储库
添加上述存储库后,我们必须运行命令 sudo apt update,以便我们的系统使用包信息来创建本地缓存。 - 如果我们想删除一个存储库,我们可以添加 -r 选项,如下面的命令
- 我们可以访问 **Software & Updates** 部分以图形方式启用存储库。我们将在“Other Software”选项卡中看到一个启用 partner 存储库的选项。
- 我们可以取消选中该选项以禁用存储库。
|