我想知道 linux 的更新管理器是如何工作的。例如,我的 linux 发行版如何检查是否有任何可用的更新可供下载以及哪些服务器可以下载这些更新?如果我处理的不是主发行版之外的第 3 方软件,这些程序如何与我的更新管理器交互以通知我这些程序有可用更新?最后,关于这个主题的好文献有哪些?
根据您的发行版,它会有所不同。
通常,每个发行版都会保留一个包含所有可供安装的软件包的庞大列表。这称为软件存储库或简称为“repo”。一种包管理器(apt, RPM, pacman, etc...) 将定期从 repo 中提取更新包的列表。发行版开发人员拥有 repo 中的包的所有权,他们将按照发行版期望的格式将它们打包(repo 通常具有从上游检索的原始源代码制作的包的编译版本),观察提交的错误到有关软件包的发行版,在官方“vanilla”源代码上应用补丁(也许是为了使它们更好地集成到系统中,配置它们或修复上游尚未解决的问题),他们将观看用于更新的上游包,它们可能适用于软件存储库中的版本。
例如:
一些发行版实际上并不应用常规版本更新。例如,Ubuntu 将坚持使用发行版发布时已发布的软件版本。他们通常只修复安全问题或主要错误。这可确保软件不会发生意外更改(例如,下一个版本可能会有重大的 UI 更改,新的错误会破坏某些内容,大型组织可能会针对特定版本的源代码应用他们自己的自定义补丁)。软件包维护者将每 6 个月从 Debian 中提取软件包列表,应用 Ubuntu 修复/补丁,然后发布新版本的发行版。此规则有一些例外,最显着的是 Firefox,它将更新到 Mozilla 提供的最新稳定版本。
Debian 有稳定版、测试版和不稳定版。当发现准备就绪时,软件包将从不稳定状态转移到测试状态。然后每 1.5 年 Debian 发布一个“稳定”版本,该版本锁定当前测试版本的软件包。
同样,Ubuntu每 2 年左右发布一次特殊的LTS(或长期支持)版本,该版本的软件包维护时间更长(5 年,尽管过去桌面软件包为 3 年)。
其他发行版将尽可能多地跟踪源。例如 Arch 和 Gentoo。它们被称为“滚动发布”。尽管它们通常也有不稳定和稳定的类别,其中软件包在验证其功能时会被移动,尽管可能只有几个月甚至几周,而不是像其他发行版那样需要半年或更长的时间。您可以在这些发行版上获得更新版本的软件,但要以牺牲稳定性为代价。
Debian 测试可以被认为是一个滚动发布。Debian Stable 就像 Ubuntu 的 LTS 版本。
大多数真正的 3rd 方软件(如不是来自发行版存储库而是直接来自网站的软件)根本不与发行版的更新系统交互。如果您手动安装软件(而不是使用 apt-get、yum 或其他工具),那么您有责任保持更新。
一些 3rd 方将维护他们自己的存储库,您的更新系统可以将其放入。例如,Google 在 Ubuntu 上为 Chrome 维护了一个。还有许多 Launchpad PPA。在这种情况下,您将依赖第 3 方来维护更新。