           OFFLINE UPDATES USING PACKAGEKIT AND SYSTEMD

This functionality adds the offline updates feature to PackageKit as
described in the following URL:

https://www.freedesktop.org/software/systemd/man/systemd.offline-updates.html

What to do if you're a backend:

 * If the transaction_flags contain PREPARE then download all the
   metadata and packages for the transaction, but don't actually apply
   the transaction.

What to do if you're a frontend:

 * If the /var/lib/PackageKit/prepared-update file exists then offer
   the user to:
    - Restart & Install Updates
    - Suspend
   rather than just:
    - Suspend
 * If the user clicks "Restart & Install Updates" then execute
   'pkcon offline-trigger' and then restart the computer the usual
   way.

On the next reboot, the updates will be installed, and the computer
will be restarted again.

The /var/lib/PackageKit/prepared-update file will be automatically
removed if the offline update succeeded, but the offline update will
only be attempted once.

The /var/lib/PackageKit/offline-update-competed file will be created
once the '/usr/libexec/pk-offline-update' program has been run by
systemd. For failure, the file will contain the following:

"""
[PackageKit Offline Update Results]
Success=false
ErrorCode=missing-gpg-signature
ErrorDetails="The GPG signature 0xDEADBEEF is not installed"
"""

For success, the file will contain the following:

"""
[PackageKit Offline Update Results]
Success=true
Role=update-packages
Packages=gimp;2.10.34-1.fc38;x86_64;updates,bash;5.2.15-3.fc38;x86_64;updates
"""

________________________________________________________________________

                    TESTING OFFLINE UPDATES

 *  Ensure powertop and colorhug-client are installed and the system is
    othewise up to date. Ensure PackageKit-1.0.0 or later is installed.
 *  Downgrade the powertop and colorhug-client packages on your system so
    that you have exactly two updates when you do 'pkcon get-updates'
 *  Download the new powertop update with:
    pkcon --only-download update powertop
 *  Observe there are no PolicyKit "Authentication Required" dialogs
    shown as the command completes.
 *  Ensure /var/lib/PackageKit/prepared-update contains just the powertop
    package in "prepared_ids" variable.
    [You can also use 'pkcon offline-get-prepared' to do the same thing]
 *  Download the new colorhug-client update with:
    pkcon --only-download update colorhug-client
 *  Ensure /var/lib/PackageKit/prepared-update contains both powertop and
    colorhug-client packages in "prepared_ids" variable.
 *  Run 'pkcon offline-trigger' and confirm that the "/system-update"
    symlink exists.
 *  Check that /var/lib/PackageKit/offline-update-action is "reboot"
 *  Run 'sudo PK_OFFLINE_UPDATE_TEST=1 /usr/libexec/pk-offline-update'
    and observe that the two updates are applied
 *  Confirm that /var/lib/PackageKit/prepared-update has been deleted
 *  Confirm that /var/lib/PackageKit/offline-update-competed exists,
    contains the 2 updated packages in "Packages" variable, and no error
    messages have been logged.
    [You can also use 'pkcon offline-status' to do the same thing]
 *  Downgrade powertop and colorhug-client again, and do:
    pkcon --only-download update powertop colorhug-client
 *  Run 'pkcon offline-trigger'
 *  Reboot, and observe that the updates are applied in the special
    packagekit-offline-update.service with plymouth going from 0% to 100%
 *  Confirm that the system is rebooted into a running system that has
    has the updates applied.
