rpmrebuild_plugins - Man Page

is an engine to expand rpmrebuild functionality.


rpmrebuild [non-plugins-option] [plugins-option] <packagename>


rpmrebuild itself try to do it's best to reconstruct rpm package as close to original as possible.

rpmrebuild plugins's aim is opposite - somehow change rebuilded rpm.

Rpmrebuild Without Plugins

Without plugins process of rpm rebuilding looks like:

query -

Query rpm to be rebuilded for the different pieces of information.

concatenate -

Create from these pieces specfile.

build -

Use specfile to build rpm.

Rpmrebuild with Plugins

With plugins process of rpm rebuilding looks like:

query -

Query rpm to be rebuilded for the different pieces of information.

change parts -

Change parts of the spec created by query.

concatenate -

Create specfile from the pieces.

change whole -

Change concatenated specfile.

build -

use specfile to build rpm.

Specfile Pieces

Query" queries for the following information:


Specfile Concatenation

Concatenate" create 'full' specfile from the pieces. It do following:

add AutoReq / AutoProv tags
add BuildRoot tag
add some defines to adjust rpm's behaviour.
double all '%' - it'll prevent rpm from attempting expand %something as macro.
add '%description' before description
add '%files' before files
add '%changelog' before changelog

Plugins Types

rpm building (or rebuilding) process has two inputs: specfile and package's files under buildroot directory. So, there are two plugins type:

- for specfile modification (exemple : demo.plug).

- for files (under buildroot) modification (exemple : demofiles.plug).

Plugin's Interface

Plugins are executed AFTER rpm package is queried and BEFORE new package is rebuilded in the order specified on the command line.

Exit status

Any plugin should exit with status 0 on success, and any other value on failure. Failed plugin will immediately terminate whole rpmrebuild.

Environment variables

all plugins get following environment variables:


directory for plugin's temporaries files. plugin no need remove this directory - rpmrebuild will care.


directory with plugins.


if 'yes' missing files commented in the 'files' part of specfile


if 'yes' permission owner and group in the part file were taken from filesystem, otherwise - from rpm's database.


if 'yes' rpmrebuild will produce warning for filenames with glob characters.


This variable is set to $RPMREBUILD_PLUGINS_DIR:$PATH


Contains long option (without --) which was used to invoke plugin.


For plugins modifying files under buildroot set to buildroot. For other plugins - empty.

stdin and stdout

Plugins for specfile modification (i.e., invoked with --spec-change-*) got "source" spec file from stdin and have to write resulting spec file to stdout.

Plugin's Examples

Some plugins are given as examples :

demofiles.plug (change-files) : a "dummy" plugin to show what can be done with a file plugin

demo.plug (change-spec-*) : a "dummy" plugin to show how spec plugins work

uniq.plug (change-spec) : a very simple "real" plugin to sort and clean duplicate spec lines

file2pacDep.plug (change-spec-requires) : a "real" plugin to convert file dependencies to package dependencies

nodoc.plug (change-spec-files): a "real" plugin to remove documentation from a package

set_tag.plug (change-spec-preamble) : a "real" plugin to change a tag in spec file

unset_tag.plug (change-spec-preamble) : a "real" plugin to comment a tag in spec file

Plugins' Manpages Filename Convention

If you are going to write plugin (and manpage for it) it's strongly recommended than manpage's file looks like name.1rrp - this way command 'man -k rrp' will provide list of all rpmrebuild's plugins installed. Please note, that makewhatis should be run before newly installed manpages will be available for 'man -k rrp'


Eric Gerbier <eric.gerbier@tutanota.com>
Valery Reznic <valery_reznic@users.sourceforge.net>

See <URL:http://rpmrebuild.sourceforge.net/>.

See Also

rpm(8), rpmbuild(8), rpmrebuild(1), demofiles.plug(1), demo.plug(1), nodoc.plug(1), uniq.plug(1), file2pacDep.plug(1), set_tag.plug(1), unset_tag.plug(1)
'man -k rrp' for plugins specific manpages

Referenced By

compat_digest.plug.1rrp(1), demofiles.plug.1rrp(1), demo.plug.1rrp(1), exclude_file.plug.1rrp(1), file2pacDep.plug.1rrp(1), nodoc.plug.1rrp(1), rpmrebuild(1), set_tag.plug.1rrp(1), uniq.plug.1rrp(1), un_prelink.plug.1rrp(1), unset_tag.plug.1rrp(1).

2.17 Valery Reznic rpm tools