One example I vividly remember was Lenny → Squeeze.
• Apache was installed, but stopped for the upgrade (resource-constrained device, I figured I'd better free up the memory up front).
• Apache's preinstall script tried to stop it anyway
• The old init script returned exit code 1 when trying to stop an already stopped service (PID not found, well duh)
• …and the preinstall script used set -e
• …and was called in the middle of a full dist-upgrade, that among other things installed binary-incompatible library upgrades, so after apt bailed out, it wouldn't start any more.
In the end I just wiped the machine. Haven't seen it happening since, but apt/dpkg is way, way more anal than pacman when it detects problems, which usually gets in the way of fixing them (ex.: package didn't list a dependency it needs in its pre-/post-install-script → dpkg gets in an endless loop where it tries to re-execute said script and dies before it gets to installing the dependency).
One time I had MIT Kerberos installed. The /etc/krb5.conf file had been edited.
The dist-upgrade included an upgrade of the mit-krb5 RPMs. One of those RPMs had a %postinstall that ran a sed command on the krb5.conf, to try to change a setting.
The sed command, run on the krb5.conf I had in place, blew away half the file.
That krb5.conf was necessary for users to log in; after the dist-upgrade, neither SSH nor local logins worked properly because the pam module bailed out entirely.
I'm an aptitude user, but I learned the hard way that you need to switch to apt-get to do a dist-upgrade. Something broke. Can't recall what it was - I think I was dist-upgrading to Squeeze, so it was a while back.
• Apache was installed, but stopped for the upgrade (resource-constrained device, I figured I'd better free up the memory up front).
• Apache's preinstall script tried to stop it anyway
• The old init script returned exit code 1 when trying to stop an already stopped service (PID not found, well duh)
• …and the preinstall script used set -e
• …and was called in the middle of a full dist-upgrade, that among other things installed binary-incompatible library upgrades, so after apt bailed out, it wouldn't start any more.
In the end I just wiped the machine. Haven't seen it happening since, but apt/dpkg is way, way more anal than pacman when it detects problems, which usually gets in the way of fixing them (ex.: package didn't list a dependency it needs in its pre-/post-install-script → dpkg gets in an endless loop where it tries to re-execute said script and dies before it gets to installing the dependency).