PackageKit Backend for Ubuntu Software Center

This page describes work done by AlexEftimie during GSoC 2011, on adding a PackageKit backend to SoftwareCenter.

Internals and Feature Status

The PackageKit backend has been added as an alternative to the current AptDaemon / AptCache backend.

Several code refactoring changes have been made, but at the user level, only a --packagekit-backend command line switch is visible.

When run with --packagekit-backend, the channel pane will be populated only with generic channels loaded from database (this means no PPA, no For Purchase).

What works

  • Getting packages, showing them in categories; getting detailed information about a package;
  • Installing/Removing a package, and also handling dependencies changed
  • Watching transaction progress and canceling transactions

What's left

  • performance issues

    Viewing installed software takes a significant amount of time, due to calling resolve for each package. This must be fixed by caching an all software query; also update-software-center is slow, for the same reason.

  • package the appdata.xml or provide it via repository

    Currently, this file is generated manually from a set of .desktop files, using XML parsing tool at

  • package/distribute icons

    Currently, icon names for software programs are fetched from appdata.xml, but icon files are not distributed

  • fix category view

    The category separation in SoftwareCenter relies on XML; the category hierarchy specified there does not correspond exactly with categories that are extracted from .desktop files via appdata.xml. Either the menu file or the application info generator must be modified, for a perfect match between indexed applications (database) and shown categories (gui).

  • proper package origin handling

    When populating database using the PK backend, no package origin information will be stored; instead all packages will be nested under a generic Provided by DISTRONAME channel. A better solution should be find for getting friendly origin information from PK.


Grab lp:software-center and ./software-center-gtk3 --packagekit-backend

First run

  • download a test AppStream application information xml, from

  • copy it into /usr/share/app-info/xmls/ (create the folder if it doesn't exist)

  • issue update-software-center --use-packagekit --appstream-only [--local] to have the database populated with data from the xml previously downloaded

  • run python build to generate a local ./build/ directory with resources



  • there is a packaging request on openFATE here (it also includes link to my personal OBS project)

Contact details

  • For any questions, check with AlexEftimie, alex3f on Freenode.

SoftwareCenter/PackagekitBackend (last edited 2011-08-19 13:26:03 by 109)