I was able to work around this problem. I could do e.g. 'slackpkg install openssl' and it would work and put that one package into /var/log/packages.
So, I listed the packages in /var/log/packages from my end-of-month full backup, then listed the newer packages from the most recent differential. Then did 'comm -3 olderPkgs newerPkgs' which produced a merged list like:
Code:
/var/log/packages/ModemManager-1.4.14-x86_64-1
/var/log/packages/NetworkManager-1.2.2-x86_64-2
/var/log/packages/NetworkManager-1.8.4-x86_64-1_slack14.2
/var/log/packages/PyQt-4.11.4-x86_64-1
:
:
where the indented line is from the differential backup and therefore the newer package. I hand-edited this resulting file (which I called doit) and removed the older package (in the above example I removed the NetworkManager-1.2.2-x86_64-2 line). This wasn't
that tedious as there were only 44 newer packages. I then ran the following command to install each package:
Code:
egrep -v "^#|SBo*|alien" doit | cut -d/ -f5 | while read; do slackpkg -postinst=off -dialog=off -batch=on -default_answer=y -spinning=off install "$REPLY"; done
and rebooted. All was well!
Lesson:
When doing a restore to a wiped disk from a full plus differential backup, do the restore per normal. When doing the differential, restore everything excluding the /var/log/packages directory (tar --exclude /var/log/packages). Then, go through the list of new packages (tar -tvf tarfile | grep var/log/packages) and manually upgrade each one.
ALSO - it would be a very good idea to do a full backup after any package update! That would have saved me the trouble in the first place.