You can display packages that are going to be upgraded and version changes with:
sudo apt-get update
sudo apt-get -V upgrade
The '-V' flag shows you the additional info. As for the snapshots - you really have to roll your own here.
My favourite method for having the rollback ability is using LVM with snapshots on Linux - but the last time I checked, there was no progress on the automated rollback to the chosen snapshot. This might have changed since then (I'd be happy for someone to correct me), but you can always boot using root=/dev/vg0/root-snap
kernel parameter (for instance) and then use rsync to sync the snapshot /dev/vg0/root-snap
to the original volume /dev/vg0/root
and then discard the snapshot. Not ideal but can be automated.
Of course ZFS snapshots rock but there's no official, production-ready ZFS support for Linux (yes, I'm aware of zfsonlinux.org and ZFS-FUSE), so unless you're just playing around, that's not really a feasible option for you.
UPDATE: it looks that we can now rollback (merge in LVM2 parlance) snapshots. So the update would take the following form with LVM2:
Create a 5GB snapshot of your root LV:
lvcreate -s /dev/vg0/root -L5G -n root-snap
Update the package (as above).
Roll back if necessary by running:
lvconvert --merge /dev/vg0/root-snap
And because /dev/vg0/root (the original LV) is opened, lvconvert will notify you that the /dev/vg0/root will be rolled back to /dev/vg0/root-snap upon the next activation of this volume. This happens when you run
lvchange -ay /dev/vg0/root
while this LV is closed, which is upon the next boot or after running:
lvchange -an /dev/vg0/root
What you're experiencing is the problem with apt
/ apt-get
not being as smart as you think it is.
This problem happens when trying to downgrade your package(s) or install an older package version than the version the repositories have as the latest candidate (with regard to your apt
priority pinning and other policies regarding repository priorities). When you downgrade your package, you actually have to specify for each individual dependency which version you're downgrading to, or in this case which specific version you actually want to install.
In the case of the nginx
packages, where nginx-full
and nginx-common
depend on each other, you have to explicitly tell apt to install each of the packages of the specified version(s). This is because 1.7.6-1+trusty1
supersedes 1.7.5-1+trusty1
by version number. As a result, you have to specifically say "Only install the package of this specific version" because of the superseded version(s) existing, i.e. apt-get install nginx-full=1.7.5-1+trusty1 nginx-common=1.7.5-1+trusty1
Not relevant to your question, but this also happens when you install from a repository that has a lower apt
pinning priority than another version, in which case you have to specify the versions and/or source(s) to install from manually, i.e. sudo apt-get install nginx-full/trusty-proposed nginx-common/trusty-proposed
being a prime example of trying to install a package and dependencies from the proposed repository, which has a much lower apt
priority than PPAs or the main repositories.
Best Answer
Synaptic has it's own configuration file, separate from dpgk's so this will be a manual process. However, here are some commands that should make things easier.
To put the pinned Synaptic packages on hold:
If you want to change the held packages back to install: