RPMCONF(8)
π RPMCONF(8) π
okay bestie, sit down, hydrate, because this is the rpmconf manual page and it is literally the tool that saves you from yourself after a package upgrade. it lives in section 8 of the manual (that's the sysadmin section, iykyk) π«Ά
β¨ NAME β¨
rpmconf β this tool searches for .rpmnew, .rpmsave and .rpmorig files and asks you what to do with them: keep the current version, replace with the previous version, or review the diff.
that's it. that's the whole vibe. it finds the awkward leftovers and makes you decide. it's giving therapist for your config files. π
πΈ SYNOPSIS πΈ
rpmconf [ options ... ]
[ -a, --all ]
[ -o<package>, --owner=<package> ]
[ -f<type> --frontend=<type> ]
[ --root <ROOT> ]
[ -c, --clean ]
[ -d, --debug ]
[ -D, --diff ]
[ -t, --test ]
[ -u, --unattended [<MODE>] ]
[ -x, --exclude <DIRECTORY> ]
[ -Z ]
yes the brackets are doing a lot. they're allowed. every single one of them is here, no cap. β¨
π¦ DESCRIPTION π¦
so here's the tea π β rpmconf goes and searches for all the config files of a given package (or, if you don't specify, all installed packages) and checks whether any matching .rpmsave, .rpmnew or .rpmorig files are hanging around.
if they are? it asks you. bestie, it asks. you get to choose whether you want to:
- keep the current version,
- revert to the previous version, or
- diff the two files.
and then the unwanted file gets deleted. poof. gone. iconic. π
bonus feature, and it's lowkey amazing: rpmconf can also handle application configuration β if the application supports rpmconf. here's the deal:
- the application must have an executable file present in
/usr/share/rpmconf/ - that file must have the same name as the package itself
- and the package must own that file
the executable must be idempotent, meaning subsequent executions should have no effect (running it twice = running it once, no extra drama). ideally it should be a Puppet/Chef/Ansible/CFengine manifest. β¨
no fr, idempotent is not optional. if your executable is out here causing chaos on the second run, that's on you. π
π OPTIONS π
-a,--allβ check configuration files of all packages. the full sweep. main character energy. π-o<package>,--owner=<package>β check only the configuration files of the given package. just one. very focused. very demure. π-f<type>,--frontend=<type>β define which frontend should be used for merging. the valid options are:vimdiff,gvimdiff,diffuse,kdiff3,meld,sdiffandenv. when set toenv, the command to use is taken from the environment variable$MERGE. the default isenv. π-c,--cleanβ find all.rpmnewand.rpmsavefiles in/etcand/vardirectories. it lists all files belonging to installed packages, then writes all files which are orphaned, and asks if it is safe to delete them. yes bestie, it asks before it deletes. consent is key. π«Ά-d,--debugβ dry run. instead of executing an action (moving or deleting a file), the filename will be echoed to standard output. however β and this is important β the executable for merging of configuration files will still be executed. also beware that this option is position-sensitive: only actions specified after--debugare dry-run. for example,--all --debug --cleanwill run--cleanin dry run mode but not--all. read that again. fr fr. π-D,--diffβ non-interactive diff mode. this option works with--ownerand--all. useful to audit config files after package upgrades. no prompting, just receipts. π₯--root ROOTβ specifies an alternative installroot, relative to where all packages are installed. πΈ-t,--testβ just test existence of files to merge. if there is some file to merge, thenrpmconfwill print it and exit with status code5. if there are none to merge, then exit with status code0. cute little exit codes, they mean things. β-u [<MODE>],--unattended [<MODE>]β unattended mode. do not prompt user, but perform actions based on MODE. the valid options are:use_maintainer,use_your,default.use_maintainerreplaces existing configuration files with.rpmnewfiles and deletes leftover.rpmsaveand.rpmorigfiles.use_yourdeletes.rpmnewfiles and replaces existing configuration files with.rpmsavefiles.defaultdoesuse_yourfor.rpmnewfiles anduse_maintainerfor.rpmsavefiles, as are the default prompts in interactive mode.
specifying MODE is optional, default is used by default. π
-V,--versionβ displayrpmconfversion. this option expects that this script is installed as an rpm package. π-x,--exclude [DIRECTORY [DIRECTORY ...]]β exclude DIRECTORY from checking. applies only for-c. π«-Zβ display the SELinux contexts of the old and new files. Note: if you choose to install the.rpmsaveversion, it is copied to the original filename, therefore its SELinux context is reset to the default value specified by SELinux policy. π§
π SEE ALSO π
go read it. sibling energy. β¨
π AUTHORS π
Miroslav SuchΓ½ <msuchy@redhat.com>
ty for your service king π«‘
and that's a wrap bestie!! this was Version 0.2, dated 20 September 2025, and it's the RPMCONF(8) page β go forth and merge responsibly, and remember: --debug is position-sensitive, do not come for me when your --all actually ran. π
β¨π¦
π¦ where this page comes from
- fedora 43: rpmconf 1.1.12-4.fc43 Β· GPL-3.0-only
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms