I just experience another episode of the good and the bad, in this case for Ubuntu but not restricted to Ubuntu, in principle it applies to the whole Linux world. Let’s start with the bad, I’ve upgraded my Laptop from Ubuntu 12.04.1 LTS to 12.10. Unfortunately, the upgrade procedure breaks in the middle of the upgrade with an error message like a package has two versions is blocking itself.
The result was a half upgraded system already announcing itself as fully upgraded. Some hours of investigation later I figured out that an old install of skype mixing up x64 und i386 packages caused the problems. Ok, my fault, installing Microsoft Software on a Linux system might not be my smartest idea.
Nevertheless, the situation was as it is and I had to deal with it. Simply re-installing the system was not an option because I use an encrypted home drive and I didn’t write down the master key (ok, I know, my fault as well).
So I need to fix the system. Fortunately, and now we enter the good, Linux has a central package system giving you the ability to check, remove, re-install the whole system without messing up the configuration. The first action was to remove the blocking package. The next step was to remove all remaining i386 packages (they are only used for a small amount of packages) resulting in a system that wasn’t even able to boot.
Not really perfect, the next step was to boot the system from a rescue CD, chroot to the original system and re-install all removed i386 packages as amd64 packages again. This took some time and need some rework on the network settings but in the end, I was able to boot my system again. Now I had to finish the upgrade manually, fix some corrupted packages and … tattata … my system was back again and upgraded.
To summarize the action, the bad thing is that Linux can also get corrupted, the good thing is, nearly every corrupted status could be transformed into a good working state again with tools available for free at the internet.