Bug#387218: apt-get install does upgrade for Priority -1 package.
Package: apt
Version: 0.6.45
Using the following /etc/apt/sources.list file:
deb http://ftp.nluug.nl/pub/os/Linux/distr/debian/ etch main contrib non-free
deb-src http://ftp.nluug.nl/pub/os/Linux/distr/debian/ etch main contrib non-free
deb http://security.debian.org/ etch/updates main
deb-src http://security.debian.org/ etch/updates main
And the following /etc/apt/apt.conf file:
APT::Authentication::TrustCDROM "true";
Acquire::http::Proxy "false";
And no /etc/apt/preferences file, the following commands result
(correctly) in:
$ apt-cache policy linux-kernel-headers
linux-kernel-headers:
Installed: 2.6.17.6-1
Candidate: 2.6.17.10-3
Version table:
2.6.17.10-3 0
500 http://ftp.nluug.nl etch/main Packages
*** 2.6.17.6-1 0
100 /var/lib/dpkg/status
$ apt-get --dry-run install linux-kernel-headers
Reading package lists... Done
Building dependency tree... Done
The following packages will be upgraded:
linux-kernel-headers
1 upgraded, 0 newly installed, 0 to remove and 50 not upgraded.
Inst linux-kernel-headers [2.6.17.6-1] (2.6.17.10-3 Debian:testing)
Conf linux-kernel-headers (2.6.17.10-3 Debian:testing)
When next an /etc/apt/preferences file is created
with the following contents:
Package: linux-kernel-headers
Pin: version 2.6.17.10-3
Pin-Priority: 50
One would expect to NOT see an upgrade, as this would set
the priority of the Candidate to very low. However, the
result of using this preferences file is:
$ apt-get --dry-run install linux-kernel-headers
Reading package lists... Done
Building dependency tree... Done
The following packages will be upgraded:
linux-kernel-headers
1 upgraded, 0 newly installed, 0 to remove and 50 not upgraded.
Inst linux-kernel-headers [2.6.17.6-1] (2.6.17.10-3 Debian:testing)
Conf linux-kernel-headers (2.6.17.10-3 Debian:testing)
Moreover, when - instead - using the following preferences file:
Package: linux-kernel-headers
Pin: origin ftp.nluug.nl
Pin-Priority: 50
The result is STILL that it gets installed!
$ apt-get --dry-run install linux-kernel-headers
Reading package lists... Done
Building dependency tree... Done
The following packages will be upgraded:
linux-kernel-headers
1 upgraded, 0 newly installed, 0 to remove and 50 not upgraded.
Inst linux-kernel-headers [2.6.17.6-1] (2.6.17.10-3 Debian:testing)
Conf linux-kernel-headers (2.6.17.10-3 Debian:testing)
This has to be a bug, because next when we only change the Package line
to refer to all packages instead of just linux-kernel-headers, thus:
Package: *
Pin: origin ftp.nluug.nl
Pin-Priority: 50
The result is finally:
$ apt-get --dry-run install linux-kernel-headers
Reading package lists... Done
Building dependency tree... Done
linux-kernel-headers is already the newest version.
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
and
$ apt-cache policy linux-kernel-headers
linux-kernel-headers:
Installed: 2.6.17.6-1
Candidate: 2.6.17.6-1
Version table:
2.6.17.10-3 0
50 http://ftp.nluug.nl etch/main Packages
*** 2.6.17.6-1 0
100 /var/lib/dpkg/status
The latter can be understood since 50 < 100.
Using,
Package: linux-kernel-headers
Pin: origin ftp.nluug.nl
Pin-Priority: 50
gives, by the way, the following with apt-cache policy:
apt-cache policy linux-kernel-headers
linux-kernel-headers:
Installed: 2.6.17.6-1
Candidate: 2.6.17.10-3
Package pin: 2.6.17.10-3
Version table:
2.6.17.10-3 50
500 http://ftp.nluug.nl etch/main Packages
*** 2.6.17.6-1 50
100 /var/lib/dpkg/status
Why is there still a '500' there now?
Doesn't the 500 refer to version 2.6.17.10-3 (of
package linux-kernel-headers!)? That 500 is both,
on the line of origin http://ftp.nluug.nl, and
below (indented) of version 2.6.17.10-3, and thus
package linux-kernel-headers. The priority should
be 50!
As a side note, I really don't understand why
the Pin-Priority of '50' is shown on two lines
behind the versions 2.6.17.10-3 and 2.6.17.6-1:
If we use the previous /etc/apt/preferences:
Package: linux-kernel-headers
Pin: version 2.6.17.10-3
Pin-Priority: 50
where the priority ONLY refers to version 2.6.17.10-3,
we STILL get:
$ apt-cache policy linux-kernel-headers
linux-kernel-headers:
Installed: 2.6.17.6-1
Candidate: 2.6.17.10-3
Package pin: 2.6.17.10-3
Version table:
2.6.17.10-3 50
500 http://ftp.nluug.nl etch/main Packages
*** 2.6.17.6-1 50
100 /var/lib/dpkg/status
where the '500' still causes the install, I assume.
Now the '50' is still printed after both versions...
Imho, this output should be:
linux-kernel-headers:
Installed: 2.6.17.6-1
Candidate: 2.6.17.10-3
Package pin: 2.6.17.10-3
Version table:
2.6.17.10-3
50 http://ftp.nluug.nl etch/main Packages
*** 2.6.17.6-1
100 /var/lib/dpkg/status
-
Carlo Wood <carlo@alinoe.com>
Reply to: