[packagekit] PackageKit Apt backend
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:
from apt.progress import OpProgress
searchTerm = "xterm"
progress = OpProgress()
cache = apt_pkg.GetCache(progress)
for pkg in cache.Packages:
if pkg.Name == searchTerm:
The time output running the whole python script:
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
Size: 189 bytes
Desc: Dies ist ein digital signierter Nachrichtenteil
More information about the PackageKit