[packagekit] PackageKit Apt backend

Sebastian Heinlein glatzor at ubuntu.com
Wed Oct 17 08:52:22 PDT 2007

Am Mittwoch, den 17.10.2007, 16:15 +0200 schrieb Tom Parker: 
> On 17/10/2007, Sebastian Heinlein <glatzor at ubuntu.com> wrote:
> > I just made a rough look at the current apt backend of PackageKit, I was
> > wondering why you use sqlite to create another package cache? Are the
> > speed improvements so dramatically?
> Yes, the speed improvements are dramatic. The problem is that
> PackageKit currently loads and unloads the backends for each task.
> Major reason for this is to remove as much of the task management
> stuff from backends as possible - they are created purely for a single
> task, and they can avoid having to deal with multiple tasks running at
> the same time, which is all dealt with by the PackageKit core.
> The problem is that libapt (which I was using before) has to do a
> *vast* amount of text parsing (sifting through everything in
> /var/lib/apt/lists) every time it initialises which means there's a
> 2-3 second delay (even on my pretty fast machine) before we can even
> start thinking about performing a query, and for searches this is
> annoying. The sqlite cache drops this to <1s (~0.7s on my system
> currently, but there's probably optimisations still available), which
> makes cool things like find-as-you-type feasible.

You can avoid opening the dependency cache even in the python bindings:

#!/usr/bin/env python
import apt_pkg
from apt.progress import OpProgress

searchTerm = "xterm"

progress = OpProgress()
cache = apt_pkg.GetCache(progress)

for pkg in cache.Packages:
    if pkg.Name == searchTerm:
        print pkg.Name 

The time output running the whole python script:

real    0m0.551s
user    0m0.504s
sys     0m0.036s

Additionally find as you type searches should always have got a short delay
before performing the search. So if we take a dealy of an half second we
would end up with a response time of about one second. That seems to be ok.

> * do get_depends (which may involve designing a simple package
> resolver - which should not delete anything - again with the simple
> cases. If you can't resolve without deleting, fail)

There is no need to reinvent the whell. Take a look at
apt.cache.Cache._depcache.DelCount after marking your changes.
Furthermore AppInstall.AppInstall.tryInstall() of gnome-app-install my
provide a good base.

> > Furthermore we are going to discuss the implementation of PackageKit at
> > our next UDS in Boston:
> >
> > https://wiki.ubuntu.com/PackageKit
> Funky. I'm currently resident in the Netherlands, so I can't be along
> for that [...]

I think that there will be a way to attend the session using VoIP.


-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 189 bytes
Desc: Dies ist ein digital signierter Nachrichtenteil
URL: <http://lists.freedesktop.org/archives/packagekit/attachments/20071017/0af39cdc/attachment-0004.pgp>

More information about the PackageKit mailing list