lpf man page

lpf — Build non-redistributable rpms


lpf <command> [options]


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, unset DISPLAY.

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



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).


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.


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).



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


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


Installed lpf packages data.


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


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

See Also


   Gtk-based graphical frontend to lpf.


   Source, FSM description, issue tracker, etc.


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


   Used to run privileged operations.


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

Referenced By