1 Background

Recently Debian testing has changed its abi to time64 type (64-bit time_t) and causes normal system upgrade failed with a lots of dependencies error.

If you face this problem, then try these steps:

2 General steps

  1. Refresh repository by apt-get update
  2. run a normal upgrade by apt-get upgrade, next step is depend on what happened:
    • If you are lucky and it succeed, then run apt-get full-upgrade and aptitude full-upgrade (see the third step)
    • If you get error, then manually install library packages which contain t64 in their package names, according to error messages of previous command. For example: aptitude install libgtk-3-0t64 libqt5core5t64 libqt5gui5t64 libqt5gui5-gles libqt5widgets5t64 libasound2t64 Then execute apt-get upgrade and apt-get full-upgrade again, see below.
  3. Run apt-get upgrade and apt-get full-upgrade again, this command will upgrade packages which currently have no dependencies error as many as possible.
  4. After finishing a apt-get upgrade command successfully at least once, run aptitude full-upgrade and see what happens, later action is decides using the same method described in first step, see above. Install the new library packages and run aptitude full-upgrade again.
  5. In conclusion, you should install the new library packages which contain t64 in their names manually, according to error messages when executing apt-get upgrade/apt-get full-upgrade or aptitude full-upgrade failed, then execute apt-get upgrade ; apt-get full-upgrade ; aptitude full-upgrade again.
  6. Do not stop upgrading until ’there is nothing to do’ is reported by apt-get upgrade and aptitude full-upgrade

3 Notice

3.1 Reinstall previous removed packages which not belong to library

  • It is important to uninstall packages which not belong to libraries as less as possible during upgrading procedures. Although Some packages will be uninstalled first when you executing the upgrade procedures as described above, remember their names and install them back at last.

    Tips: you can get a list of uninstalled non-library packages using command grep Remove: /var/log/apt/history.log | sed -e 's/, /\n/g ; s/^Remove: //g' | grep -v "^lib" | sed -e 's/:.*$//g'

    Use apt-get install when you reinstall these packages, and be careful don’t install old lib-* packages back.

4 Status

It seems that end of abi change coming soon, because recently successful upgrade of testing system can be finished by executing apt-get upgrade ; apt-get full-upgrade, no aptitude command needed.