我正在更新一个稍微过时的服务器,yum update
遇到了内存问题。看来 yum 需要足够的可用 RAM 来下载每个软件包。
更新单个软件包不是问题,因为大多数单个软件包本身就适合内存。但是,无法通过一次操作更新所有软件包,因为 yum 似乎会先将所有软件包同时下载到 RAM 中。这意味着前几十个软件包会下载,但在某些时候它们会停止下载,并且每个后续软件包都会出现内存错误,即使单个软件包非常小。即使在停止所有服务后,总下载大小也大于可用 RAM 量。
我的解决方案是手动检查并挑选出最大的软件包并首先更新它们。这样我就可以把剩余的软件包总数控制在小于可用 RAM 的数量。但一定有更好的方法。
为什么 yum 不能单独下载每个文件并将它们保存到磁盘?在更新大量软件包时,要求所有下载都必须适合 RAM同时有点愚蠢。它可以先将它们下载到磁盘,然后它就有足够的 RAM 来安装各个软件包。如果操作正确,更新所有软件包应该不会比更新最大的单个软件包占用更多的内存。换句话说,如果三个无依赖包需要 A、B 和 C 量的 RAM 来更新,那么 yum 的内存使用量应该是 max(A,B,C) 并且不是A+B+C。
有什么办法可以做到这一点吗,或者这只是 yum 的一个缺点?
其他人告诉我它yum
不会下载到 RAM。那么,我不太清楚为什么它只下载软件包直到 RAM 满了然后停止。yum 的下载位置不在 RAM 磁盘上,而且有足够的可用磁盘空间。问题仍然存在。