I am using KPackageKit to maintain my system, and I am trying to keep all pack up to date (but I didn't enable any experimental or beta repositories).
In my opinion such setup should not break anything, but that doesn't seams to be the case. Two weeks ago after an update, the flash player stopped working. After another update, something else.
So, the question : how to know when to update the packages, but not to break anything? Even if something broken gets in, is there a way to revert changes?
You should install the updates as soon as it appears. Updated are tested before released to the public. These unreleased updates are called proposed updates. Sometimes an update breaks something, this is called a regression. These regressions are rare due to the testing before, but that does not lower the chance of breaking a package completely.
In the case of Flash, the installer does sometimes not work. I noticed that an upgrade of
flashplugin-installer
using KPackageKit sometimes removes Flash without installing the new version. The solution was re-installing it, for which I prefer the terminal so I can see any error messages:Note that this installer is special, due to licensing, the Flash libraries cannot be distributed in the package and therefore the package downloads Flash from
archive.canonical.com
.As with other packages, it's likely a bug of the regression type as mentioned before. Most packages have a bug tracker on Launchpad.net, a solution could be available as well. Regressions are often quickly fixed.
To "revert" an update, you need to know what version the previously installed package was.
/var/log/apt/history.log
contains changes to packages including their versions.I hacked a bash command together, you have to execute it and enter package name. Then a list of previous versions is displayed. It could be done cleaner with
awk
, but I've yet to learn that :DAfter you've determined the old version, you must run the next command in a terminal:
To downgrade
firefox
to version4.0.1+build1+nobinonly-0ubuntu0.11.04.1
, you have to run: