I ran into a nasty issue with a VPS that has only 256MB RAM and updating using yum update failed due to memory issues with some packages. I ended up in a state where some packages were updated and some where not. This means I had duplicate packages of old and new ones and broken dependencies. Coming from Debian (apt) I was not so comfortable with yum, but this is how I solved it and learned new commands:
1. Add some memory (even being swap)
Lets add some swap memory to the VPS. 1GB should be fine:
swapon –show
fallocate -l 1G /swapfile
dd if=/dev/zero of=/swapfile bs=1024 count=1048576
chmod 600 /swapfile
mkswap /swapfile
swapon /swapfile
echo “/swapfile swap swap defaults 0 0” >> /etc/fstab
reboot # might be needed – I had to do it
2. Find the problematic packages
yum already gave me hints about the packages that have issues. In my case iptables and iptables-service. I checked which versions I have installed using
yum list installed | grep iptables
and found that I have multiple versions installed.
3. Remove the duplicates
yum update already mentioned some issues, but I figured out that the root cause was duplicates. I learned that there is a command to remove duplicates in CentOS:
package-cleanup –cleandupes
I wonder how often this happens that you need a tool for this … anyway.
If you want to remove only a specific version of a package you can do this using
yum remove iptables-services-1.4.21-33.el7.x86_64
You take the package name, append “-” and the version, append “.” and the architecture.
4. Re-run update
Finally I was able to run yum update -y and yum was able to install the new versions of all packages and all went fine.