Smart backend in PackageKit

Anders F Björklund afb at algonet.se
Wed Sep 3 01:13:53 PDT 2008


As you probably know, PackageKit (http://packagekit.org)
is an abstract frontend to various package managing tools.
Along with the distro-supported apt/yum/urpmi/zypp/<etc>,
now Smart is also available as a backend for PackageKit.
http://packagekit.org/pk-intro.html

While PackageKit 0.3.0 had an "incomplete" Smart backend,
the support in release 0.3.1 was restored to working order
and will be much improved in the upcoming PackageKit 0.3.2
like it is currently available from the git repository...
http://gitweb.freedesktop.org/?p=packagekit.git


Some of the features are missing, though:
http://www.packagekit.org/pk-matrix.html

* Cancel -
   this has now been (more or less) implemented,
   so that you can cancel downloads and queries.
   "Loading cache" still says "Requesting data"

* GetDistroUpgrades and pk_get_distro_id -
   Smart doesn't have the concept of a distro,
   so no "update-manager-core" or "preupgrade"
   (and wonder what distro Mac OS X would be)

* GetUpdateDetail -
   https://bugs.launchpad.net/smart/+bug/253902
   Only has the security/bugfix/errata flags now,
   which was a development dead-end (wrong place)

* InstallSignature -
   https://bugs.launchpad.net/smart/+bug/245643
   Checking signatures on packages and metadata
   not added for all channels and backends yet.

* Rollback -
   Not enough details on what this does just yet

* ServicePack -
   Not enough details on what this does just yet

* Visible -
   Not enough details on what this does just yet

* Supported (filter) -
   Without a distro, it's hard to say which of
   the channels are "supported" and which not.

Some of the features are a little quirky:

* GetDetails
   Since the package names varies between the
   different packaging systems of Smart, you
   can currently only search in "native" ones.

* GetDepends
   Currently this returns some installed and
   duplicated packages, so it looks a bit odd.
   e.g. "you'll require glibc, glibc, ..."

* GetFiles
   The pathlist is only populated for installed
   packages, so no searching in rpm-md metadata
   for instance - unless something requires it.

* Free (filter)
   This uses the new PkgInfo field getLicense()
   https://bugs.launchpad.net/smart/+bug/254150
   But it doesn't check for instance the channel.

And some are just making educated guesses:

* GetRepoList
   The filtering on which of the channels are
   "development" is rather ad-hoc (name-based).

* SearchGroup
   This uses the usual Smart package getGroup,
   and means it's rather limited for e.g. RPM.

* Development  (filter)
   This uses the same package heuristics as
   apt/yum does, so it's a little arbitrary.

* GUI (filter)
   This uses the same package heuristics as
   apt/yum does, so it's a little arbitrary.


PackageKit has a lot of requirements with new versions,
so it's best suited for high-end GNOME or KDE desktops.
For smaller dependencies, i.e. Python, you can still use
Smart directly and optionally the GTK+ or Qt interfaces.

And there is still a reason to use the Smart application
for more demanding usage, just like you can use Synaptic
for APT or Yum Extender for Yum to give some examples...
But now there's a new frontend, that avoids using root.

--anders




More information about the Smart mailing list