Fix works fine:

root@bionic:~# python3 -c "import apt; c=apt.Cache(); p=c['aptitude']; 
c.open(); p.mark_install()"
Traceback (most recent call last):
  File "<string>", line 1, in <module>
  File "/usr/lib/python3/dist-packages/apt/package.py", line 1469, in 
mark_install
    self._pcache._depcache.mark_install(self._pkg, auto_inst, from_user)
ValueError: Object of different cache passed as argument to apt_pkg.DepCache 
method
root@bionic:~# dpkg -i python3-apt_1.6.1_amd64.deb 
(Reading database ... 29845 files and directories currently installed.)
Preparing to unpack python3-apt_1.6.1_amd64.deb ...
Unpacking python3-apt (1.6.1) over (1.6.0) ...
Setting up python3-apt (1.6.1) ...
root@bionic:~# python3 -c "import apt; c=apt.Cache(); p=c['aptitude']; 
c.open(); p.mark_install()"

another check:

root@bionic:~# python3 -c "import apt; c=apt.Cache(); p=c['aptitude']; 
c.open(); p.mark_delete(); print(c.get_changes()); c.commit()"
[<Package: name:'aptitude' architecture='amd64' id:257>]
(Reading database ... 29852 files and directories currently installed.)
Removing aptitude (0.8.10-6ubuntu1) ...


** Tags removed: verification-needed verification-needed-bionic
** Tags added: verification-done verification-done-bionic

-- 
You received this bug notification because you are a member of Ubuntu
Touch seeded packages, which is subscribed to python-apt in Ubuntu.
https://bugs.launchpad.net/bugs/1773316

Title:
  Object of different cache passed as argument to apt_pkg.DepCache
  method

Status in python-apt package in Ubuntu:
  Fix Released
Status in update-manager package in Ubuntu:
  Won't Fix
Status in python-apt source package in Bionic:
  Fix Committed
Status in update-manager source package in Bionic:
  Won't Fix
Status in python-apt source package in Cosmic:
  Fix Released
Status in update-manager source package in Cosmic:
  Won't Fix

Bug description:
  [Impact]
  python-apt 1.6 raises an exception when objects of an old cache are passed to 
a apt_pkg.DepCache methods for a different cache. Prior to that, those would 
either segfault, succeed, or silently operate on a different object, as they 
use package/version ids, and e.g. two different packages in the old and new 
cache might have the same id.

  With 1.6.1, we introduce a remapping algorithm that remaps objects of
  apt.Cache() when calling apt.Cache.open(), allowing old objects to be
  used after reopening, as long as they exist in the new cache. If they
  don't exist in the new cache, apt_pkg.CacheMismatchError will be
  raised from the apt_pkg layer.

  [Test case]
  import apt
  c=apt.Cache()
  p=c["apt"]
  c.open()
  p.mark_install()

  [Regression potential]
  Could be remapping to wrong items which would cause us to install a wrong 
version, for example. Compared to pre-bionic, bionic is a regression already, 
though, and any regression caused here is less important than
  what we have now.

  [Original bug report]
  The Ubuntu Error Tracker has been receiving reports about a problem regarding 
update-manager.  This problem was most recently seen with package version 
1:18.04.11, the problem page at 
https://errors.ubuntu.com/problem/e6ff7b5c385c512b7933497ad895c8a19ed063b2 
contains more details, including versions of packages affected, stacktrace or 
traceback, and individual crash reports.
  If you do not have access to the Ubuntu Error Tracker and are a software 
developer, you can request it at http://forms.canonical.com/reports/.

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/python-apt/+bug/1773316/+subscriptions

-- 
Mailing list: https://launchpad.net/~touch-packages
Post to     : touch-packages@lists.launchpad.net
Unsubscribe : https://launchpad.net/~touch-packages
More help   : https://help.launchpad.net/ListHelp

Reply via email to