I found this great migration guide here on how to go from RHEL4 to CentOS 5.3. The article is actually older so just going to CentOS 5, but the concepts were nearly the same, just changes in the versions of the packages.
1. Copy the Base Media DVD to the RH4 machine first. Then expand it and have it ready so that the machine can get the necessary RPMs it needs. There will be a period where you can’t ssh into the machine as it will be in a very funky state (as to be expected). Its also a good idea to have the RH4 machine NFS mount a working CentOS 5.3 machine so that you can copy over binaries if needed.
2. Follow the directions listed here. When you get to the list of RPMs to put in the Updates section add a few more RPMs:
sqlite-3.3.6-2 glib2-2.12.3-2.fc6.x86_64 nspr-4.7.3-2.el5 nss-188.8.131.52-4.el5 python-iniparse-0.2.3-4.el5.noarch.rpm yum-metadata-parser-1.1.2-2.el5
After that, you may have to add the –force flag to install all the Updates:
rpm -Uvh *.rpm --nodeps --force
3. The updates part is pretty good. I had to remove the following RPMs:
rpm -e VFlib2 autofs kudzu hal lksctp-tools initscripts dmraid
4. Basically everything else works. I also recommend that you install ‘strace’ as you can then see what is wrong. For example, I had to find all those extra packages by running strace to see which library was missing. I also found out that I needed to add the glibc2 package thanks to this handy post here.
After that, reboot the system and all will come back up and you’ll be running!