nishant kumar | 22 Jun 19:49 2016

Updating already installed package

I've installed example-1.0.rpm package via "pkcon install-local".
Now I've got example-2.0.rpm package via "pkcon install-local" which uninstalls the already installed package  and reports success.

I cannot create my own repository (at this moment) and cannot host package on Fedora official repository either for some reason. So given these facts whats the right way of upgrading package?

This is sample output after installing example-2.0.rpm (when example-2.0.rpm is already installed):

$ pkcon -y install-local example-2.0.rpm
Installing files              [=========================]         
Waiting for authentication    [=========================]         
Waiting in queue              [=========================]         
Starting                      [=========================]         
Resolving dependencies        [=========================]         
Installing packages           [=========================]         
Downloading packages          [=========================]         
Installing packages           [=========================]         
Finished                      [=========================]         
Downloaded      example-7136.2016.0527.1-1.x86_64 (PK_TMP_DIR)                    Example prg
Installed       example-7136.2016.0527.1-1.x86_64 (PK_TMP_DIR)                             Example prg

PackageKit mailing list
PackageKit <at>
Rohan Garg | 26 May 20:48 2016

Deferred package removal

I had a quick discussion on IRC about this yesterday and was told to
post to the mailing list.

Feature :
A way to remove packages on reboot similar to the offline-trigger
functionality that upgrades packages

Use Case :
I have software that only needs to run once on first boot to configure
the system, and should get removed on reboot ( essentially a OEM app
to setup the installed system with a new username and password on
first boot )

Rohan Garg
PackageKit mailing list
PackageKit <at>
René Genz | 25 May 02:04 2016

questions about documentation, clean cache, security only updates


thanks a lot for all your effort put into PackageKit. :)

I have some questions. I put them first and background information follows.
We are using Fedora 22 x86_64 and will upgrade to Fedora 24 x86_64.
Different desktop environments (Xfce, GNOME, KDE) are used.
Nvidia drivers from RPMFusion are in use.

question 1:
Where to find the full documentation of pkmon and pkcon?

In `man pkcon` and `man pkmon` you can read:
"The programs are documented fully on"

I cannot find the documents.

question 2:
How do I clean the cache at "/var/cache/PackageKit"?

As you know:
$ pkcon update --only-download

saves RPM files to:

On the other hand:
$ sudo dnf update --downloadonly -y

saves files to:

I can clean the cache of dnf manually with:
$ sudo dnf clean all

I could not find out how to clean the cache of pkcon.
$ sudo rm -rf /var/cache/PackageKit/${FEDORAVERSION}
seems to be too blunt to me.

question 3:
Is it possible to have:
a) apply only security updates (see dnf-automatic note below) and
b) automatic offline updates
with pkcon?

I can create a timer unit in systemd that triggers a service unit that would execute the commands for (a).
When a computer user reboots the computer the rest will happen automatically in offline mode.

In Fedora 22 I have been using dnf-automatic for updates. What I do like in dnf-automatic config file:

you can define to download and apply only security updates with:
upgrade_type = security

(I want to avoid problems due to unnessary patches.)

The drivers from RPMFusion are omitted.
They miss the 'security update' information as far as I could find out.
Due to kernel updates sometimes kernel modules from the driver are not compatible anymore.
Hence I modified dnf-automatic.service. I added at the end:
ExecStart=/usr/bin/dnf update -y *nvidia*

dnf-automatic uses online updates.
By and large no major problem.
However, after one update I loged out and the display turned black with a blinking cursor.
The situation did not recover after several minutes.
The solution was: Ctrl+Alt+F2 ; log in as root ; reboot machine
As far as I remember the logs mentioned something about 'incompatible ABI'. On of the problems described here:

In order to avoid this problem in future I want to utilize offline updates in future.

question 4:
(related to question 3)
Should one abandon the notion of sticking to "security only" updates and apply all updates?

question 5:
When users leave their computer running for a long time (several months) offline updates will not help in
deploy of updates.
Asking for more frequent reboots is one solution.
Another is online updates with dnf-automatic and risking running into problems again.
I am unsure. Any opinions?


Kind regards,
PackageKit mailing list
PackageKit <at>
Lucas Moura | 26 Apr 20:51 2016

[GSOC] Recommender Systems


My name is Lucas Moura and I am Google Summer of Code Student working for the Debian project. My summer project is related to AppRecommender, a Debian package recommender system:

This application works by creating an user profile based on the user installed packages, this profile is basically the most significant terms on all user packages. With this profile built, AppRecommender uses Xapian to query for Debian packages and display the closest ones with the query.

Currently, this application can only be used via terminal access. However, my gsoc project is to change that, and allow AppRecommender to be integrated into graphical package managers:

I originally thought about integrating it with PackageKit, since this would allow some famous graphical package managers to actually show the recommendations, such as Gnome-software.

However, since AppRecommender only works for Debian and Ubuntu distros, I would like to ask what would be the best approach to integrate AppRecommender with PackageKit and the opinion of the application maintainers with this idea.

Lucas Moura
PackageKit mailing list
PackageKit <at>
Richard Hughes | 20 Apr 10:27 2016

PackageKit 1.1.1 released!

Version 1.1.1
Released: 2016-04-20

 - alpm: port to g_autoptr() (Christian Hesse)
 - hif: Set ALLOW_DOWNGRADE flag for all transactions (Kalev Lember)
 - zypp: Enforce formatting input as string (Neal Gompa)

New Features:
 - Add UpdateTriggered / UpgradeTriggered DBus properties (Kalev Lember)
 - Add TriggerUpgrade DBus method handling (Kalev Lember)

 - Emit UpdatesChanges when installing packages (Richard Hughes)
 - Fix GIR annotations for progress callbacks (Matthias Klumpp)
 - Increase the number of packages that can be resolved (Richard Hughes)
 - Point offline update/upgrade trigger to the prepared update (Kalev Lember)
 - Unlink any existing offline update triggers before creating (Kalev Lember)

Tarballs available here:

PackageKit mailing list
PackageKit <at>
Ponomarenko Andrey | 12 Mar 13:51 2016

ABI report


I've started to maintain ABI changes report for the PackageKit library here:

The page represents all ABI changes since 0.7.6 up to 1.1.0 version of the PackageKit and is updated every
other day. Hope the report will help Linux maintainers to be aware of ABI changes, added/removed symbols
and SONAME bumps in the library. Please let me know if there are any false positives in the report (I'll
remove them or add a comment).

The reports of the old-version tracker for the older releases of the library are still available at

Thank you.
PackageKit mailing list
PackageKit <at>
lordofgame | 19 Feb 19:06 2016

Question about offline update process


this is a question that has been bothering me for some time, that I
finally wanted to ask. The current process of offline updates goes
something like this:

1) Reboot the system into "offline update mode"
2) Install updates
3) Reboot system into default mode again

But wouldn't it be more efficient if in step 1) it just changes the
runlevel to "offline update mode"? Like, do a "systemctl isolate" (or whatever the target is named). In this case
systemd would shutdown almost all system services and it would be just
as good as a reboot.
Under certain circumstances you could even omit the second reboot, for
example if the kernel wasn't updated. Systemd itself has the
daemon-reexec command which supposedly reexecs PID 1, so it would be
enough to execute that command.

Maybe there is something I'm missing. It would be greatly appreciated,
if somebody could take the time to explain this to me.

PackageKit mailing list
PackageKit <at>
Richard Hughes | 12 Feb 21:06 2016

PackageKit 1.1.0 released!

Version 1.1.0
Released: 2016-02-12

 - alpm: Update for pacman 5.x API change (Christian Hesse)
 - alpm: Remove versioning support (Christian Hesse)
 - aptcc: Always append the repository name to the pkgid data (Matthias Klumpp)
 - aptcc: Always use "installed" as data when the pkg is installed
(Matthias Klumpp)
 - aptcc: Do not use deprecated API (Matthias Klumpp)
 - aptcc: Require C++11 support (Matthias Klumpp)
 - aptcc: Store "packagekit role='%s'" as the apt cmdline (Michael Vogt)
 - hif: Add support for UpgradeSystem (Kalev Lember)
 - hif: Don't store repos in global data (Kalev Lember)
 - hif: Factor out pk_backend_job_set_context (Kalev Lember)
 - hif: Factor out pk_backend_setup_hif_context() (Kalev Lember)
 - hif: Save cache files in versioned directories (Kalev Lember)
 - hif: Save release ver in sack cache hash key (Kalev Lember)
 - hif: Split out UpgradeSystem handling to a separate function (Kalev Lember)
 - hif: Store the currently used HifContext in job private data (Kalev Lember)
 - zypp: Avoid media access when testing for cd/dvd URL scheme (Michael Andres)
 - zypp: Fix build (Dominique Leuenberger)
 - zypp: Use libzypp's arch compatibility check (Thomas Perl)

New Features:
 - Add client side API for triggering offline system upgrades (Kalev Lember)
 - Add getters for PkProgress (Robert Ancell)
 - Add pk_get_distro_version_id (Kalev Lember)
 - Add system upgrade API to PkTask (Kalev Lember)
 - Port to g_autoptr() (Richard Hughes, Kalev Lember)
 - Remove the PackageKit browser plugin (Richard Hughes)
 - Use the GLib network monitoring support (Richard Hughes)

 - Add missing description for obsoleted packages (Kalev Lember)
 - Add support for offline system upgrades (Kalev Lember)
 - Allow to enable or disable systemd units for offline update (Christian Hesse)
 - Correctly store file descriptor from logind (#94070) (Benjamin Berg)
 - Do not crash on GetPrepared when there are no offline updates (Rui Matos)
 - Do not crash on transaction database corruption (Richard Hughes)
 - Do not crash when parsing a very broken transaction log (Richard Hughes)
 - Do not install offline update related files if disabled (Christian Hesse)
 - Emit PropertiesChanged for UpgradeSystem transaction flags (Kalev Lember)
 - Fix download-size-remaining property type (Robert Ancell)
 - Fix various minor memory leaks (Matthias Klumpp)
 - Make transaction get_proxy() return TRUE for no proxy settings
(Matthias Klumpp)
 - Minor fixes in command_not_found_handle{,r}() for bash and zsh (Carsten Hey)
 - Relax validation performed on input strings passed to backends
(Richard Hughes)
 - Require dbus.socket for offline update (Christian Hesse)
 - Set PACKAGEKIT_CALLER_UID environment (Michael Vogt)
 - Sort package names when printing out simulation (Kalev Lember)
 - Use new PkTask API for system upgrades (Kalev Lember)

Tarballs available here:

PackageKit mailing list
PackageKit <at>
Akshay Takalkar | 12 Feb 17:23 2016

To know about Packagekit

I am Akshay Takalkar, your application is very cool and easy to understand. I am student and working on application devlopment in Gnome. I have devloped application in linux but it is not powerful and  error handler as your application. I also want to upload my application to gnome.

 I want to know  about your Packagekit software my questions are:

1) Which GUI application did you use for development?
2) Which programming language is been used?
3) What is "glue" file?
4) How did you launch your application in Gnome

PackageKit mailing list
PackageKit <at>
Richard Hughes | 27 Nov 15:55 2015

PackageKit 1.0.11 released!

Version 1.0.11
Released: 2015-11-27

 - By popular demand, reintroduce the UpgradeSystem method (Richard Hughes)

 - aptcc: Compile with APT 1.1 (Matthias Klumpp)
 - aptcc: Create really random temporary directories (Matthias Klumpp)
 - aptcc: Ensure proxy and frontend-socket aren't used if they are
NULL (Matthias Klumpp)
 - aptcc: Fix comment spelling mistakes (Robert Ancell)
 - aptcc: Fix formatting and kill some old cruft (Matthias Klumpp)
 - aptcc: Fix several compiler warnings (Matthias Klumpp)
 - aptcc: Make use of the new APT-internal method for fetching
changelogs (Matthias Klumpp)
 - aptcc: Remove dead code and make source filenames consistent
(Matthias Klumpp)
 - alpm: Make pk_alpm_pkg_build_list() more resiliant to failure
(Richard Hughes)
 - dummy: Implement simulating UpgradeSystem and respect the
transaction flags (Richard Hughes)
 - hif: Add support for HTTP proxy (Marek Marczykowski-Górecki)
 - hif: Improve RefreshCache progress updates (Kalev Lember)
 - portage: add helper to change portage settings (Gilles Dartiguelongue)
 - portage: cosmetics (Gilles Dartiguelongue)
 - portage: do not redefine builtin license (Gilles Dartiguelongue)
 - portage: do not refetch package listing for no reason (Gilles Dartiguelongue)
 - portage: drop unused imports (Gilles Dartiguelongue)
 - portage: enhance get_repo_list function (Gilles Dartiguelongue)
 - portage: fix a typo (Gilles Dartiguelongue)
 - portage: fix a typo in restoring license settings (Gilles Dartiguelongue)
 - portage: fix exception handling to be python2.7+ compatible (Gilles
 - portage: fix step percentage computation (Gilles Dartiguelongue)
 - portage: fix typo python backend detection (Gilles Dartiguelongue)
 - portage: initialize licenses variable (Gilles Dartiguelongue)
 - portage: remove compatibility with older portage (Gilles Dartiguelongue)
 - portage: remove useless instruction (Gilles Dartiguelongue)
 - portage: retrieve EAPI and KEYWORDS before calling setcpv method
(Gilles Dartiguelongue)
 - portage: simplify _get_cpv_slotted with collections module (Gilles
 - portage: simplify _get_metadata (Gilles Dartiguelongue)
 - portage: sort imports according to PEP8 (Gilles Dartiguelongue)
 - portage: update layman API usage to >=2 (Gilles Dartiguelongue)
 - portage: use PackageKitProgress to ease progress steps
manipulations (Gilles Dartiguelongue)
 - portage: use PackagekitProgress as an iterable (Gilles Dartiguelongue)
 - portage: use python idioms (Gilles Dartiguelongue)
 - python: make PackagekitProgress an Iterable (Gilles Dartiguelongue)
 - python: set steps on PackagekitProgress instanciation (Gilles Dartiguelongue)
 - zypp: Raise priority of ZYPP stack updates if a security patch is
shadowed (bsc#951592) (Michael Andres)

New Features:
 - Allow the use of variadic functions in vala (Corentin Noël)

 - Make pk_details_get_size documentation more specific (Aleix Pol)

Tarballs available here:

PackageKit mailing list
PackageKit <at>
郭云鹤 | 16 Oct 12:47 2015

One-click installation from XML file

Hi, I am developing a web service that provides free software package information. Since it is a web application, users cannot install the software. I think the "Install" button can be a download link to a special XML, which can be read by native package manager to install the package.

Can PackageKit have a feature to read '*.pkx' files:


openSUSE has implemented such a function to its YaST tool.


郭云鹤(Guo Yunhe)
PackageKit mailing list
PackageKit <at>