I've always had it mirror raided and migrated the disks between motherboards for upgrades, but essentially it's the same old installation from 10 years ago. About once a year or two I do a full emerge world, and I've just completed one today.
Overall I started the upgrade about a week ago and have learned some useful practices this time around.
I use a couple of laptops with distcc which I boot via LTSP so I can easily keep the glibc and gcc versions in line between systems. These systems improve the build times massively since my main system is a fanless Via C7 at 1.2Ghz.
The first step is to upgrade any critical services independently so you can keep an eye on them. When doing this you should
emerge --newuse --deep --update (atom)to ensure as many of the related packages are rebuilt too.
I also like to use a few other flags for convenience:
emerge -va --newuse --deep --update --tree --keep-going --jobs=4 (atom).
--treeflag is a cosmetic addition so I can visualize the dependencies of the build plan before approving it (
--keep-goingflag allows building of subsequent packages so as much as possible gets done.
--jobs=4flag allows multiple non-dependent packages to be merged simultaneously - this can speed up things. I also tried using the --load-average=6.0 setting, but this was causing my distcc slaves to block compiles - I suspect because the master NFS server was too busy coordinating the compiles.
- The dev-lang/mono package is buggy. I was moving from dev-lang/mono:1 to dev-lang/mono:2 and it kept failing to compile. It turned out that this is a known issue and compiling a new mono instance will make use of a pre-existing installation causing the failure. The workaround is to unmerge the old one before emerging the new one!
- The media-libs/libcanberra package doesn't like to be distributed or run with anything greater than MAKEOPTS="-j1".