RPM(8)                    Red Hat Linux                    RPM(8)

NAME
       rpm - RPM Package Manager

SYNOPSIS
   QUERYING AND VERIFYING PACKAGES:
       rpm {-q|--query} [select-options] [query-options]

       rpm  {-V|--verify} [select-options] [--nodeps] [--nofiles]
       [--nomd5] [--noscripts]

       rpm {-K|--checksig} [--nogpg]  [--nopgp]  [--nomd5]  PACK­
       AGE_FILE ...

   INSTALLING, UPGRADING, AND REMOVING PACKAGES:
       rpm {-i|--install} [install-options] PACKAGE_FILE ...

       rpm {-U|--upgrade} [install-options] PACKAGE_FILE ...

       rpm {-F|--freshen} [install-options] PACKAGE_FILE ...

       rpm  {-e|--erase}  [--allmatches] [--nodeps] [--noscripts]
       [--notriggers] [--repackage] [--test] PACKAGE_NAME ...

   BUILDING PACKAGES:
       rpm {-ba|-bb|-bp|-bc|-bi|-bl|-bs} [build-options] SPECFILE
       ...

       rpm  {-ta|-tb|-tp|-tc|-ti|-tl|-ts} [build-options] TARBALL
       ...

       rpm {--rebuild|--recompile} SOURCEPKG ...

   MISCELLANEOUS:
       rpm {--initdb|--rebuilddb}

       rpm {--addsign|--resign} PACKAGE_FILE ...

       rpm {--querytags|--showrc}

       rpm {--setperms|--setugids} PACKAGE_NAME ...

   SELECT-OPTIONS
       [PACKAGE_NAME]         [-a,--all]         [-f,--file FILE]
       [-g,--group GROUP]  [-p,--package PACKAGE_FILE]  [--query­
       bynumber NUMBER] [--triggeredby PACKAGE_NAME]  [--whatpro­
       vides CAPABILITY] [--whatrequires CAPABILITY]

   QUERY-OPTIONS
       [--changelog]  [-c,--configfiles] [-d,--docfiles] [--dump]
       [--filesbypkg] [-i,--info]  [--last]  [-l,--list]  [--pro­
       vides]    [--qf,--queryformat QUERYFMT]    [-R,--requires]
       [--scripts] [-s,--state] [--triggers,--triggerscripts]

   INSTALL-OPTIONS
       [--allfiles]     [--badreloc]      [--excludepath OLDPATH]
       [--excludedocs]   [--force]   [-h,--hash]   [--ignoresize]
       [--ignorearch]  [--ignoreos]  [--includedocs]   [--justdb]
       [--nodeps]    [--noorder]   [--noscripts]   [--notriggers]
       [--oldpackage]  [--percent]  [--prefix  NEWPATH]  [--relo­
       cate OLDPATH=NEWPATH]    [--repackage]    [--replacefiles]
       [--replacepkgs] [--test]

   BUILD-OPTIONS
       [--buildroot DIRECTORY] [--clean] [--nobuild] [--rmsource]
       [--rmspec] [--short-circuit] [--sign] [--target PLATFORM]

DESCRIPTION
       rpm  is  a  powerful Package Manager, which can be used to
       build, install, query, verify, update, and erase  individ­
       ual  software  packages.  A package consists of an archive
       of files and meta-data  used  to  install  and  erase  the
       archive files. The meta-data includes helper scripts, file
       attributes, and descriptive information about the package.
       Packages  come  in two varieties: binary packages, used to
       encapsulate software to be installed, and source packages,
       containing the source code and recipe necessary to produce
       binary packages.

       One of the following basic modes must be selected:  Query,
       Verify,  Signature  Check,  Install/Upgrade/Freshen, Unin­
       stall, Build Package, Build Package from  Tarball,  Recom­
       pile   Package,  Initialize  Database,  Rebuild  Database,
       Resign, Add Signature, Set Owners/Groups, Show  Querytags,
       and Show Configuration.

   GENERAL OPTIONS
       These options can be used in all the different modes.

       -?, --help
              Print a longer usage message then normal.

       --version
              Print  a  single line containing the version number
              of rpm being used.

       --quiet
              Print as little as possible - normally  only  error
              messages will be displayed.

       -v     Print   verbose   information  -  normally  routine
              progress messages will be displayed.

       -vv    Print lots of ugly debugging information.

       --rcfile FILELIST
              Each of the files in the colon  separated  FILELIST
              is  read  sequentially  by  rpm  for  configuration
              information.  Only the first file in the list  must
              exist,  and tildes will be expanded to the value of
              $HOME.       The      default      FILELIST      is
              /usr/lib/rpm/rpmrc:/etc/rpmrc:~/.rpmrc.

       --pipe CMD
              Pipes the output of rpm to the command CMD.

       --dbpath DIRECTORY
              Use  the  database  in  DIRECTORY  rathen  than the
              default path /var/lib/rpm

       --root DIRECTORY
              Use the system rooted at DIRECTORY for  all  opera­
              tions.   Note  that this means the database will be
              read or modified under DIRECTORY and  any  %pre  or
              %post  scriptlet(s)  are  run  after a chroot(2) to
              DIRECTORY.

   INSTALL AND UPGRADE OPTIONS
       The general form of an rpm install command is

       rpm {-i|--install} [install-options] PACKAGE_FILE ...

       This installs a new package.

       The general form of an rpm upgrade command is

       rpm {-U|--upgrade} [install-options] PACKAGE_FILE ...

       This upgrades or installs the package currently  installed
       to  a  newer version.  This is the same as install, except
       all other version(s) of the package are removed after  the
       new package is installed.

       rpm {-F|--freshen} [install-options] PACKAGE_FILE ...

       This will upgrade packages, but only if an earlier version
       currently exists. The PACKAGE_FILE may be specified as  an
       ftp  or  http URL, in which case the package will be down­
       loaded before being installed. See  FTP/HTTP  OPTIONS  for
       information on rpm's internal ftp and http client support.

       --allfiles
              Installs or upgrades all the missingok files in the
              package, regardless if they exist.

       --badreloc
              Used  with  --relocate,  permit  relocations on all
              file paths, not just those  OLDPATH's  included  in
              the binary package relocation hint(s).

       --excludepath OLDPATH
              Don't install files whose name begins with OLDPATH.

       --excludedocs
              Don't install any files which are marked  as  docu­
              mentation  (which  includes  man  pages and texinfo
              documents).

       --force
              Same as using  --replacepkgs,  --replacefiles,  and
              --oldpackage.

       -h, --hash
              Print  50  hash  marks  as  the  package archive is
              unpacked.  Use with -v|--verbose for a  nicer  dis­
              play.

       --ignoresize
              Don't  check mount file systems for sufficient disk
              space before installing this package.

       --ignorearch
              Allow installation or upgrading even if the  archi­
              tectures  of  the  binary  package  and  host don't
              match.

       --ignoreos
              Allow installation or upgrading even if the operat­
              ing  systems  of  the binary package and host don't
              match.

       --includedocs
              Install documentation files. This  is  the  default
              behavior.

       --justdb
              Update only the database, not the filesystem.

       --nodeps
              Don't  do  a  dependency check before installing or
              upgrading a package.

       --noorder
              Don't reorder the packages for an install. The list
              of  packages would normally be reordered to satisfy
              dependancies.

       --noscripts

       --nopre

       --nopost

       --nopreun

       --nopostun
              Don't execute the scriptlet of the same name.   The
              --noscripts option is equivalent to

              --nopre --nopost --nopreun --nopostun

              and  turns  off  the execution of the corresponding
              %pre, %post, %preun, and %postun scriptlet(s).

       --notriggers

       --notriggerin

       --notriggerun

       --notriggerpostun
              Don't execute any trigger scriptlet  of  the  named
              type.  The --notriggers option is equivalent to

              --notriggerin --notriggerun --notriggerpostun

              and turns off execution of the corresponding %trig­
              gerin, %triggerun, and %triggerpostun scriptlet(s).

       --oldpackage
              Allow an upgrade to replace a newer package with an
              older one.

       --percent
              Print percentages as files are  unpacked  from  the
              package archive.  This is intended to make rpm easy
              to run from other tools.

       --prefix NEWPATH
              For relocateable  binary  packages,  translate  all
              file  paths that start with the installation prefix
              in the package relocation hint(s) to NEWPATH.

       --relocate OLDPATH=NEWPATH
              For relocatable binary packages, translate all file
              paths  that start with OLDPATH in the package relo­
              cation hint(s) to NEWPATH.  This option can be used
              repeatedly  if several OLDPATH's in the package are
              to be relocated.

       --repackage
              Re-package the files before erasing. The previously
              installed  package  will  be named according to the
              macro %_repackage_name_fmt and will be  created  in
              the  directory  named  by the macro %_repackage_dir
              (default value is /var/tmp).

       --replacefiles
              Install the packages even  if  they  replace  files
              from other, already installed, packages.

       --replacepkgs
              Install  the  packages  even  if  some  of them are
              already installed on this system.

       --nobuild
              Do not install the package, simply  check  for  and
              report potential conflicts.

   QUERY OPTIONS
       The general form of an rpm query command is

       rpm {-q|--query} [select-options] [query-options]

       You may specify the format that package information should
       be printed in. To do this, you use the
        {--qf|--queryformat} QUERYFMT  option,  followed  by  the
       QUERYFMT  format  string.   Query formats are modifed ver­
       sions of the standard printf(3) formatting. The format  is
       made  up  of  static strings (which may include standard C
       character escapes for newlines, tabs,  and  other  special
       characters) and printf(3) type formatters.  As rpm already
       knows the type to print, the type specifier must be  omit­
       ted however, and replaced by the name of the header tag to
       be printed, enclosed by {} characters. Tag names are  case
       insesitive, and the RPMTAG_ portion of the tag name may be
       omitted as well.

       Alternate output formats may be requested by following the
       tag  with  :typetag.   Currently,  the following types are
       supported:  octal,  date,  shescape,  perms,  fflags,  and
       depflags.   For  example,  to  print only the names of the
       packages queried, you could  use  %{NAME}  as  the  format
       string.   To  print  the  packages  name  and distribution
       information in two columns, you could use %-30{NAME}%{DIS­
       TRIBUTION}.   rpm  will print a list of all of the tags it
       knows about when it is invoked with the --querytags  argu­
       ment.

       There  are  two  subsets  of options for querying: package
       selection, and information selection.

   PACKAGE SELECTION OPTIONS:
       PACKAGE_NAME
              Query installed package named PACKAGE_NAME.

       -a, --all
              Query all installed packages.

       -f, --file FILE
              Query package owning FILE.

       -g, --group GROUP
              Query packages with the group of GROUP.

       -p, --package PACKAGE_FILE
              Query an (uninstalled) package  PACKAGE_FILE.   The
              PACKAGE_FILE  may  be  specified  as an ftp or http
              style URL, in which case the package header will be
              downloaded  and  queried.  See FTP/HTTP OPTIONS for
              information on rpm's internal ftp and  http  client
              support.  The  PACKAGE_FILE  argument(s),  if not a
              binary package, will be  interpreted  as  an  ASCII
              package manifest.  Comments are permitted, starting
              with a '#', and each line  of  a  package  manifest
              file may include white space seperated glob expres­
              sions, including URL's  with  remote  glob  expres­
              sions, that will be expanded to paths that are sub­
              stituted in place of the package manifest as  addi­
              tional PACKAGE_FILE arguments to the query.

       --querybynumber NUMBER
              Query the NUMBERth database entry directly; this is
              useful only for debugging.

       --specfile SPECFILE
              Parse and query SPECFILE as if it were  a  package.
              Although  not all the information (e.g. file lists)
              is available, this type of query permits rpm to  be
              used to extract information from spec files without
              having to write a specfile parser.

       --triggeredby PACKAGE_NAME
              Query packages that  are  triggered  by  package(s)
              PACKAGE_NAME.

       --whatprovides CAPABILITY
              Query  all  packages  that  provide  the CAPABILITY
              capability.

       --whatrequires CAPABILITY
              Query all packages  that  requires  CAPABILITY  for
              proper functioning.

   PACKAGE QUERY OPTIONS:
       --changelog
              Display change information for the package.
       -c, --configfiles
              List only configuration files (implies -l).

       -d, --docfiles
              List only documentation files (implies -l).

       --dump Dump file information as follows:

              path size mtime md5sum mode owner group isconfig isdoc rdev symlink

       This  option must be used with at least one of -l, -c, -d.

       --filesbypkg
              List all the files in each selected package.

       -i, --info
              Display package information, including  name,  ver­
              sion, and description.  This uses the --queryformat
              if one was specified.

       --last Orders the package listing  by  install  time  such
              that the latest packages are at the top.

       -l, --list
              List files in package.

       --provides
              List capabilities this package provides.

       -R, --requires
              List packages on which this package depends.

       --scripts
              List  the  package  specific  scriptlet(s) that are
              used as part of the installation and uninstallation
              processes.

       -s, --state
              Display the states of files in the package (implies
              -l).  The state of each file is one of normal,  not
              installed, or replaced.

       --triggers, --triggerscripts
              Display the trigger scripts, if any, which are con­
              tained in the package.

   VERIFY OPTIONS
       The general form of an rpm verify command is

       rpm {-V|--verify} [select-options] [--nodeps]  [--nofiles]
       [--nomd5] [--noscripts]

       Verifying   a   package  compares  information  about  the
       installed files in the package with information about  the
       files  taken  from  the package metadata stored in the rpm
       database.  Among  other  things,  verifying  compares  the
       size,  MD5 sum, permissions, type, owner and group of each
       file.  Any discrepencies are displayed.  Files  that  were
       not installed from the package, for example, documentation
       files excluded on installation using  the  "--excludedocs"
       option, will be silently ignored.

       The  package selection options are the same as for package
       querying (including package manifest files as  arguments).
       Other options that can be used only in verify mode are:

       --nodeps
              Don't verify dependencies.

       --nofiles
              Don't verify files.

       --nomd5
              Don't verify file MD5 checksums.

       --noscripts
              Don't execute the %verifyscript scriptlet (if any).

       The format of the output is a string of  8  characters,  a
       possible  "c"  denoting a configuration file, and then the
       file name. Each of the 8 characters denotes the result  of
       a  comparison  of attribute(s) of the file to the value of
       those attribute(s) recorded in the database.  A single "."
       (period)  means the test passed, while a single "?"  indi­
       cates the test could not be performed (e.g.  file  permis­
       sions   prevent  reading).  Otherwise,  the  (mnemonically
       emBoldened) character denotes failure of the corresponding
       --verify test:

       S file Size differs

       M Mode differs (includes permissions and file type)

       5 MD5 sum differs

       D Device major/minor number mis-match

       L readLink(2) path mis-match

       U User ownership differs

       G Group ownership differs

       T mTime differs

   SIGNATURE CHECKING
       The general form of an rpm signature check command is

       rpm  --checksig [--nogpg] [--nopgp] [--nomd5] PACKAGE_FILE
       ...

       This checks the GPG signature of package  PACKAGE_FILE  to
       ensure  its integrity and origin. GPG configuration infor­
       mation is read from configuration files.  See the  section
       on GPG SIGNATURES for details.

   ERASE OPTIONS
       The general form of an rpm erase command is

       rpm  {-e|--erase}  [--allmatches] [--nodeps] [--noscripts]
       [--notriggers] [--repackage] [--test] PACKAGE_NAME ...

       The following options may also be used:

       --allmatches
              Remove all versions  of  the  package  which  match
              PACKAGE_NAME.  Normally an error is issued if PACK­
              AGE_NAME matches multiple packages.

       --nodeps
              Don't check dependencies  before  uninstalling  the
              packages.

       --noscripts

       --nopreun

       --nopostun
              Don't  execute the scriptlet of the same name.  The
              --noscripts option during package erase is  equiva­
              lent to

              --nopreun --nopostun

              and  turns  off  the execution of the corresponding
              %preun, and %postun scriptlet(s).

       --notriggers

       --notriggerun

       --notriggerpostun
              Don't execute any trigger scriptlet  of  the  named
              type.  The --notriggers option is equivalent to

              --notriggerun --notriggerpostun

              and turns off execution of the corresponding %trig­
              gerun, and %triggerpostun scriptlet(s).

       --repackage
              Re-package the files before erasing. The previously
              installed  package  will  be named according to the
              macro %_repackage_name_fmt and will be  created  in
              the  directory  named  by the macro %_repackage_dir
              (default value is /var/tmp).

       --test Don't really uninstall anything,  just  go  through
              the  motions.   Useful  in conjunction with the -vv
              option for debugging.

   BUILD OPTIONS
       The general form of an rpm build command is

       rpm {-bSTAGE|-tSTAGE} [build-options] FILE ...

       The argument used is -b if a spec file is  being  used  to
       build  the  package  and -t if rpm should look inside of a
       (possibly compressed) tar file for the spec file  to  use.
       After the first argument, the next character (STAGE) spec­
       ifies the stages of building and packaging to be done  and
       is one of:

       -ba    Build  binary  and source packages (after doing the
              %prep, %build, and %install stages).

       -bb    Build a binary  package  (after  doing  the  %prep,
              %build, and %install stages).

       -bp    Executes the "%prep" stage from the spec file. Nor­
              mally  this  involves  unpacking  the  sources  and
              applying any patches.

       -bc    Do  the  "%build"  stage  from the spec file (after
              doing the %prep stage).   This  generally  involves
              the equivalent of a "make".

       -bi    Do  the  "%install" stage from the spec file (after
              doing the %prep and %build stages).  This generally
              involves the equivalent of a "make install".

       -bl    Do  a  "list check".  The "%files" section from the
              spec file is macro expanded, and checks are made to
              verify that each file exists.

       -bs    Build just the source package.

       The following options may also be used:

       --buildroot DIRECTORY
              When building a package, override the BuildRoot tag
              with directory DIRECTORY.

       --clean
              Remove the build tree after the packages are  made.

       --nobuild
              Do not execute any build stages. Useful for testing
              out spec files.

       --rmsource
              Remove the sources after the  build  (may  also  be
              used standalone, e.g. "rpm --rmsource foo.spec").

       --rmspec
              Remove  the  spec file after the build (may also be
              used standalone, eg. "rpm --rmspec foo.spec").

       --short-circuit
              Skip straight to specified stage  (i.e.,  skip  all
              stages  leading  up  to the specified stage).  Only
              valid with -bc and -bi.

       --sign Embed a GPG signature in the package.  This  signa­
              ture  can  be  used to verify the integrity and the
              origin of the package.  See the section on GPG SIG­
              NATURES for configuration details.

       --target PLATFORM
              When  building  the  package, interpret PLATFORM as
              arch-vendor-os and set the macros %_target,  %_tar­
              get_arch, and %_target_os accordingly.

   REBUILD AND RECOMPILE OPTIONS
       There are two other ways to invoke building with rpm:

       rpm {--rebuild|--recompile} SOURCEPKG ...

       When invoked this way, rpm installs the named source pack­
       age, and does a prep, compile and install.   In  addition,
       --rebuild  builds a new binary package. When the build has
       completed, the build directory is removed (as in  --clean)
       and  the  the  sources  and  spec file for the package are
       removed.

   SIGNING A PACKAGE
       rpm {--addsign|--resign} PACKAGE_FILE ...

       The --addsign option generates and inserts new  signatures
       for  each  package.   Any existing signatures will be dis­
       carded.

       The --resign option generates and appends  signatures  for
       the  listed  packages while preserving the existing signa­
       tures.

   GPG SIGNATURES
       In order to use the signature feature, rpm must be config­
       ured to run GPG and be able to find a public key ring with
       Red Hat (or other vendor) public  keys.  By  default,  rpm
       uses the same conventions as GPG to find key rings, namely
       the $GPGPATH environment variable.  If your key rings  are
       not located where GPG expects them to be, you will need to
       configure the macro %_gpg_path to be the location  of  the
       GPG key rings to use.

       If  you  want to be able to sign packages you create your­
       self, you also need to create your own public  and  secret
       key  pair (see the GPG manual). You will also need to con­
       figure the macros

       %_signature
              The signature type.  Right now only gpg and pgp are
              supported.

       %_gpg_name
              The name of the "user" whose key you wish to use to
              sign your packages.

       When building packages you then add --sign to the  command
       line.  You will be prompted for your pass phrase, and your
       package will be built and signed.  For example, to be able
       to  use  GPG  to  sign  packages  as  the  user  "John Doe
       "   from   the   key   rings   located    in
       /etc/rpm/.gpg  using the executable /usr/bin/gpg you would
       include

       %_signature gpg
       %_gpg_path /etc/rpm/.gpg
       %_gpg_name John Doe 
       %_gpgbin /usr/bin/gpg

       in a macro configuration  file.  Use  /etc/rpm/macros  for
       per-system  configuration  and  ~/.rpmmacros  for per-user
       configuration.

   REBUILD DATABASE OPTIONS
       The general form of an rpm rebuild database command is

       rpm   {--initdb|--rebuilddb}   [-v]   [--dbpath DIRECTORY]
       [--root DIRECTORY]

       Use  --initdb to create a new database, use --rebuilddb to
       rebuild the database indices from  the  installed  package
       headers.

   SHOWRC
       The command

       rpm --showrc

       shows  the  values rpm will use for all of the options are
       currently set in rpmrc and macros configuration file(s).

   FTP/HTTP OPTIONS
       rpm can act as an FTP and/or HTTP client so that  packages
       can  be  queried  or installed from the internet.  Package
       files for install, upgrade, and query  operations  may  be
       specified as an ftp or http style URL:

       ftp://USER:PASSWORD@HOST:PORT/path/to/package.rpm

       If  the :PASSWORD portion is omitted, the password will be
       prompted for (once per user/hostname pair).  If  both  the
       user  and password are omitted, anonymous ftp is used.  In
       all cases, passive (PASV) ftp transfers are performed.

       rpm allows the following options to be used with ftp URLs:

       --ftpproxy HOST
              The  host  HOST  will be used as a proxy server for
              all  ftp  transfers,  which  allows  users  to  ftp
              through  firewall machines which use proxy systems.
              This option may also be  specified  by  configuring
              the macro %_ftpproxy.

       --ftpport HOST
              The  TCP  PORT number to use for the ftp connection
              on the proxy ftp  server  instead  of  the  default
              port.  This option may also be specified by config­
              uring the macro %_ftpport.

       rpm allows the following options  to  be  used  with  http
       URLs:

       --httpproxy HOST
              The  host  HOST  will be used as a proxy server for
              all http transfers. This option may also be  speci­
              fied by configuring the macro %_httpproxy.

       --httpport PORT
              The  TCP PORT number to use for the http connection
              on the proxy http server  instead  of  the  default
              port.  This option may also be specified by config­
              uring the macro %_httpport.

FILES
       /usr/lib/rpm/rpmrc

       /etc/rpmrc

       ~/.rpmrc

       /usr/lib/rpm/macros

       /etc/rpm/macros

       ~/.rpmmacros

       /var/lib/rpm/Conflictname

       /var/lib/rpm/Basenames

       /var/lib/rpm/Group

       /var/lib/rpm/Name

       /var/lib/rpm/Packages

       /var/lib/rpm/Providename

       /var/lib/rpm/Requirename

       /var/lib/rpm/Triggername

       /var/tmp/rpm*

SEE ALSO
       popt(3),

       rpm2cpio(8),

       rpmbuild(8),

       http://www.rpm.org/

AUTHORS
       Marc Ewing 

       Jeff Johnson 

       Erik Troan 

Red Hat, Inc.              06 June 2001                    RPM(8)