Ubuntu – How to resolve a newer package dependency, when the old one is in a higher-priority source

aptpackage-management

When trying to update the "unity" package (and a few other related packages, including unity-2d and libunity-2d-private0), apt-get tells me I cannot, as the required dependency is libxi6 > 2:1.6.99.1, but the actual version installed is 2:1.6.0-0ubuntu2.1.

I have run apt-cache policy libxi6, and I can see version 2:1.7.1.901-1ubuntu1~precise1 is available in the "updates" source, but my installed version comes from the "security" source. Sadly, my security source has a higher priority (990) than my updates source (900), and so it seems that apt-get cannot resolve the dependency issue.

I cannot see any problems on Launchpad regarding this dependency failure, as I would expect either the version of unity in precise-updates would require a libxi6 that is available in security, or there would be a unity package in precise-security that had the correct dependencies.

Contents of /etc/apt/preferences.d/*:

    Package: *
    Pin: release a=precise-security
    Pin-Priority: 990

    Package: *
    Pin: release a=precise-updates
    Pin-Priority: 900

    Package: *
    Pin: release a=precise-proposed
    Pin-Priority: 400

Output of apt-cache policy:

 100 /var/lib/dpkg/status
     release a=now
 500 https://private-ppa.launchpad.net/commercial-ppa-uploaders/steam/ubuntu/ precise/main i386 Packages
     release v=12.04,o=LP-PPA-commercial-ppa-uploaders-steam,a=precise,n=precise,l=Steam,c=main
     origin private-ppa.launchpad.net
 500 https://private-ppa.launchpad.net/commercial-ppa-uploaders/steam/ubuntu/ precise/main amd64 Packages
     release v=12.04,o=LP-PPA-commercial-ppa-uploaders-steam,a=precise,n=precise,l=Steam,c=main
     origin private-ppa.launchpad.net
 500 http://dl.google.com/linux/talkplugin/deb/ stable/main i386 Packages
     release v=1.0,o=Google, Inc.,a=stable,n=stable,l=Google,c=main
     origin dl.google.com
 500 http://dl.google.com/linux/talkplugin/deb/ stable/main amd64 Packages
     release v=1.0,o=Google, Inc.,a=stable,n=stable,l=Google,c=main
     origin dl.google.com
 500 http://repository.spotify.com/ stable/non-free i386 Packages
     release c=non-free
     origin repository.spotify.com
 500 http://repository.spotify.com/ stable/non-free amd64 Packages
     release c=non-free
     origin repository.spotify.com
 500 http://gb.archive.ubuntu.com/ubuntu/ precise-proposed/universe Translation-en_GB
 500 http://gb.archive.ubuntu.com/ubuntu/ precise-proposed/universe Translation-en
 500 http://gb.archive.ubuntu.com/ubuntu/ precise-proposed/restricted Translation-en_GB
 500 http://gb.archive.ubuntu.com/ubuntu/ precise-proposed/restricted Translation-en
 500 http://gb.archive.ubuntu.com/ubuntu/ precise-proposed/multiverse Translation-en_GB
 500 http://gb.archive.ubuntu.com/ubuntu/ precise-proposed/multiverse Translation-en
 500 http://gb.archive.ubuntu.com/ubuntu/ precise-proposed/main Translation-en_GB
 500 http://gb.archive.ubuntu.com/ubuntu/ precise-proposed/main Translation-en
 400 http://gb.archive.ubuntu.com/ubuntu/ precise-proposed/universe i386 Packages
     release v=12.04,o=Ubuntu,a=precise-proposed,n=precise,l=Ubuntu,c=universe
     origin gb.archive.ubuntu.com
 400 http://gb.archive.ubuntu.com/ubuntu/ precise-proposed/multiverse i386 Packages
     release v=12.04,o=Ubuntu,a=precise-proposed,n=precise,l=Ubuntu,c=multiverse
     origin gb.archive.ubuntu.com
 400 http://gb.archive.ubuntu.com/ubuntu/ precise-proposed/main i386 Packages
     release v=12.04,o=Ubuntu,a=precise-proposed,n=precise,l=Ubuntu,c=main
     origin gb.archive.ubuntu.com
 400 http://gb.archive.ubuntu.com/ubuntu/ precise-proposed/restricted i386 Packages
     release v=12.04,o=Ubuntu,a=precise-proposed,n=precise,l=Ubuntu,c=restricted
     origin gb.archive.ubuntu.com
 400 http://gb.archive.ubuntu.com/ubuntu/ precise-proposed/universe amd64 Packages
     release v=12.04,o=Ubuntu,a=precise-proposed,n=precise,l=Ubuntu,c=universe
     origin gb.archive.ubuntu.com
 400 http://gb.archive.ubuntu.com/ubuntu/ precise-proposed/multiverse amd64 Packages
     release v=12.04,o=Ubuntu,a=precise-proposed,n=precise,l=Ubuntu,c=multiverse
     origin gb.archive.ubuntu.com
 400 http://gb.archive.ubuntu.com/ubuntu/ precise-proposed/main amd64 Packages
     release v=12.04,o=Ubuntu,a=precise-proposed,n=precise,l=Ubuntu,c=main
     origin gb.archive.ubuntu.com
 400 http://gb.archive.ubuntu.com/ubuntu/ precise-proposed/restricted amd64 Packages
     release v=12.04,o=Ubuntu,a=precise-proposed,n=precise,l=Ubuntu,c=restricted
     origin gb.archive.ubuntu.com
 500 http://archive.canonical.com/ precise/partner i386 Packages
     release v=12.04,o=Canonical,a=precise,n=precise,l=Partner archive,c=partner
     origin archive.canonical.com
 500 http://archive.canonical.com/ precise/partner amd64 Packages
     release v=12.04,o=Canonical,a=precise,n=precise,l=Partner archive,c=partner
     origin archive.canonical.com
 500 http://extras.ubuntu.com/ubuntu/ precise/main i386 Packages
     release v=12.04,o=LP-PPA-app-review-board,a=precise,n=precise,l=Application Review Board PPA,c=main
     origin extras.ubuntu.com
 500 http://extras.ubuntu.com/ubuntu/ precise/main amd64 Packages
     release v=12.04,o=LP-PPA-app-review-board,a=precise,n=precise,l=Application Review Board PPA,c=main
     origin extras.ubuntu.com
 500 http://security.ubuntu.com/ubuntu/ precise-security/universe Translation-en
 500 http://security.ubuntu.com/ubuntu/ precise-security/restricted Translation-en
 500 http://security.ubuntu.com/ubuntu/ precise-security/multiverse Translation-en
 500 http://security.ubuntu.com/ubuntu/ precise-security/main Translation-en
 990 http://security.ubuntu.com/ubuntu/ precise-security/multiverse i386 Packages
     release v=12.04,o=Ubuntu,a=precise-security,n=precise,l=Ubuntu,c=multiverse
     origin security.ubuntu.com
 990 http://security.ubuntu.com/ubuntu/ precise-security/universe i386 Packages
     release v=12.04,o=Ubuntu,a=precise-security,n=precise,l=Ubuntu,c=universe
     origin security.ubuntu.com
 990 http://security.ubuntu.com/ubuntu/ precise-security/restricted i386 Packages
     release v=12.04,o=Ubuntu,a=precise-security,n=precise,l=Ubuntu,c=restricted
     origin security.ubuntu.com
 990 http://security.ubuntu.com/ubuntu/ precise-security/main i386 Packages
     release v=12.04,o=Ubuntu,a=precise-security,n=precise,l=Ubuntu,c=main
     origin security.ubuntu.com
 990 http://security.ubuntu.com/ubuntu/ precise-security/multiverse amd64 Packages
     release v=12.04,o=Ubuntu,a=precise-security,n=precise,l=Ubuntu,c=multiverse
     origin security.ubuntu.com
 990 http://security.ubuntu.com/ubuntu/ precise-security/universe amd64 Packages
     release v=12.04,o=Ubuntu,a=precise-security,n=precise,l=Ubuntu,c=universe
     origin security.ubuntu.com
 990 http://security.ubuntu.com/ubuntu/ precise-security/restricted amd64 Packages
     release v=12.04,o=Ubuntu,a=precise-security,n=precise,l=Ubuntu,c=restricted
     origin security.ubuntu.com
 990 http://security.ubuntu.com/ubuntu/ precise-security/main amd64 Packages
     release v=12.04,o=Ubuntu,a=precise-security,n=precise,l=Ubuntu,c=main
     origin security.ubuntu.com
 500 http://gb.archive.ubuntu.com/ubuntu/ precise-backports/universe Translation-en
 500 http://gb.archive.ubuntu.com/ubuntu/ precise-backports/restricted Translation-en
 500 http://gb.archive.ubuntu.com/ubuntu/ precise-backports/multiverse Translation-en
 500 http://gb.archive.ubuntu.com/ubuntu/ precise-backports/main Translation-en
 100 http://gb.archive.ubuntu.com/ubuntu/ precise-backports/multiverse i386 Packages
     release v=12.04,o=Ubuntu,a=precise-backports,n=precise,l=Ubuntu,c=multiverse
     origin gb.archive.ubuntu.com
 100 http://gb.archive.ubuntu.com/ubuntu/ precise-backports/universe i386 Packages
     release v=12.04,o=Ubuntu,a=precise-backports,n=precise,l=Ubuntu,c=universe
     origin gb.archive.ubuntu.com
 100 http://gb.archive.ubuntu.com/ubuntu/ precise-backports/restricted i386 Packages
     release v=12.04,o=Ubuntu,a=precise-backports,n=precise,l=Ubuntu,c=restricted
     origin gb.archive.ubuntu.com
 100 http://gb.archive.ubuntu.com/ubuntu/ precise-backports/main i386 Packages
     release v=12.04,o=Ubuntu,a=precise-backports,n=precise,l=Ubuntu,c=main
     origin gb.archive.ubuntu.com
 100 http://gb.archive.ubuntu.com/ubuntu/ precise-backports/multiverse amd64 Packages
     release v=12.04,o=Ubuntu,a=precise-backports,n=precise,l=Ubuntu,c=multiverse
     origin gb.archive.ubuntu.com
 100 http://gb.archive.ubuntu.com/ubuntu/ precise-backports/universe amd64 Packages
     release v=12.04,o=Ubuntu,a=precise-backports,n=precise,l=Ubuntu,c=universe
     origin gb.archive.ubuntu.com
 100 http://gb.archive.ubuntu.com/ubuntu/ precise-backports/restricted amd64 Packages
     release v=12.04,o=Ubuntu,a=precise-backports,n=precise,l=Ubuntu,c=restricted
     origin gb.archive.ubuntu.com
 100 http://gb.archive.ubuntu.com/ubuntu/ precise-backports/main amd64 Packages
     release v=12.04,o=Ubuntu,a=precise-backports,n=precise,l=Ubuntu,c=main
     origin gb.archive.ubuntu.com
 500 http://gb.archive.ubuntu.com/ubuntu/ precise-updates/universe Translation-en_GB
 500 http://gb.archive.ubuntu.com/ubuntu/ precise-updates/universe Translation-en
 500 http://gb.archive.ubuntu.com/ubuntu/ precise-updates/restricted Translation-en_GB
 500 http://gb.archive.ubuntu.com/ubuntu/ precise-updates/restricted Translation-en
 500 http://gb.archive.ubuntu.com/ubuntu/ precise-updates/multiverse Translation-en_GB
 500 http://gb.archive.ubuntu.com/ubuntu/ precise-updates/multiverse Translation-en
 500 http://gb.archive.ubuntu.com/ubuntu/ precise-updates/main Translation-en_GB
 500 http://gb.archive.ubuntu.com/ubuntu/ precise-updates/main Translation-en
 900 http://gb.archive.ubuntu.com/ubuntu/ precise-updates/multiverse i386 Packages
     release v=12.04,o=Ubuntu,a=precise-updates,n=precise,l=Ubuntu,c=multiverse
     origin gb.archive.ubuntu.com
 900 http://gb.archive.ubuntu.com/ubuntu/ precise-updates/universe i386 Packages
     release v=12.04,o=Ubuntu,a=precise-updates,n=precise,l=Ubuntu,c=universe
     origin gb.archive.ubuntu.com
 900 http://gb.archive.ubuntu.com/ubuntu/ precise-updates/restricted i386 Packages
     release v=12.04,o=Ubuntu,a=precise-updates,n=precise,l=Ubuntu,c=restricted
     origin gb.archive.ubuntu.com
 900 http://gb.archive.ubuntu.com/ubuntu/ precise-updates/main i386 Packages
     release v=12.04,o=Ubuntu,a=precise-updates,n=precise,l=Ubuntu,c=main
     origin gb.archive.ubuntu.com
 900 http://gb.archive.ubuntu.com/ubuntu/ precise-updates/multiverse amd64 Packages
     release v=12.04,o=Ubuntu,a=precise-updates,n=precise,l=Ubuntu,c=multiverse
     origin gb.archive.ubuntu.com
 900 http://gb.archive.ubuntu.com/ubuntu/ precise-updates/universe amd64 Packages
     release v=12.04,o=Ubuntu,a=precise-updates,n=precise,l=Ubuntu,c=universe
     origin gb.archive.ubuntu.com
 900 http://gb.archive.ubuntu.com/ubuntu/ precise-updates/restricted amd64 Packages
     release v=12.04,o=Ubuntu,a=precise-updates,n=precise,l=Ubuntu,c=restricted
     origin gb.archive.ubuntu.com
 900 http://gb.archive.ubuntu.com/ubuntu/ precise-updates/main amd64 Packages
     release v=12.04,o=Ubuntu,a=precise-updates,n=precise,l=Ubuntu,c=main
     origin gb.archive.ubuntu.com
 500 http://gb.archive.ubuntu.com/ubuntu/ precise/universe Translation-en_GB
 500 http://gb.archive.ubuntu.com/ubuntu/ precise/universe Translation-en
 500 http://gb.archive.ubuntu.com/ubuntu/ precise/restricted Translation-en_GB
 500 http://gb.archive.ubuntu.com/ubuntu/ precise/restricted Translation-en
 500 http://gb.archive.ubuntu.com/ubuntu/ precise/multiverse Translation-en_GB
 500 http://gb.archive.ubuntu.com/ubuntu/ precise/multiverse Translation-en
 500 http://gb.archive.ubuntu.com/ubuntu/ precise/main Translation-en_GB
 500 http://gb.archive.ubuntu.com/ubuntu/ precise/main Translation-en
 500 http://gb.archive.ubuntu.com/ubuntu/ precise/multiverse i386 Packages
     release v=12.04,o=Ubuntu,a=precise,n=precise,l=Ubuntu,c=multiverse
     origin gb.archive.ubuntu.com
 500 http://gb.archive.ubuntu.com/ubuntu/ precise/universe i386 Packages
     release v=12.04,o=Ubuntu,a=precise,n=precise,l=Ubuntu,c=universe
     origin gb.archive.ubuntu.com
 500 http://gb.archive.ubuntu.com/ubuntu/ precise/restricted i386 Packages
     release v=12.04,o=Ubuntu,a=precise,n=precise,l=Ubuntu,c=restricted
     origin gb.archive.ubuntu.com
 500 http://gb.archive.ubuntu.com/ubuntu/ precise/main i386 Packages
     release v=12.04,o=Ubuntu,a=precise,n=precise,l=Ubuntu,c=main
     origin gb.archive.ubuntu.com
 500 http://gb.archive.ubuntu.com/ubuntu/ precise/multiverse amd64 Packages
     release v=12.04,o=Ubuntu,a=precise,n=precise,l=Ubuntu,c=multiverse
     origin gb.archive.ubuntu.com
 500 http://gb.archive.ubuntu.com/ubuntu/ precise/universe amd64 Packages
     release v=12.04,o=Ubuntu,a=precise,n=precise,l=Ubuntu,c=universe
     origin gb.archive.ubuntu.com
 500 http://gb.archive.ubuntu.com/ubuntu/ precise/restricted amd64 Packages
     release v=12.04,o=Ubuntu,a=precise,n=precise,l=Ubuntu,c=restricted
     origin gb.archive.ubuntu.com
 500 http://gb.archive.ubuntu.com/ubuntu/ precise/main amd64 Packages
     release v=12.04,o=Ubuntu,a=precise,n=precise,l=Ubuntu,c=main
     origin gb.archive.ubuntu.com

Best Answer

Package: *
Pin: release a=precise-security
Pin-Priority: 990

Here, there is a problem. Security packages always have higher version string. Always. You don't need to set package pinning to prefer those packages. APT will always install the higher version available unless any user preference restrict this behaviour, which is what you are doing.

I don't know what you want to achieve with those package pinning, but they will give you headaches. Package pinning was designed for different packages sources (i. e. Ubuntu and some sort of PPA) and is normally preferred to manipulate the priority of the non-official source. The proposed repository always has lower priority, the security repository always has automatic upgrades daily.

I recommend you lower the PPA priority (if it's that what you want to control) instead of modifying the Ubuntu repositories.

If you don't want to change anything, you can force apt to bind to your wishes using:

sudo apt-get install libxi6=2:1.7.1.901-1ubuntu1~precise1

or

sudo apt-get install libxi6/precise-updates

But remember that the updates repositories always will have all the changes made by the security repositories.