2 minutes
Upgrade Debian testing system when dependencies were broken because recently ABI changes to 64-bit time_t
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
- Refresh repository by
apt-get update - 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-upgradeandaptitude full-upgrade(see the third step) - If you get error, then manually install library packages which contain
t64in their package names, according to error messages of previous command. For example:aptitude install libgtk-3-0t64 libqt5core5t64 libqt5gui5t64 libqt5gui5-gles libqt5widgets5t64 libasound2t64Then executeapt-get upgradeandapt-get full-upgradeagain, see below.
- If you are lucky and it succeed, then run
- Run
apt-get upgradeandapt-get full-upgradeagain, this command will upgrade packages which currently have no dependencies error as many as possible. - After finishing a
apt-get upgradecommand successfully at least once, runaptitude full-upgradeand see what happens, later action is decides using the same method described in first step, see above. Install the new library packages and runaptitude full-upgradeagain. - In conclusion, you should install the new library packages which contain
t64in their names manually, according to error messages when executingapt-get upgrade/apt-get full-upgradeoraptitude full-upgradefailed, then executeapt-get upgrade ; apt-get full-upgrade ; aptitude full-upgradeagain. - Do not stop upgrading until ’there is nothing to do’ is reported by
apt-get upgradeandaptitude 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 installwhen you reinstall these packages, and be careful don’t install oldlib-*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.