Bug#599523: [update-manager-gnome] wants to downgrade packages without any notice

Zoran Dželajlija jelly+bugs.debian.org at srk.fer.hr
Thu Oct 21 21:25:54 UTC 2010


Hi,

Quoting Evgeni Golov (evgeni at debian.org):
> Hi Zoran,
> 
> I fear your problem is your pinning.

I believe the problem is update-manager does not behave like
apt-preferences(5) says APT (or presumably any package manager) should. 
Some reasoning below.

> > $ apt-cache policy libgl1-mesa-dri
> > libgl1-mesa-dri:
> >   Installed: 7.8.2-2
> >   Candidate: 7.7.1-4
> >   Package pin: 7.7.1-4
> >   Version table:
> >  *** 7.8.2-2 990
> >         200 http://debian.iskon.hr/debian/ experimental/main i386 Packages
> >         100 /var/lib/dpkg/status
> >      7.7.1-4 990
> >         700 http://debian.iskon.hr/debian/ testing/main i386 Packages
> >         300 http://debian.iskon.hr/debian/ unstable/main i386 Packages
> >      7.0.3-7 990
> >         400 http://debian.iskon.hr/debian/ stable/main i386 Packages
> 
> Candidate is 7.7.1-4, NOT your wanted 7.8.2-2.

Indeed, but a downgrade must not be attempted at priority 700 or even 990. 
The relevant passage from apt_preferences(5) seem to be:

[cut]
If the target release has been specified then APT uses the following
algorithm to set the priorities of the versions of a package. Assign:

priority 1
  to the versions coming from archives which in their Release files are
  marked as "NotAutomatic: yes" like the debian experimental archive.

priority 100
  to the version that is already installed (if any).

priority 500
  to the versions that are not installed and do not belong to the target
  release.

priority 990
  to the versions that are not installed and belong to the target release.


APT then applies the following rules, listed in order of precedence,
to determine which version of a package to install.

- Never downgrade unless the priority of an available version exceeds 1000. 
  ("Downgrading" is installing a less recent version of a package in place
  of a more recent version.  Note that none of APT's default priorities
  exceeds 1000; such high priorities can only be set in the preferences
  file.  Note also that downgrading a package can be risky.)

- Install the highest priority version.

- If two or more versions have the same priority, install the most recent
  one (that is, the one with the higher version number).

- If two or more versions have the same priority and version number but
  either the packages differ in some of their metadata or the --reinstall
  option is given, install the uninstalled one.
[cut]

Since the newer package was explicitely installed manually, and the highest
pinned, target release package does _not_ exceed 1000, I believe a downgrade
_must not_ be attempted at all.  Both apt-get and aptitude binaries
interpret the situation in this manner and don't try to downgrade, as
opposed to update-manager.

In addition to fixing this behavior, I strongly suggest update-manager
should warn when a downgrade is attempted or proposed _even_ when the true
conditions for a downgrade are met, because the packaging policies do not
account for downgrades and things are allowed to break.  If you want, I can
clone or file a separate bug for absence of such a warning.

> Can you paste the output of `apt-cache policy` and the content of
> /etc/apt/preferences and /etc/apt/preferences.d/*

Sure, attaching outputs of "apt-cache policy" and "cat /etc/apt/preferences
/etc/apt/preferences.d/*".  My preferences probably are somewhat broken
according to "apt-cache policy libgl-mesa-dri".  They don't do what I
expected them to -- that is, make the latest libgl1-mesa-dri from either
testing, unstable or experimental the prefered candidate.  However I don't
see a way how they could enable a downgrade.

Regards,
Zoran
-------------- next part --------------
$ apt-cache policy
  ================
Package files:
 100 /var/lib/dpkg/status
     release a=now
 500 http://download.virtualbox.org/virtualbox/debian/ lenny/non-free i386 Packages
     release o=Oracle Corporation,n=lenny,l=Oracle Corporation,c=non-free
     origin download.virtualbox.org
 500 http://download.skype.com/linux/repos/debian/ stable/non-free i386 Packages
     origin download.skype.com
 400 http://deb.opera.com/opera-snapshot/ stable/non-free i386 Packages
     release o=Opera Software ASA,a=stable,n=lenny,l=The Opera web browser,c=non-free
     origin deb.opera.com
 400 http://deb.opera.com/opera/ stable/non-free i386 Packages
     release o=Opera Software ASA,a=stable,n=lenny,l=The Opera web browser,c=non-free
     origin deb.opera.com
 500 file:/home/jelly/mnt/burek/packages/wine/ ./ Packages
 500 file:/home/jelly/packages/ ./ Packages
 300 http://www.debian-multimedia.org/ sid/non-free i386 Packages
     release v=None,o=Unofficial Multimedia Packages,a=unstable,n=sid,l=Unofficial Multimedia Packages,c=non-free
     origin www.debian-multimedia.org
 300 http://www.debian-multimedia.org/ sid/main i386 Packages
     release v=None,o=Unofficial Multimedia Packages,a=unstable,n=sid,l=Unofficial Multimedia Packages,c=main
     origin www.debian-multimedia.org
 500 http://www.lamaresh.net/apt/ squeeze/main i386 Packages
     release o=Wine Squeeze Repository,a=squeeze,n=squeeze,l=Wine Squeeze Repository,c=main
     origin www.lamaresh.net
 700 http://security.debian.org/ squeeze/updates/non-free i386 Packages
     release v=None,o=Debian,a=testing,n=squeeze,l=Debian-Security,c=non-free
     origin security.debian.org
 700 http://security.debian.org/ squeeze/updates/contrib i386 Packages
     release v=None,o=Debian,a=testing,n=squeeze,l=Debian-Security,c=contrib
     origin security.debian.org
 700 http://security.debian.org/ squeeze/updates/main i386 Packages
     release v=None,o=Debian,a=testing,n=squeeze,l=Debian-Security,c=main
     origin security.debian.org
 200 http://debian.iskon.hr/debian/ experimental/non-free i386 Packages
     release o=Debian,a=experimental,n=experimental,l=Debian,c=non-free
     origin debian.iskon.hr
 200 http://debian.iskon.hr/debian/ experimental/contrib i386 Packages
     release o=Debian,a=experimental,n=experimental,l=Debian,c=contrib
     origin debian.iskon.hr
 200 http://debian.iskon.hr/debian/ experimental/main i386 Packages
     release o=Debian,a=experimental,n=experimental,l=Debian,c=main
     origin debian.iskon.hr
 300 http://debian.iskon.hr/debian/ unstable/non-free i386 Packages
     release o=Debian,a=unstable,n=sid,l=Debian,c=non-free
     origin debian.iskon.hr
 300 http://debian.iskon.hr/debian/ unstable/contrib i386 Packages
     release o=Debian,a=unstable,n=sid,l=Debian,c=contrib
     origin debian.iskon.hr
 300 http://debian.iskon.hr/debian/ unstable/main i386 Packages
     release o=Debian,a=unstable,n=sid,l=Debian,c=main
     origin debian.iskon.hr
 700 http://debian.iskon.hr/debian/ testing/non-free i386 Packages
     release o=Debian,a=testing,n=squeeze,l=Debian,c=non-free
     origin debian.iskon.hr
 700 http://debian.iskon.hr/debian/ testing/contrib i386 Packages
     release o=Debian,a=testing,n=squeeze,l=Debian,c=contrib
     origin debian.iskon.hr
 700 http://debian.iskon.hr/debian/ testing/main i386 Packages
     release o=Debian,a=testing,n=squeeze,l=Debian,c=main
     origin debian.iskon.hr
 400 http://debian.iskon.hr/debian/ stable/non-free i386 Packages
     release v=5.0.6,o=Debian,a=stable,n=lenny,l=Debian,c=non-free
     origin debian.iskon.hr
 400 http://debian.iskon.hr/debian/ stable/contrib i386 Packages
     release v=5.0.6,o=Debian,a=stable,n=lenny,l=Debian,c=contrib
     origin debian.iskon.hr
 400 http://debian.iskon.hr/debian/ stable/main i386 Packages
     release v=5.0.6,o=Debian,a=stable,n=lenny,l=Debian,c=main
     origin debian.iskon.hr
Pinned packages:
     mplayer -> (not found)
     xserver-xorg-core -> 2:1.7.7-8
     midori -> 0.2.7-1.1
     amarok -> 2.3.1-1
     wine -> 1.1.24-2
     libgl1-mesa-dri -> 7.7.1-4
     xserver-xorg-video-intel -> 2:2.12.0+shadow-2
$ 
-------------- next part --------------
cat /etc/apt/preferences
========================
Package: midori
Pin: release a=unstable
Pin-Priority: 900

Package: amarok
Pin: release a=unstable
Pin-Priority: 710

Package: wine
Pin: release a=unstable
Pin-Priority: 900

Package: wine
Pin: release a=experimental
Pin-Priority: 900

Package: xserver-xorg-video-intel
Pin: release a=experimental
Pin-Priority: 900

Package: xserver-xorg-video-intel
Pin: release a=unstable
Pin-Priority: 900

Package: libgl1-mesa-dri
Pin: release a=experimental
Pin-Priority: 990

Package: libgl1-mesa-dri
Pin: release a=unstable
Pin-Priority: 990

Package: libgl1-mesa-dri
Pin: release a=testing
Pin-Priority: 990

Package: xserver-xorg-core
Pin: release a=experimental
Pin-Priority: 900

Package: xserver-xorg-core
Pin: release a=unstable
Pin-Priority: 900

Package: mplayer
Pin: version 1:*
Pin-Priority: 990

Package: *
Pin: release a=stable
Pin-Priority: 400

Package: *
Pin: release a=testing
Pin-Priority: 700

Package: *
Pin: release a=unstable
Pin-Priority: 300

Package: *
Pin: release a=experimental
Pin-Priority: 200

cat /etc/apt/preferences.d/*
============================
zsh: no matches found: /etc/apt/preferences.d/*


More information about the pkg-gnome-maintainers mailing list