“yum”和“dnf”包管理器如何更新执行软件?

“yum”和“dnf”包管理器如何更新执行软件?

在Windows操作系统中,更新之前需要关闭软件。就像我们需要重新启动 Google Chrome 才能更新它一样。 Linux 系统(特别是 Fedorayum等Linux)中的包管理器如何dnf在软件打开时更新它。虽然更新的版本只有在重新启动软件后才会生效,但我想知道包管理器如何在软件执行时更新?更新期间必须删除并替换某些文件。文件执行时这是如何完成的?

答案1

Windows 和 Linux(以及其他类 UNIX 系统)中的文件锁定工作方式有些不同。 Windows 通常会阻止修改当前映射到进程的可执行二进制文件。这就是为什么您无法在程序运行时更新软件,因为锁定会阻止修改/替换这些二进制文件。

在 Linux 上,通常不使用锁定,或者是合作锁定(不强制执行)。 Linux 上存在强制锁定,但它不可靠。如果映射到正在运行的进程的二进制可执行文件被修改或删除(在软件更新期间),文件系统将不会回收映射的磁盘空间,直到释放最后一个句柄。这样,已经运行的进程仍然可以访问映射到旧文件的页面。

相关内容