我使用的是 512MB RAM 的 VPS。尝试yum -y update
后,我得到了以下结果:
[root@cs09-prod ~]# yum -y update
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
* base: mirror.sesp.northwestern.edu
* epel: mirror.steadfast.net
* extras: linux.cc.lehigh.edu
* updates: mirror.team-cymru.org
Resolving Dependencies
--> Running transaction check
---> Package epel-release.noarch 0:7-9 will be updated
---> Package epel-release.noarch 0:7-11 will be an update
--> Finished Dependency Resolution
Dependencies Resolved
================================================================================
Package Arch Version Repository Size
================================================================================
Updating:
epel-release noarch 7-11 epel 15 k
Transaction Summary
================================================================================
Upgrade 1 Package
Total download size: 15 k
Downloading packages:
Failed to download prestodelta for repository epel: [Errno 5] [Errno 12] Cannot allocate memory
Error downloading packages:
epel-release-7-11.noarch: [Errno 5] [Errno 12] Cannot allocate memory
[root@cs09-prod ~]#
除了购买具有更多内存的 VPS 之外,还有其他方法可以解决这个问题吗?
答案1
您的 VPS 没有足够的可用内存。您可以通过运行以下命令查看内存量:
free -gh
显示g
可用内存量(以 GB 为单位),并h
以人性化格式显示。mh
如果您想以 MB 为单位查看,可以使用。
为了使其yum
正常工作,您需要停止服务以释放内存。您可以使用该ps
命令查看哪些进程使用了多少内存。
答案2
问题
Yum 无法分配内存
回答:
创建一个交换文件作为内存使用。
我知道这是一个老话题,但接受的答案并没有回答真正的问题:该怎么办?当你只有 0.5G 内存时,你实际上无法结束足够的进程来处理yum update
廉价配置的系统。
您需要分配磁盘空间作为交换文件的内存。在 Centos 中,可以按照教程进行操作这里。
这将创建 4G 内存,这可能太过分。只需count=4096
将 4096 更改为您想要使用的 MB 数即可。另请注意,性能不会很好,但它可以帮助您解决当某个进程预计使用的 RAM 超过可用 RAM 时(直到达到您从磁盘空间中提供的数量)的麻烦。
sudo dd if=/dev/zero of=/swapfile count=4096 bs=1MiB
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
sudo sh -c 'echo "/swapfile none swap sw 0 0" >> /etc/fstab'