Unlike its derivatives (e.g. CentOS, Scientific Linux) Red Hat Enterprise Linux requires an active (i.e. paid) subscription to get access to OS updates, however Red Hat does provide evaluation copies for RHEL so it is technically possible to upgrade an existing OS installation. Note that this is only presented as a proof of concept, running evaluation software is not recommended for production use!
I decided to upgrade my RHEL6.3 test VM using an evaluation copy of RHEL 6.4 (DVD ISO image downloaded from redhat.com). The following 3 methods are generally available for all RHEL-like OS flavors.
1. DVD / ISO upgrade
This method uses the DVD ISO image to boot and perform the OS upgrade. All packages are available on the DVD/ISO. As you can see in the screenshots below, the machine boots the DVD (this can be either physical or virtually mounted), the Anaconda installer detects the current OS and an upgrade option is made available. Pretty easy.
2. FTP/HTTP upgrade
Using this method, the machine boots the DVD (or the boot ISO which Red Hat provides), but the DVD content is available on an external URL (FTP / HTTP) so the OS upgrade is performed over the network. For my testing I used a CentOS6.4 VM as the external machine running FTP.
2a. Configure the external FTP server
To configure the remote machine, copy the DVD contents to the FTP path and make sure the FTP service (vsftpd) is started.
mkdir -p /var/ftp/RHEL6.4ISO
cp -a /media/RHEL_6.4\ x86_64\ Disc\ 1/* /var/ftp/RHEL6.4ISO
If SELinux is enabled make sure you restore the security contexts:
restorecon -R -F /var/ftp/RHEL6.4ISO
service vsftpd restart
2b. Boot the RHEL6.3 machine and specify the install URL
At the boot menu, hit the TAB key on the first line, add upgradeany askmethod then click Enter. The installer will start and ask for the URL. Enter the full FTP path for the folder that holds the DVD contents.
3. YUM upgrade
This method is the most elegant as the RHEL6.3 machine doesn’t have to be restarted. Instead we configure a local / external yum repository and use that as the RHEL 6.4 package repository. I used an external FTP-based yum repository which I configured on my CentOS 6 machine.
3a. Configure the external yum repository
mkdir -p /var/ftp/rhel6.4/repodata
cp /media/RHEL_6.4\ x86_64\ Disc\ 1/Packages/*.rpm /var/ftp/rhel6.4
cp /media/RHEL_6.4\ x86_64\ Disc\ 1/RPM-GPG-KEY-redhat-release /var/ftp/rhel6.4
cp /media/RHEL_6.4\ x86_64\ Disc\ 1/repodata/*comps*.xml /var/ftp/rhel6.4/repodata/comps.xml
createrepo -g repodata/comps.xml .
restorecon -v -F -R /var/ftp/rhel6.4
service vsftpd restart
3b. Create the repository configuration on RHEL6.3 and run the upgrade
The RHEL6.4 repository needs to be added to the RHEL6.3 machine:
name=RHEL 6.4 FTP repository
The only thing left to do now is running the upgrade command: