Red Hat Upgrades

Now that RHEL 6 is out I’ve begun playing with upgrading our older RHEL servers, starting with anything that is RHEL 4 and then moving forward to RHEL5. The simplest one to start with was one of our network management servers. They are vital to our job but not customer facing and we can deal with some downtime on them.

My original plan was to install a base RHEL4 on the new server, which would give us a platform with the base system installed and the restore software hosted, then restore from backup over the top.

I took an old server we had that still had maintenance and pressed it into service. I wanted to take the opportunity to test our backups as well as the upgrade path from RHEL4 to RHEL6. So I installed RHEL4 on the new server and ran up2date to make sure it was the “latest” and greatest.

On the old server I ran up2date and then I queried the rpm database to see what packages were installed. The problem is that you cannot pipe rpm -qa output as input into an update script. Up2date wants “freetype-devel” as the package name, not the whole package name as listed in the output, “freetype-devel-2.1.9-17.el4_8.1” note the version number. Notice also that some package names have multiple dashes while others have only one dash.

[root@server] # rpm -qa
freetype-devel-2.1.9-17.el4_8.1
krb5-devel-1.3.4-62.el4_8.3
php-4.3.9-3.31

I could not easily use cut so I wrote the following quick hack:

#!/usr/bin/perl

# 2010-12-03 Jud Bishop
# Run:
# rpm -qa >/tmp/installed-software.log
# Then run:
# for I in `rhel-upgrade.pl`; do up2date $I; done

use strict;

my $log_file = "/tmp/installed-software.log";

open (FILE, $log_file) or die "Error: can't open log file\n $! \n";
while (<FILE>)
{
	chomp;
	my (@log) = split /-/;
	my $package = "";

	for (my $i = 0; $i <= $#log; $i++)
	{
		if ( $log[$i]  =~ /^[a-zA-Z]/ )
		{
			if ( $i > 0 )
			{ 
				$package = $package . "-" . $log[$i];
			} else {
				$package = $log[0];
			}
		}
	}
	print "$package \n";
}

close FILE or die "Error: can't close file\n $! \n";

It has been interesting testing our backup software. It appears it will take some refinement for us to get the restore process worked out.

This entry was posted in Linux. Bookmark the permalink.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s