RPMLINT(1)
π rpmlint(1) β the manual, but make it make sense β¨
okay bestie, sit down, grab a boba π§, because we're about to talk about rpmlint β the User Commands girlie who checks common problems in rpm packages. yes, that rpmlint. she's iconic, she's thorough, and she's about to be your new best friend (if she isn't already π).
πΈ NAME πΈ
rpmlint β check common problems in rpm packages. that's it, that's the vibe check π
π¦ SYNOPSIS π¦
rpmlint [OPTION]... [FILE|PACKAGE]...
β¨ DESCRIPTION β¨
so rpmlint is a tool for checking common errors in rpm packages. literally her whole job. she can be used to test individual packages and spec files before uploading, or to check an entire distribution π. by default all applicable checks are processed, but if you're feeling picky you can run specific checks by using command line parameters. main character energy fr.
FILE can be a rpm package file, a spec file, or a directory. in case of a directory, it is recursively searched for rpm and spec files to check (she goes digging, no cap π). and the special value - results in standard input being read and treated as (single) spec file content. cute, right?
PACKAGE is the name of an installed package or a glob(7) pattern to match installed packages β unless a file by that name exists. like, if there's an actual file with that name, that wins. respect the filesystem π«Ά.
π OPTIONS π
-i,--infoβ display explanations for reported messages. she's not just gonna tell you something's wrong, she'll explain why π-I,--explain=messageidβ display explanations for the specified message identifiers and exit. this option may be given multiple times π-c,--check=checkβ run only the specified check. this option may be given multiple times to specify multiple checks to run.checkis the name of the Python module (as it would be given to Python's import statement) containing the check. so like, only the checks you actually want. choose your fighter π₯-a,--allβ check all installed packages. every single one. no skips π-C,--checkdir=dirβ insertdirto the front of the list of paths to load checks from, unless it is already in the list. the default list of check dirs typically contains only/usr/share/rpmlint. directories in the check dirs list are also inserted to the front of the list of paths to load Python modules from when the check process begins π-h,--helpβ display summary of command line options and exit. the classic "help me help you" moment π«Ά-v,--verboseβ operate in verbose mode. she will talk. a lot. affectionately π£οΈ-E,--extractdir=dirβ base directory for extracted temporary files, default is what Python'stempfile.gettempdir()returns π-V,--versionβ display version information and exit π-n,--noexceptionβ ignore output filters. raw output only, no filter, we die like legends π--rawout=fileβ write unfiltered output tofileβοΈ-f,--file=conffileβ load user configuration from the specified file, default is$XDG_CONFIG_HOME/rpmlint(~/.config/rpmlintif$XDG_CONFIG_HOMEis empty or not set) π-o,--option=valueβ override a configuration option.valueis a whitespace separated string, first word of which is the option name to set, and the Pythoneval()return value for the rest is set as the value for the option. passing only an option name is treated as ifNonewas passed as its value. see the file"config"shipped with rpmlint for the list of configuration options and their types. for example:
-o "NetworkEnabled True"
-o "Distribution 'My favorite distro'"
-o "MaxLineLength 80"
-o "ValidShells ('/bin/sh', '/bin/bash')"
β οΈ CAVEATS β οΈ
okay real talk bestie, listen up π«Ά: all checks do not apply to all argument types. for best check coverage, run rpmlint on all source and binary packages your build produces.
the set of checks rpmlint runs on source packages is a superset of the one for plain specfiles. the set of checks run for installed binary packages is a superset of the one for uninstalled binary package files. and the source and binary package check sets are quite different. so like, they're not the same girlie, don't assume π
π FILES π
/usr/share/rpmlint/config,/usr/share/rpmlint/config.*β built-in configuration. when invoked assomeprefix-rpmlint,/usr/share/rpmlint/config.someprefixis used if it exists, otherwise/usr/share/rpmlint/configβ¨/etc/rpmlint/*configβ system wide configuration π$XDG_CONFIG_HOME/rpmlintor~/.config/rpmlintβ user configuration π
π¦ EXIT CODES π¦
0β no errors. we love a clean run πΈ1β unspecified error. vague, mysterious, unbothered π2β interrupted π64β one or more error message printed π’66β badness threshold exceeded π¨ (you crossed the line, bestie)
π AUTHOR π
originally written by FrΓ©dΓ©ric Lepied, modified and maintained by numerous contributors since. shoutout to the whole group chat π«Ά
π COPYRIGHT π
this program is licensed under the GNU General Public License, see the file COPYING included in the distribution archive. legal girlie behavior, we respect it π
and that's the whole page, bestie π β rpmlint, from April 2011, still serving looks and linting packages. mwah π
π¦ where this page comes from
- centos-stream 9: rpmlint 1.11-19.el9 Β· GPLv2
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms