我已经设置了以下的PINEN:
Package: linux-image-amd64 Pin: release a=wheezy-backports Pin-Priority: 1001 Package: * Pin: release a=wheezy-backports Pin-Priority: 499
我得到以下错误:
$ 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.
这些政策似乎是正确的:
$ 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
所以我没有得到错误。 我究竟做错了什么?
我试图使用puppet将所有Wheezy机器升级到backports内核(重新启动计划),这就是为什么我要正确解决它的原因。 我可以手动login到所有服务器运行:
sudo apt-get install -t wheezy-backports linux-image-amd64
哪个工作,但不是那么方便。
UPDATE
按照要求:
/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.
检查该软件包依赖于什么以及这些依赖关系需要什么。 例如,我看到我的机器:
#apt-cache show linux-image-amd64 Package: linux-image-amd64 <snip> Depends: linux-image-3.16.0-4-amd64
和
# 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
检查是否从backports取得依赖关系。
sudo apt-get install -t wheezy-backports linux-image-amd64
我知道是不方便的,但是今后没有麻烦是正确的做法(恕我直言,当然)
将首选项的首行更改为
Package: linux-image-*
跑
apt-get update
尝试再次安装。 如果仍然出现错误,请检查
aptitude why-not linux-image-3.16.0-0.bpo.4-amd64