我知道还有其他应用程序,但是考虑到yum/apt-get/aptitude/pacman是Linux发行版的核心软件包经理。

今天我在Fedora 13盒子上看到了:

(7/7): yum-3.2.28-4.fc13_3.2.28-5.fc13.noarch.drpm       |  42 kB     00:00     

我开始想知道这样的软件包如何自我更新?需要什么设计来确保程序可以自行更新?

也许这个问题太笼统了,但我觉得这比程序员更合适。如果这个问题有一个更合适的地方,请随时让我知道,我可以关闭或主持人可以移动。

谢谢。

有帮助吗?

解决方案

我不知道这些特定系统如何工作,但是...

  • 现代的Unix系统通常会忍受无打ic的执行可执行文件的覆盖,因此从理论上讲,您可以做到。
  • 您可以在Chroot监狱中进行操作,然后移动或类似的事情以减少系统脆弱的时间。添加一个期刊文件系统,这仍然更安全。

在我看来,软件包经理需要将软件包访问数据库保存在内存中,以确保在那里的竞赛条件。同样,Chroot监狱和复制选项可作为较低的风险选择。

其他提示

我开始想知道这样的软件包如何自我更新?需要什么设计来确保程序可以自行更新?

就像很多事情一样,您不需要专门设计这个问题……但是您确实需要意识到某些“陷阱”。

例如,UNIX通过参考计数Inodes提供帮助,因此“您”可以删除您仍在使用的文件,而且很好。但是,这意味着您必须做一些事情,例如,如果您有插件,则需要加载它们 您运行启动事务...即使插件仅在交易结束时运行(因为您可能在末尾具有不同的版本)。

您还需要做一些事情来确保您更新的任何功能都可以,例如:在删除旧文件之前将新文件放下。并且不要截断旧文件,只需Unin链接即可。但是这些也帮助您:)。

使用与您交流的外部问题可能很棘手(因为您无法在更新后执行旧版本的新副本)。但这并不是经常这样做的,当它是用于下载之类的事情时,它很容易在任何更新之前进行。

在CMD行客户端(例如YUM/APT)中,还有一些问题,例如,如果您的程序将运行2个以上的“更新”,那么如果第一个更新是对软件包的第一个更新,则可能会遇到问题经理。降级使它更加有趣:)。守护程序类似的过程基本上也不应“加载”软件包管理器,但是与其他陷阱一样……出于其他原因,您倾向于遵循此问题。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top