带您了解 Ubuntu 的存储库系统

清楚的了解 Ubuntu 中存储库系统的底层机制,以更好地管理软件包,以并避免常见的更新错误。

当你开始使用 Ubuntu 或基于 Ubuntu 的发行版时,很快你会发现自己使用 apt 命令来安装这样的软件:

sudo apt install package_name

让我们先从要点开始。了解包管理器和存储库的基本概念。

第 1 章:什么是包管理器?

简而言之,包管理器是一种允许用户在操作系统上安装、删除、升级、配置和管理软件包的工具。

Ubuntu 通过存储库提供软件。存储库包含不同类型的软件包。它们还具有元数据文件,其中包含有关包的信息,例如包的名称,版本号,包的描述和存储库名称等。

包管理器与元数据交互,并在系统上创建本地元数据缓存。当您要求它安装软件时,软件包管理器会引用此缓存以获取信息,然后使用 Internet 连接到相应的存储库并先下载软件包,然后再将其安装到您的系统上。

带您了解 Ubuntu 的存储库系统插图

第 2 章:Ubuntu 的存储库

您可能已经猜到,没有一个存储库包含所有软件包。为什么不呢?因为它被分类为将软件包放在不同的存储库中,以便可以相应地管理、启用或禁用它们。

Linux 生态下,几乎每个发行版都有自己的软件库 (software repositories),Ubuntu 当然也不例外。Ubuntu 提供了四个不同的软件库,分别是 main、restricted、universe 和 multiverse:

带您了解 Ubuntu 的存储库系统插图1

那么这四个不同的软件库之间有什么区别?

1、Main 库

Main 库是 Ubuntu 最重要的软件库,它是由 Ubuntu 官方支持和维护的,这里的软件都是免费开源的。Ubuntu 的默认安装中的所有开源软件都在个 Main 库里面,另外还有一些比较重要的服务器软件也包含在 Main 库中。在 Ubuntu 每个发行版的生命周期中,Main 库中的软件会有安全更新,漏洞修复。因为 Main 库中的软件都是开源的,所以 Ubuntu 官方的开发人员就可以随时修复这些问题而无需找到它的开发者。

2、Restricted 库

Restricted 库中包含 Ubuntu 官方支持的闭源软件 (Closed-Source),主要是一些硬件驱动程序。比如运行一些游戏程序,需要安装 NVIDIA 或 AMD 的图形驱动程序来获得最佳的性能。这些驱动程序可以通过 Ubuntu 中的其他驱动管理工具来启用。

Ubuntu 官方也承诺在发行版的支持期内为这些闭源的驱动程序和固件提供技术支持。以便这些驱动程序稳定工作,解决严重的问题,并封堵安全漏洞。可是,当出现问题时 Ubuntu 自己无法做到这一点,他们必须等待硬件制造商来解决。因为这个库的代码不是开源的,这就是为什么这里只包含关键的硬件驱动程序的原因。

3、Universe 库

Universe 库中存放的是由社区维护的开源软件。我们在 Ubuntu 的软件中心里看到的软件多数都来自 Universe 库:

带您了解 Ubuntu 的存储库系统插图2

这些软件包要么是自动从最新版本的 Debian 库中导入的,要么是由 Ubuntu 社区上传和维护的。
Ubuntu 不为 Universe 库中的软件提供官方技术支持和更新。如果您在服务器上操作,需要考虑安装的服务器软件是 Main 库里的、还是 Universe 库里的。如果是 Universe 库的,您硬盘经常关注其是否有安全性的更新。如果发现了漏洞,您需要自己更新该服务器软件。

4、Multiverse 库

Multiverse 库里面的软件不受 Ubuntu 官方支持、他们一般都是闭源的、需要专利授权的、或者受法律限制的软件。例如侵犯专利的音频和视频播放软件。和 Universe 库一样,Multiverse 也是一个由社区上传和维护的库,因此这里不会保证有安全更新。

第3章:了解源列表

sources.list 是 Ubuntu 存储库机制不可分割的一部分。一些与更新相关的错误,根本原因是 sources.list 文件中的不正确条目。这就是为什么理解它很重要。

Sources.list 基本上是一个包含存储库详细信息的文本文件。每个未注释的行表示一个单独的存储库。

打开终端,输入下面命令来查看和编辑 sources.list 文件:

sudo vim /etc/apt/sources.list
带您了解 Ubuntu 的存储库系统插图3
这些条目遵循特定的格式,不应有重复的条目。

标签

发表评论