5

I was surprised to see that since Natty 11.04, even when we have enabled a backports repository, updated packages aren't automatically installed from that repository. We have to install individual updates manually, e.g. via

apt-get install ipython/precise-backports

as explained at UbuntuBackports - Community Ubuntu Documentation. I guess I just didn't get the memo....

First question: how do we find out what our options are for upgrades via backports? I'm surprised that even if I ask for status, e.g. via

wajig status ipython

it doesn't tell me there is a new version available. I'd like a list of all upgrades for packages which I've already installed.

Next, how do I avoid losing existing packages just because I upgrade via a backport?

E.g. the above ipython install tells me:

The following packages will be REMOVED:
   ipython-notebook ipython-qtconsole

How do I say I want the latest backported ipython, as well as any other packages for which updates are available that depend on it, without manually figuring them all out and installing them also?

I know I can change the pinning so that I get all updates, but I'm hesitant to go against the general advice not to. But if a user asks for one package to be updated, wouldn't it be natural to update all the dependencies, like you'd get from a ppa?

1 Answer 1

5

how do we find out what our options are for upgrades via backports?

Run apt-get with the --default-release or -t switch:

sudo apt-get -t precise-backports upgrade

Is the same as apt-get install ipython/precise-backports just that you don't have to insert the precise-backports part.

I'm surprised that even if I ask for status, e.g. via wajig status ipython it doesn't tell me there is a new version available.

For that I use apt-cache policy:

apt-cache policy iceweasel
iceweasel:
  Installed: 25.0~a2+20130816004007-1~bpo70+1
  Candidate: 25.0~a2+20130816004007-1~bpo70+1
  Package pin: 25.0~a2+20130816004007-1~bpo70+1
  Version table:
 *** 25.0~a2+20130816004007-1~bpo70+1 1990
       1990 http://mozilla.debian.net/ wheezy-backports/iceweasel-aurora i386 Packages
        100 /var/lib/dpkg/status
     23.0-2 1990
         -1 http://ftp.us.debian.org/debian/ experimental/main i386 Packages
     17.0.8esr-2 1990
        990 http://ftp.utexas.edu/debian/ testing/main i386 Packages
         -1 http://ftp.de.debian.org/debian/ sid/main i386 Packages

Next, how do I avoid losing existing packages just because I upgrade via a backport?

If the packages you want to upgrade break previous dependencies, then you should decide if upgrading or leaving things as they are. Or you just force things down and break your installation, is all up to you.

How do I say I want the latest backported ipython, as well as any other packages for which updates are available that depend on it, without manually figuring them all out and installing them also?

Same as above.

But if a user asks for one package to be updated, wouldn't it be natural to update all the dependencies, like you'd get from a ppa?

If there is no update candidates, no. This happens a lot on rolling releases distributions, some packages depend of others that are yet no available in the repositories, so apt decides no to upgrade since it breaks dependencies.

For the case of ipython that you mention on comments:

Following the package dependencies page ipython-notebook=0.13.2-1~ubuntu12.04.1 depends to ipython=0.13.2-1~ubuntu12.04.1, but if you try to upgrade ipython alone, apt will take your actions as priority and fulfill them at any cost. Since you are only telling apt to install ipython from backports, he understand:

Fulfill only this condition at any cost

So, the only way to do this is removing/downgrading any package that gets it dependencies broken due this operation (ipython-notebook) and install ipython from backports. The correct way to do this is, either:

sudo apt-get -t precise-backports install ipython-notebook ipython

or

sudo apt-get -t precise-backports upgrade

The first one will tell apt-get to install ipython-notebook and ipython from backports, the second will tell apt to upgrade any installed package that has upgrades in the precise-backports repository.

7
  • Very helpful. Thanks! But on the last question: as I noted, even available binary packages from the same source package, which are in backports, don't get upgraded and are removed instead, like ipython-notebook. When would that ever be a user's intent? Can that be fixed/avoided?
    – nealmcb
    Aug 21, 2013 at 19:34
  • You should check the apt-cache depends ipython-notebook if it has an entry like: Depends: ipython=1.2.3 also, the new packages that could be installed that can cause dependencies conflict.
    – Braiam
    Aug 21, 2013 at 19:40
  • Sure, ipython-notebook says "Depends: ipython". So if I have ipython-notebook 0.12.1 installed, as well as ipython 0.12.1 (both from the same source package to boot), and 0.13.1 is in backports, and I upgrade ipython, why would it choose to remove ipython-notebook rather than upgrade it (and install Depends: ipython-notebook-common, a new dependency package in that version)
    – nealmcb
    Aug 21, 2013 at 19:57
  • @nealmcb check my answer updated
    – Braiam
    Aug 21, 2013 at 20:10
  • Cool - I was hoping that -t would work that way also. But what if it was just "sudo apt-get -t precise-backports install ipython" - might that also be smart enough to properly upgrade ipython-notebook and ipython-qtconsole also?
    – nealmcb
    Aug 21, 2013 at 20:18

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .