[packagekit] Bundles

Richard Hughes hughsient at gmail.com
Wed Jun 4 08:55:41 PDT 2008


We talked very recently about one click install files, and how people
were much more comfortable installing distro provided packages when the
distro provides a package natively.

There's one use case that I'm very interested in, and that is getting
new users with the correct environment to build and start hacking on
software.

For instance, on www.packagekit.org in the FAQ section, we can have an
entry:

Q: What development files do you need to compile PackageKit?
A: Click <a href="packagekit.bundle>here</a> to get started.

Now, this .bundle file would be handled by a PackageKit helper
(gpk-install-bundle) that would parse this file and cause the
appropriate packages to be installed if they are not already installed.

This rocks as we can get GTK+, Xorg hackers up to speed with the minimum
of fuss. It also lets people put links on webpages to "install all the
stuff you need" when writing a "how to use a scanner in GIMP" howto.

So, what does a .bundle file look like?

____________________________________________________________________________________
[PackageKit Bundle]

# Just a package on all versions of fedora that can provide the dependency.
# If there are multiple packages then the user will be asked to choose
InstallProvides(fedora)=audio/QCELP

# Just for Fedora 9, install two development files
InstallPackages(fedora-9)=glib2-devel;PolicyKit-gnome-devel

# On any distro, install the package with this file
InstallFiles=/usr/bin/fontinst

# For each architecture on Fedora 8, install one of the two different compat files
InstallFiles(fedora-8-i686)=/usr/lib/pango/1.6.0/modules/pango-arabic-fc.so
InstallFiles(fedora-8-x64)=/usr/lib64/pango/1.6.0/modules/pango-arabic-fc.so
____________________________________________________________________________________

You'll notice the bit in the ()'s - this lets a distro fine tune the
packagename, where for instance in Debian it's called policykit and
Fedora PolicyKit.

The bit's in between the () is the distro-id - which we also use in
other places already. PK will process all the entries that apply, with
the depth specified by the number of dashes.

There's also no version checking - intentionally - the distro should be
specified and have the correct data. If there's an optional package not
in earlier versions then you can do something like this:

____________________________________________________________________________________
[PackageKit Bundle]

# Fedora 9 does not have Unique
InstallPackages(fedora-9)=glib2-devel;gvfs-devel;dbus-glib-devel;NetworkManager-glib-devel;PolicyKit-devel;gtk2-devel;libsexy-devel;libglade2-devel;libnotify-devel;PolicyKit-gnome-devel

# Rawhide is fedora 9.90
InstallPackages(fedora-9.90)=glib2-devel;gvfs-devel;dbus-glib-devel;NetworkManager-glib-devel;PolicyKit-devel;gtk2-devel;libsexy-devel;libglade2-devel;libnotify-devel;PolicyKit-gnome-devel;unique-devel
____________________________________________________________________________________

There's also no description of the bundle that needs localising, or any
kind of introduction that needs translating and verifying - they are
just lists of packages, files and provides that might be useful. All the
translations come from the distro metadata, and it's up to the user to
verify the package lists that are asked to be installed.

Note: this isn't designed to replace one click install, it just does
something that is similar in a different way. We can layer on a OCI
layer later (if people want to) for stuff not in core repos when we add
RepoAdd and RepoRemove.

Nothing is in git yet, although I have a working prototype in a local
branch. Comments and suggestions welcome.

Richard.





More information about the PackageKit mailing list