Ubuntu – How to recover from a failed upgrade (‘apt-get -f install’ and ‘dpkg –configure -a’ fail)


During an upgrade from lucid (10.04) to precise (12.04), the X session froze, and I have been trying to recover the upgrade to get a stable system. I have performed the following steps:

  1. Used ssh to log in to the stalled system over the network.
  2. Checked the contents of the /var/log/dist-upgrade directory. There was no activity on main.log, apt.log or term.log.
  3. top showed that process 'precise' was using about 3% CPU, but I could find no evidence that the upgrade process was still doing anything.
  4. 'dpkg' did not show up in top, but it came up with pgrep dpkg | xargs ps
  5. Killed the 'dpkg' and 'precise' processes
  6. Tried to recover the upgrade by running sudo fuser -vki /var/lib/dpkg/lock;sudo dpkg --configure -a. This was partially successful (some packages were configured), but failed with the message Processing was halted because there were too many errors. I ran the same command a few times, and each time some packages were configured but others failed.
  7. Tried running sudo apt-get -f install. It fails with similar errors to dpkg.

The current situation is that dpkg --configure -a and sudo apt-get -f install fails with two kinds of error:

  1. Dependency issues, e.g.:

    dpkg: dependency problems prevent configuration of cifs-utils:
    cifs-utils depends on samba-common; however:
    Package samba-common is not configured yet.
    dpkg: error processing cifs-utils (--configure):
    dependency problems - leaving unconfigured
  2. Resource conflict, e.g.:

    debconf: DbDriver "config": /var/cache/debconf/config.dat is locked by another process: Resource temporarily unavailable

Additionally, it seems there's reference to potential boot problems, so I'm not keen to reboot without fixing the install first:

    dpkg: too many errors, stopping
    Processing triggers for initramfs-tools ...
    update-initramfs: Generating /boot/initrd.img-3.2.0-25-generic
    cryptsetup: WARNING: failed to detect canonical device of /dev/sda1
    cryptsetup: WARNING: could not determine root device from /etc/fstab

So my question is, how to get a working install when dpkg --configure -a fails?

Best Answer

I managed to rescue the upgrade, although I am not 100% sure what it was that worked. Others might still benefit:

  1. I managed to recover my X session by switching to a command-line terminal (Ctl+Alt+F2) and then back to the X terminal (Ctl+Alt+F7), which then asked me to login again. The system was unstable but worked. I was then able to close a couple of upgrade-related prompts.

  2. It seems that the update manager did not disable PPA's, so I cleaned up /etc/apt/sources.list.d/ (deleted all entries). It was suggested on IRC (#ubuntu) that I should use ppa-purge to clean up the PPA's, but in the end I simply deleted them.

  3. After this, sudo apt-get update and sudo apt-get -f install cleared up most of the remaining issues, but there were still dependency problems with samba.

  4. I managed to fix samba by removing it (sudo apt-get remove samba) and reinstalling it (sudo apt-get install samba).

After this, the system was more-or-less stable. I had to also remove and reinstall unity after a restart, but otherwise it's been working well.

Related Question