[Bug 1078544] Re: python-aptdaemon: upgrading marks auto-installed packages as manual

Adam Conrad adconrad at 0c3.net
Sat Jan 12 02:56:55 UTC 2013


Hello Daniel, or anyone else affected,

Accepted aptdaemon into precise-proposed. The package will build now and
be available at
http://launchpad.net/ubuntu/+source/aptdaemon/0.43+bzr805-0ubuntu8 in a
few hours, and then in the -proposed repository.

Please help us by testing this new package.  See
https://wiki.ubuntu.com/Testing/EnableProposed for documentation how to
enable and use -proposed.  Your feedback will aid us getting this update
out to other Ubuntu users.

If this package fixes the bug for you, please add a comment to this bug,
mentioning the version of the package you tested, and change the tag
from verification-needed to verification-done. If it does not fix the
bug for you, please add a comment stating that, and change the tag to
verification-failed.  In either case, details of your testing will help
us make a better decision.

Further information regarding the verification process can be found at
https://wiki.ubuntu.com/QATeam/PerformingSRUVerification .  Thank you in
advance!

** Changed in: aptdaemon (Ubuntu Precise)
       Status: Triaged => Fix Committed

** Tags added: verification-needed

** Changed in: aptdaemon (Ubuntu Quantal)
       Status: Triaged => Fix Committed

-- 
You received this bug notification because you are a member of Ubuntu
Foundations Bugs, which is subscribed to aptdaemon in Ubuntu.
https://bugs.launchpad.net/bugs/1078544

Title:
  python-aptdaemon: upgrading marks auto-installed packages as manual

Status in Aptdaemon:
  Fix Committed
Status in “aptdaemon” package in Ubuntu:
  Fix Released
Status in “aptdaemon” source package in Precise:
  Fix Committed
Status in “aptdaemon” source package in Quantal:
  Fix Committed
Status in “aptdaemon” source package in Raring:
  Fix Released
Status in “aptdaemon” package in Debian:
  New

Bug description:
  [Originally reported on bugs.d.o]

  Package: python-aptdaemon
  Version: 0.45-1

  An obvious error in worker.py(_mark_packages_for_upgrade), introduced
  in revision 336[1]:

  -            auto = not self._cache._depcache.IsAutoInstalled(pkg._pkg)
  -            pkg.markInstall(False, True, auto)
  +            pkg.mark_install(False, True, pkg.is_auto_installed)

  causes previously auto-installed packages to be marked manually
  installed when upgraded with upgrade_packages or commit_packages.  The
  error is then propagated to _mark_packages_for_downgrade, introduced
  in revision 449.1.3[2].

  Python-apt has package.py(mark_upgrade) which uses “not
  pkg.is_auto_installed” as from_user, the final argument to
  mark_install.  This suggests the original code is intended.  However,
  it is noted that from_user is also influential in
  pkgDepCache::IsModeChangeOk (and others) to determine whether, e.g., a
  hold should be ignored.  It is therefore appropriate to either expose
  from_user to the calling code, or determine whether an application
  requesting specific packages to be upgraded should expect that this
  will override any holds.

  Either way, at least one of the attached patches applies.

  [1] http://bazaar.launchpad.net/~aptdaemon-developers/aptdaemon/main/revision/336
  [2] http://bazaar.launchpad.net/~aptdaemon-developers/aptdaemon/main/revision/449.1.3

  [Impact]

  Applications that use python-aptdaemon, such as software-center and
  update-manager, will trigger this bug when upgrading packages, causing
  those packages to lose their auto-installed status.  Over time, less
  and less packages will be considered for autoremoval and the system
  will become cluttered with unused old libraries and other
  dependencies.

  [Test Case, using update-manager]

  * Identify an upgradeable, auto-installed package:

  $ aptitude search -F '%p' '~U~M'
  …
  udev                                                                            
  $ PKG=udev
  $ grep-dctrl -P -X $PKG /var/lib/apt/extended_states 
  Package: udev
  Architecture: i386
  Auto-Installed: 1

  $ apt-cache policy $PKG
  udev:
    Installed: 175-3.1
    Candidate: 175-7
    Version table:
       175-7 0
          500 http://ftp.iinet.net.au/debian/debian/ sid/main i386 Packages
   *** 175-3.1 0
          100 /var/lib/dpkg/status

  * Run update-manager (which uses python-aptdaemon by default):

  $ sudo update-manager

  * Unmark all changes, then mark only the package that was identified.
  This issue may not be relevent when performing a complete upgrade.

  * Apply changes.  Quit update-manager.

  * Confirm that the package is no longer auto-installed.

  $ grep-dctrl -P -X $PKG /var/lib/apt/extended_states
  Package: udev
  Architecture: i386
  Auto-Installed: 0

  [Regression Potential]

  The code in python-aptdaemon is *obviously* wrong.  Patch is small.

To manage notifications about this bug go to:
https://bugs.launchpad.net/aptdaemon/+bug/1078544/+subscriptions




More information about the foundations-bugs mailing list