Date: February 28, 2013

Introduction

It is time to upgrade to the latest Fedora release. I was warned ahead of time of two things: Good old Fedora. Change for change sake apparently, and with fewer features rather than more. I guess the developers are happy, but no way to tell what they are happy about. From my point of view I get a black box with fewer knobs and important knobs missing.

The inability to upgrade from the DVD is particularly distressing given that I need to maintain machines without high bandwidth connectivity.

A yum ugrade seems to be the only practical option. Too bad there isn't a way to extract files from the intall DVD and set up a mirror of the release repo and do a yum upgrade from that.

Preparing the systems for the upgrade

I make sure I have the latest copy of yum (and I do):
yum update yum
I install the rpmconf tool, and use it to scan for rpmnew files and such:
yum install rpmconf
rpmconf -a
It offers me a menu of choices when it finds a file, I either skip the file if I feel I need to merge any changes, but I sometimes am brave and let it overwrite files that I feel I have never messed with. After this I find all the files I need to address by hand using:
find /etc /var -name "?*.rpm?*"
Next I scan for packages that I could consider eliminating, but in fact do not eliminate any. In general these are packages I have installed from rpm by hand, or else old kernels which I don't want to get rid of until the upgrade to F18 is finished:
yum install yum-utils
package-cleanup --leaves
package-cleanup --orpans

Doing the upgrade

They always recommend doing the upgrade from a non-graphical console, but I never have and have never had any troubles. This lets me keep the instructions up in my browser, as well as amuse myself while waiting for the update to finish. Your mileage may vary. If you do want to do the non-graphical thing, do this:
ctrl-alt-F2
init 3
Install the new fedora GPG key:
rpm --import https://fedoraproject.org/static/DE7F38BD.txt
I always turn off SElinux on my systems, but if you do otherwise, you will need to get it out of your way to do the upgrade.
yum clean all
yum erase mod_python
yum erase yum-plugin-downloadonly
yum --releasever=18 --disableplugin=presto distro-sync
I upgraded one of the two systems I did without disabling the presto plugin and had no problems, but who knows if this will work for you. I had two dependency issues that I solved erasing the two packages mentioned above. Apparently mod_python is gone, at least as a package. Not that I care all that much. The yum-plugin-downloadonly package used to be a dependency for yum-cron, so erasing it takes yum-cron with it. I will reinstall yum-cron after the upgrade finishes.

Now I find something to do for several hours. One system (with a fast connection to a local mirror of the Fedora 18 release) took something like 2.5 hours. Another system using a DSL link took about 4.5 hours. Once it finishes, it is recommended to install the latest grub before rebooting.

/sbin/grub2-install /dev/sda
reboot
After this the system comes up running Fedora 18 without a hitch. Note that I don't have raid disks or encrypted filesystems or anything that is much out of the ordinary.

Post upgrade cleanup

I do this:
rpm --rebuilddb
updatedb
yum install yum-cron
service yum-cron start
chkconfig yum-cron on
find /etc /var -name "?*.rpm?*"
The last command finds the rpmnew files I need to install or merge

Getting httpd to run again

My web server would not start.

Fedora 18 introduces apache 2.4.3 (we were running apache 2.2 under F17). My httpd.conf file is very old and has now gotten too funky to work with the latest httpd. Time for a housecleaning.

To find out what is going on, the most useful command is:

systemctl restart httpd.service
journalctl -xn
The "journalctl" command is a new addition, part of systemd. What I first discovered was that a bunch of modules my old httpd.conf file was trying to include had vanished (or moved). Hacking on my old httpd.conf file was the wrong approach. The thing to do was to take the new httpd.conf.rpmnew file and tailor it to my system.

When all the smoke cleared, my httpd.conf file was down to a third of its original size. A major part of this was due to the introduction of the /etc/httpd/conf.modules.d directory (which I don't need to mess with). Also, I decided to put most of my customization (which creates virtual hosts) into separate files and make the httpd.conf file include them:

Include conf/cholla.conf
Include conf/micros.conf
Note that the distributed httpd.conf file turns all file access off by default (and most other features off as well). I think this is a very good approach. Even after adding my changes to this file, I was getting the Fedora "test page", then I noticed the line:
Require all denied
This blocks access to all pages until you explicitly open them up.

Getting rails to run again

This was actually quite simple. I just had to get a new version of the passenger module that would work with apache 2.4.
gem update passenger
passenger-install-apache2-module
Do this and follow instructions and you are there. There was one confusing issue. Before doing this the LoadModule line that was trying to load mod_passenger.so was complaining about a syntax error. This is misleading as there is no syntax error in the LoadModule line at all - the problem is that the module itself is not compatible with the current apache version.
Have any comments? Questions? Drop me a line!

Adventures in Computing / tom@mmto.org