Install Debian Backports kernel automatically

8,607

Solution 1

Check what that package depends on and what those dependencies need as well. For example I see this for my machine:

#apt-cache  show linux-image-amd64
Package: linux-image-amd64
<snip>
Depends: linux-image-3.16.0-4-amd64

and

# apt-cache  show linux-image-3.16.0-4-amd64
Package: linux-image-3.16.0-4-amd64
<snip>
Depends: kmod | module-init-tools, linux-base (>= 3~), debconf (>= 0.5) | debconf-2.0, initramfs-tools (>= 0.110~) | linux-initramfs-tool
Pre-Depends: debconf | debconf-2.0

Check if dependencies are taken from backports as well.

Solution 2

sudo apt-get install -t wheezy-backports linux-image-amd64

it is not convenient I know .. but it is the right way to do things without having troubles in future (IMHO of course)

Solution 3

Change the top line in your preferences to

Package: linux-image-*

Run

apt-get update

Try to install again. If you still get the error, check

aptitude why-not linux-image-3.16.0-0.bpo.4-amd64
Share:
8,607

Related videos on Youtube

Tim Stoop
Author by

Tim Stoop

Updated on September 18, 2022

Comments

  • Tim Stoop
    Tim Stoop 3 months

    I've got the following pinnings set:

    Package: linux-image-amd64
    Pin: release a=wheezy-backports
    Pin-Priority: 1001
    Package: *
    Pin: release a=wheezy-backports
    Pin-Priority: 499
    

    I get the following error:

    $ sudo apt-get install linux-image-amd64
    Reading package lists... Done
    Building dependency tree       
    Reading state information... Done
    Some packages could not be installed. This may mean that you have
    requested an impossible situation or if you are using the unstable
    distribution that some required packages have not yet been created
    or been moved out of Incoming.
    The following information may help to resolve the situation:
    The following packages have unmet dependencies:
     linux-image-amd64 : Depends: linux-image-3.16.0-0.bpo.4-amd64 but it is not going to   be installed
    E: Unable to correct problems, you have held broken packages.
    

    The policies seem to be correct:

    $ apt-cache policy linux-image-amd64
    linux-image-amd64:
      Installed: 3.2+46
      Candidate: 3.16+63~bpo70+1
      Package pin: 3.16+63~bpo70+1
      Version table:
         3.16+63~bpo70+1 1001
            499 http://ftp.nl.debian.org/debian/ wheezy-backports/main amd64 Packages
     *** 3.2+46 1001
            500 http://ftp.nl.debian.org/debian/ wheezy/main amd64 Packages
            100 /var/lib/dpkg/status
    $ apt-cache policy linux-image-3.16.0-0.bpo.4-amd64
    linux-image-3.16.0-0.bpo.4-amd64:
      Installed: (none)
      Candidate: 3.16.7-ckt4-3~bpo70+1
      Version table:
         3.16.7-ckt4-3~bpo70+1 0
            499 http://ftp.nl.debian.org/debian/ wheezy-backports/main amd64 Packages
    

    So I don't get the error. What am I doing wrong?

    I'm trying to use puppet to upgrade all Wheezy machines to the backports kernel (a reboot streak is planned), which is why I want to solve it correctly. I could manually login to all servers to run:

    sudo apt-get install -t wheezy-backports linux-image-amd64
    

    Which works, but is not as convenient.

    UPDATE

    As requested:

    /etc/apt/preferences.d$ cat linux-image 
    Package: linux-image-*
    Pin: release a=wheezy-backports
    Pin-Priority: 1001
    Package: *
    Pin: release a=wheezy-backports
    Pin-Priority: 499
    /etc/apt/preferences.d$ sudo apt-get update
    Hit http://debian.kumina.nl wheezy-kumina Release.gpg
    .
    .
    .
    Reading package lists... Done
    /etc/apt/preferences.d$ sudo apt-get install linux-image-amd64
    Reading package lists... Done
    Building dependency tree       
    Reading state information... Done
    Some packages could not be installed. This may mean that you have
    requested an impossible situation or if you are using the unstable
    distribution that some required packages have not yet been created
    or been moved out of Incoming.
    The following information may help to resolve the situation:
    The following packages have unmet dependencies:
     linux-image-amd64 : Depends: linux-image-3.16.0-0.bpo.4-amd64 but it is not going to be installed
    E: Unable to correct problems, you have held broken packages.
    /etc/apt/preferences.d$ aptitude why-not linux-image-3.16.0-0.bpo.4-amd64
    Unable to find a reason to remove linux-image-3.16.0-0.bpo.4-amd64.
    
  • Tim Stoop
    Tim Stoop almost 8 years
    Doesn't work. Added the command output to my question.
  • Cedric Knight
    Cedric Knight almost 8 years
    OK, thanks for trying. I'd be inclined to use the aptitude resolver interactively to identify the problem. Maybe linux-* to include other dependencies? Is it feasible to add APT::Default-Release "wheezy-backports"; to the configuration temporarily?
  • Tim Stoop
    Tim Stoop almost 8 years
    We actually remove aptitude from all our servers, I had to install it to do the test. So that won't be feasible. Adding the config option temporarily is not feasible and, honestly, not really a nice solution :) I'm pretty sure this should be doable with apt-get without any hacks, just can't figure out how!
  • Tim Stoop
    Tim Stoop almost 8 years
    What troubles in the future would you expect with this?
  • Sandokas
    Sandokas almost 8 years
    - if debian has engineered its system to work one way I "suppose" they have their good reason ;) (see backports Instructions) - pinning the entire source you give a higher priority to a wide number of packages being recompiled from testing and unstable and not tested as the stable couterparts - the philosophy using -t is to let the package to install its dependencies .. "do strictly what you need" .. - its a while list approach: do what you are aware to do, when you need
  • Tim Stoop
    Tim Stoop almost 8 years
    That's already explained in my question...
  • Tim Stoop
    Tim Stoop almost 8 years
    Wouldn't those be pulled in as well when I install it via 'apt-get -t wheezy-backports install linux-image-amd64'?
  • stimur
    stimur almost 8 years
    It will, if you enforce it with -t wheezy-backports. But this enforcement will also install all newer versions for not installed dependencies from backports as well, regardless of fact if stable versions are enough or not. If you need to install only limited and controlled number of packages from backports, you need to track the dependencies and manually pin them. If you don't care about that, sure go ahead and do full -t *backports.
  • Tim Stoop
    Tim Stoop almost 8 years
    Ah got it, you're right. I needed to fetch initramfs-tools from backports as well and then it can be done automatically. Thanks!
  • John Blackberry
    John Blackberry almost 7 years
    This doesn't have enough upvotes