lpf - Man Page

Build non-redistributable rpms

Synopsis

lpf [-n] <command> [options]

Description

Builds and installs non-redistributable rpms by downloading binaries, building and installing a local rpm.

lpf handles lpf packages named like lpf-spotify-client and target packages which is spotify-client in this case. The lpf package is basically just a thin recipe how to build the target package which is the useful one. Target packages are by definition non-redistributable.

The basic usage is

$ lpf update

which will build and install any not yet installed target packages corresponding to installed lpf packages. This also works to update target packages to match updated lpf packages.

lpf packages are visible as an icon in the GUI. Clicking this icon is the same as running 'lpf update' on the corresponding package.

To run privileged operations lpf uses sudo(8). See Privileged Commands below.

If DISPLAY is defined in the environment, lpf uses GUI dialogs for user interaction even when invoked from command line. To force CLI only operation, use the -n flag or unset DISPLAY.

lpf has a notification system for packages needing to be updated. See Notifications below.

Commands

list:

list all installed lpf packages.

update [package]:

Interactive approve, build and install of given package or all packages.

state [package]:

List package state or state of all packages.

scan [package]:

Triage a given package or all packages and update their status.

approve <package>:

Approve a package in state approve-wait.

build [package]:

Build given package or all packages in state build-wait

rebuild [package]:

Force re-install of a package where previous installation failed.

install <package>:

Install rpms for given package.

reset <package>

Remove all temporary files for package, set state as after fresh install.

log [package]:

Display logs from last build for package, or just last build.

mute <package>

Disable notification messages for package.

unmute <package>

Enable notifications messages for a possibly muted package.

notify [message]

Print given message or a default  one if there are lpf packages in need of action - typically in need to be updated.

spec <package>:

Copy spec file for package to current directory.

srpm <package>:

Build a srpm file for package in current directory.

scan-removal <package>:

Triage package with the assumption that existing target package is removed (use in spec scriptlets).

version

Print version data.

Privileged Commands

All builds run by lpf is using the pkg-build user which owns the files under /var/lib/lpf. lpf uses sudo(8) to run as pkg-build when building and to run as root when installing. lpf installs a sudo config file  which allows users in the pkg-build group to make all required operations.

If possible, lpf uses sudo also to add current user to the pkg-build group. If the sudoers configuration doesn't allow current user to do this, pkexec(1) is used instead. This is invoked on the first run. To avoid add user manually using:

   $ su -c "usermod -a -G pkg-build $USER"

After this, log out and in again before proceeding.

Notifications

lpf is capable of notifying user when lpf packages are in need of an update e. g., when the lpf package has been updated. Notifications are created when a package enters any state besides 'OK'. They are cleared once the package enters the 'OK' state.

GUI notifications could be enabled from the lpf-gui(1) main window. This installs a daemon listening to package state changes for current user, displaying gui messages as appropriate. The GUI allows muting messages for specific packages.

Command line notifications could be enabled by adding code to e. g.,
~/.bashlogin. lpf notify which will output a message similar to the well-known "You have mail" if lpf packages needs to be updated. Using the 'mute' and 'unmute' commands pin-pointed packages can be ignored in this context (this also affects the GUI messages).

Files

/etc/sudoers.d/pkg-build

Sudo configuration, allows users in pkg-build group to perform several otherwise restricted operations.

/var/lib/lpf

Temporary files: logs, state, built rpm packages etc.

/usr/share/lpf/packages

Installed lpf packages data.

/var/run/user/$UID/lpf

User-specific files: mute files, display locks etc.

License

This is open source software under the MIT license, see the LICENSE file.

See Also

lpf-gui(1)

   Gtk-based graphical frontend to lpf.

https://github.com/leamas/lpf

   Source, FSM description, issue tracker, etc.

sudoers(5)

   Format for /etc/sudoers.d/pkg-build

sudo(8)

   Used to run privileged operations.

pkexec(1)

   Used to add user to pkg-build group at initial run.

Referenced By

lpf-gui(1).