Hi list

This long email is just a report on my recent stretch to buster upgrade 
experience. I had a bit of an adventure, didn't handle some steps well, 
and thought the experience would be useful to put out there for others 
to learn from / avoid some mistakes I made.

THERE IS NO QUESTION / PROBLEM TO SOLVE AT THE END OF THIS -- it's just 
here for info and in the hope it will help someone. If you don't like 
long emails, please know that I couldn't care less.

I was upgrading a Stretch desktop system to Buster. I've moved most of 
my most critical activities into the cloud and so my machine isn't 
nearly as mission-critical as it once was, but outages would still be 
annoying enough that I would want ideally to avoid significant downtime.

I have other users on this machine, who occasionally access my machine 
remotely via a VPN, but they are very much minority users and I am the 
most common user on my machine by a long way.

I perform 5-days-a-week backups using Amanda. The machine in question 
here happens to be the Amanda server as well as a client. The amanda 
virtual tapes and holding disk are in a USB3 disk cage. The cage also 
contains a RAID1 disk pair which contains data of various types.

Internally my machine has 2 1TB SSDs, one of which cotains most of my 
filesystem and the other is mounted at /opt. /opt contains a fairly 
extensive mariadb server, a SVN repository, and hard disk space for 2 
Windows VMs.

The upgrade was expected to have a large effect on the disk containing / 
and minimal effect on the disk containing /opt.

I verified before starting that my most recent backups had been 
successful. I disabled the systemd timer job I'd created to run the 
backups each night so that if I did have a messed-up system 
half-upgraded during the process, it didn't corrupt my backups. However 
I wasn't super confident that I could restore from my backups 
willy-nilly as I had had only limited occasion to do so before (turns 
out I didn't need to worry about this, I ended up restoring liberally 
from my backups and it went fine).

Before starting I additionally rsync'd my entire home directory and 
select parts of /etc (mysql / mariadb config, hard-won exim4 config, 
openvpn config etc) to spare disk capacity in the drive cage ie 
off-machine, just in case.

I MISSED my SVN config in this backup, incidentally.I had an automatic 
nightly backup of it but I did not hand-crank an additional backup of it 
before starting, because I forgot about it.

I carefully read the upgrade instructions on the Debian website. I 
noticed that I needed to migrate to ostensibly-predictable network 
interface names before doing the upgrade, so I duly executed the steps 
prescribed for that. That worked fine and internet access was none the 
worse for it afterward, before upgrading.

I noticed and didn't completely understand some warnings about ssh and, 
I think, old types of keys. I didn't do anything about that because I 
didn't really understand what that was saying. Sometimes I think some of 
these notes could do with a "What This Means In Plain English" 
section... Anyway that didn't seem to have any problems in the end.

I went through my sources.list.d directory and peeled out a couple of 
things I didn't expect to do in the upgrade eg Virtualbox's repository, 
the Google Talk plugin (gawd alone knows where that came from), and 
Christian Marillat's deb-multimedia repository. I thought I should do 
the upgrade without them and hoped to wean myself off deb-multimedia 
while I was at it. This, as it turned out, was a huge mistake.

After all this I modified my sources.list according to the upgrade 
instructions and apt update'd.

Next, I did an apt upgrade to upgrade some stuff before the main apt 
dist-upgrade, again following the upgrade instructions. This was the 
last command my system executed as a healthy system...

Obviously there was a lot to download and so on, so I let it get on with 
it. Eventually, after a lot of downloading and quite a lot of package 
upgrading, the process failed with an error. The issue was gstreamer and 
its library, which had hit a problem trying to upgrade because they were 
trying to overwrite a file also contained in the gstreamer-plugins-bad 
package.

This turned out to be a deb-multimedia problem. I had hoped that 
upgrading to Buster versions of packages would supercede the 
deb-multimedia repository package versions, but they didn't.

Now, in this situation, it didn't seem to be possible to use apt to go 
forward or back. If I tried to repeat the upgrade, install anything new, 
remove anything, or anything else, it would immediately stop saying 
there are broken packages, fix them with apt --fix-broken install. And 
if I did apt --fix-broken install, it would complain about the file 
write conflict I highlighted above.

At this point I tried to use the instructions in the upgrade 
instructions for handling this error message, and I don't think I did it 
right because the situation just steadily got worse and worse. Force 
removing packages using dpkg --force-depends -r <package> just moved the 
problem from one place to another. I ended up chasing one tree of 
dependencies all the way down to a conflict involving libstdc++6. By 
then I was so trigger-happy I force-removed that, and that was the end 
of using apt to do much of anything...

I was still able to use wget to re-download the libstdc++6 package for 
stretch, and tried to re-install it using dpkg (which doesn't need 
libstdc++6). When that actually failed to install, despite the fact it 
had just been installed, I concluded that my package management was so 
corrupted on this machine that there was nothing for it but a 
re-install.

Since I had all my backups, I downloaded the netinst iso on another 
computer and burned it to a USB stick. I also put my /etc/fstab on that 
stick as it would help me re-mount /opt and my drive cage when I was 
done with the re-install.

I also made sure I had my amanda config separately backed up as I wasn't 
confident (again, oh me of little faith as it turned out) that I had my 
config set up appropriately to be able to be restored into a fresh 
machine.

The re-install went smoothly and, using my retained copy of my old 
/etc/fstab, I was able to bring my second SSD back in as /opt and get 
the disks in my drive cage back, including my amanda backup disks. I was 
then able to restore my home directory, and key config such as exim4, 
SVN, mariadb etc etc from my amanda backups, so one positive thing to 
come out of this is I'm now much more confident my backups are actually 
worthwhile as they've now been successfully battle-tested.

The only thing I haven't yet gotten around to since the re-install is to 
re-install VirtualBox from the VB repositories. I have the virtual disks 
etc for the VMs, but I haven't yet restored the VM configs from my 
backups (although there's now nothing stopping me from doing that, I 
just haven't gotten around to it yet).

In the end I think my problems were caused by previously having the 
deb-multimedia repositories in use and trying to move away from them at 
the same time as upgrading. I don't know if there's a way to get away 
from deb-multimedia once items have been installed from it, but now I 
know that way is NOT to try to upgrade to the next Debian release, not 
including deb-multimedia...

Although I do think some of the multimedia-facing packages in Debian are 
(or used to be) configured in a less than optimal way (ffmpeg, I'm 
looking at you) I now think rebuilding the relevant packages from source 
might be a better approach than using deb-multimedia. I'm not sure what 
the nature of the fight between Marillat and the rest of the Debian 
community is (and I'm _very_ sure I don't want to wade into the middle 
of it), but I think it's a pity he wasn't somehow able to be kept in the 
fold because he does seem to know what he's doing when it comes to 
multimedia tools. He was also very helpful some years back when I was 
trying to debug a problem I was having with one of the tools (that's 
long pre-stretch). But if there's no non-destructive way out of a 
deb-multimedia-ised computer, it's probably best not to venture there...

Mark

Reply via email to