Take the 2-minute tour ×
Ask Ubuntu is a question and answer site for Ubuntu users and developers. It's 100% free, no registration required.

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?

share|improve this question

1 Answer 1

up vote 3 down vote accepted

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:

sudo apt-get install --reinstall flashplugin-installer

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 :D

oIFS="$IFS";IFS=$',\n';read -p 'Package name: ' package;for w in $(grep "^Upgrade: " /var/log/apt/history.log | cut -c9-);do [[ ${w/:*/} == \ $package ]] && echo "$w" | cut -d"(" -f2; done;IFS="$oIFS"

After you've determined the old version, you must run the next command in a terminal:

sudo apt-get install packagename=version

To downgrade firefox to version 4.0.1+build1+nobinonly-0ubuntu0.11.04.1, you have to run:

sudo apt-get install firefox=4.0.1+build1+nobinonly-0ubuntu0.11.04.1
share|improve this answer
    
Great. Thanks. Just what I was looking for :) –  BЈовић May 25 '11 at 6:31

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.