| What is PackageKit? |

Back to the main page

# What is PackageKit?

PackageKit is a system designed to make installing and updating software on your computer easier. The primary design goal is to unify all the software graphical tools used in different distributions, and use some of the latest technology like PolicyKit.

| If you're easily bored, checkout the presentation or the video I prepared for FOSDEM 2008 and skip the rest of this page.

The actual nuts-and-bolts distro tool (dnf, apt, etc) is used by PackageKit using compiled and scripted helpers. PackageKit isn't meant to replace these tools, instead providing a common set of abstractions that can be used by standard GUI and text mode package managers.

PackageKit itself is a system activated daemon called `packagekitd`. Being system activated means that it's only being run when the user is using a text mode or graphical tool, and quits when it's no longer being used. This means we don't delay the boot sequence or session startup and don't consume memory when not being used.

| By default, PackageKit uses PolicyKit for user authentication. This means that you, as an admin, can specify with fine-grained control what your users can and cannot do. For instance, an admin could specify that unprivileged users can update the system and do searching, but are not allowed to install or remove packages. For home users it's typical to ask the user for their own, or the administrator's `root` password. With PolicyKit, all these options are possible.

Use cases for PackageKit exist for the following scenarios:

- Boot time security updates
- Installing files automatically, e.g. openoffice-clipart
- Installing new features, e.g. smart-card readers
- Allowing unprivileged users to install software in a corporate build
- Opening unknown file formats
- Removing dependencies for files

What PackageKit is not:

- A huge daemon with lots of dependencies.
- Targeted to a particular architecture or platform.
- Produced by any one vendor.

Formally, PackageKit is a D-Bus abstraction layer that allows the session user to manage packages in a secure way using a cross-distro, cross-architecture API.

Back to the main page