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