我有兴趣了解软件更新的工作原理(技术上)。检查、下载和安装新更新的组件有哪些,以及它们如何工作。
答案1
这就是一本 600 页的完整书籍所包含的内容!8-) 或多或少,有人得到一个软件项目,对其进行编译并创建一个包并将其存储在存储库中。
软件包会收到一个版本,以便系统可以识别旧版本和新版本。
您计算机上的软件包系统可以访问存储库并查看计算机上安装的软件包是否有新版本。 如果有,它会为您提供升级的可能性。
还有很多事情要做。例如,在升级服务器时,您需要停止服务器,进行升级,然后重新启动服务器。这些步骤可以通过本页所述的前置和后置脚本来完成:
http://windowspackager.org/documentation/implementation-details/scripts-and-processes
另一个要点是,不同的软件包可能彼此不兼容。例如,如果您安装了 Postfix,则无法同时安装 sendmail,因为两者都提供相同的功能(尽管可以通过替代链接同时提供这两种软件)。同样,安装 Apache 和 httplight 通常会发生冲突,因为默认情况下两者都使用端口 80。同样,您可以通过调整每个服务器的设置来解决冲突,但默认情况下操作系统可能会告诉您不能这样做。
您可能想要阅读 Debian 政策手册
http://www.debian.org/doc/debian-policy/
因为它会给你提供这方面的大量信息。
答案2
Ubuntu 使用易于负责进行包管理,并提供接口软件包用于实际安装、更新和删除软件包。
来自 Debian(作为 Debian 衍生品的 ubuntu)http://www.debian.org/doc/manuals/debian-reference/ch02.en.html#_the_event_flow_of_the_package_management流程是:
- 更新
- 从远程档案中获取档案元数据
- 重建并更新本地元数据以供 APT 使用
- 升级
- 选择候选版本,该版本通常是所有已安装软件包的最新可用版本
- 进行包依赖解析
- 如果候选版本与已安装版本不同,则从远程存档中获取选定的二进制包
- 解压获取的二进制包
- 运行预安装脚本
- 安装二进制文件
- 运行 postinst 脚本
进一步阅读
有关 dpkg 和 apt 的信息:
- http://www.debian.org/doc/manuals/debian-faq/ch-pkgtools.en.html
- https://help.ubuntu.com/community/InstallingSoftware
- https://help.ubuntu.com/community/AptGet/Howto
有关前置脚本和后置脚本的信息: