dpkg
DPKG(G)                     dpkg suite                    DPKG(G)



NAME
       dpkg - a medium-level package manager for Debian


SYNOPSIS
       dpkg [options] action


WARNING
       This  manual  is  intended for users wishing to understand
       dpkg's command line options and  package  states  in  more
       detail than that provided by dpkg --help.

       It  should  not  be used by package maintainers wishing to
       understand how dpkg  will  install  their  packages.   The
       descriptions  of what dpkg does when installing and remov-
       ing packages are particularly  inadequate.   For  detailed
       information  about  this, please refer to the Package Man-
       agement System topic under debian-faq in the GNU Info sys-
       tem.   For information about creating Debian packages, see
       the Debian Package Management  Tools  topic  in  the  same
       place.


DESCRIPTION
       dpkg  is a medium-level tool to install, build, remove and
       manage Debian packages. The primary and more user-friendly
       front-end  for  dpkg  is  dselect(t).  dpkg itself is con-
       trolled entirely via command line parameters,  which  con-
       sist  of  exactly one action and zero or more options. The
       action-parameter tells dpkg what to do and options control
       the behavior of the action in some way.

       dpkg  can be also be used as a front-end to dpkg-deb.  The
       following are dpkg-deb actions, and if  they  are  encoun-
       tered,  dpkg  just runs dpkg-deb with the parameters given
       to it:
           -b, --build,
           -c, --contents,
           -I, --info,
           -f, --field,
           -e, --control,
           -x, --extract,
           -X, --vextract, and
           --fsys-tarfile.
       Please refer to dpkg-deb(b) for  information  about  these
       actions.


INFORMATION ABOUT PACKAGES
       dpkg  maintains  some  usable  information about available
       packages. The information is  divided  in  three  classes:
       states,  selection  states  and  flags.   These values are
       intended to be changed mainly with dselect.

   PACKAGE STATES
       installed
              The package is unpacked and configured OK.

       half-installed
              The installation of the package has  been  started,
              but not completed for some reason.

       not-installed
              The package is not installed on your system.

       unpacked
              The package is unpacked, but not configured.

       half-configured
              The  package is unpacked and configuration has been
              started, but not yet completed for some reason.

       config-files
              Only the configuration files of the  package  exist
              on the system.

   PACKAGE SELECTION STATES
       install
              The package is selected for installation.

       deinstall
              The package is selected for deinstallation (i.e. we
              want to  remove  all  files,  except  configuration
              files).

       purge  The  package is selected to be purged (i.e. we want
              to remove everything, even configuration files).

   PACKAGE FLAGS
       hold   A package marked to be on hold is  not  handled  by
              dpkg, unless forced to do that with option --force-
              hold.

       reinst-required
              A package  marked  reinst-required  is  broken  and
              requires  reinstallation.  These packages cannot be
              removed, unless forced  with  option  --force-rein-
              streq.


ACTIONS
       dpkg -i | --install package_file...
              Install the package. If --recursive or -R option is
              specified, package_file must refer to  a  directory
              instead.

              Installation consists of the following steps:

              1. Extract the control files of the new package.

              2.  If  another  version  of  the  same package was
              installed  before  the  new  installation,  execute
              prerm script of the old package.

              3.  Run preinst script, if provided by the package.

              4. Unpack the new files, and at the same time  back
              up  the old files, so that if something goes wrong,
              they can be restored.

              5. If another  version  of  the  same  package  was
              installed  before the new installation, execute the
              postrm script of the old package.  Note  that  this
              script  is executed after the preinst script of the
              new package, because new files are written  at  the
              same time old files are removed.

              6.  Configure  the  package.  See  --configure  for
              detailed information about how this is done.

       dpkg --unpack package_file ...
              Unpack the package,  but  don't  configure  it.  If
              --recursive or -R option is specified, package_file
              must refer to a directory instead.

       dpkg --configure package ... | -a | --pending
              Reconfigure an unpacked package.  If -a or  --pend-
              ing  is  given instead of package, all unpacked but
              unconfigured packages are configured.

              Configuring consists of the following steps:

              1. Unpack the configuration files, and at the  same
              time  back  up the old configuration files, so that
              they can be restored if something goes wrong.

              2. Run postinst script, if provided by the package.

       dpkg  -r  |  --remove  |  -P  | --purge package ... | -a |
       --pending
              Remove an installed package.  -r or --remove remove
              everything except configuration  files.   This  may
              avoid  having  to  reconfigure the package if it is
              reinstalled later.  (Configuration  files  are  the
              files listed in the debian/conffiles control file).
              -P or --purge removes everything, including config-
              uration files.  If -a or --pending is given instead
              of a package name, then all packages unpacked,  but
              marked   to   be   removed   or   purged   in  file
              /var/lib/dpkg/status,  are   removed   or   purged,
              respectively.

              Removing  of  a  package  consists of the following
              steps:

              1. Run prerm script

              2. Remove the installed files

              3. Run postrm script

       dpkg  -p|--print-avail package
              Display  details  about  package,   as   found   in
              /var/lib/dpkg/available.

       dpkg --update-avail | --merge-avail Packages-file
              Update  dpkg's and dselect's idea of which packages
              are  available.   With  action  --merge-avail,  old
              information is combined with information from Pack-
              ages-file.  With action --update-avail, old  infor-
              mation  is  replaced  with  the  information in the
              Packages-file.  The Packages-file distributed  with
              Debian  is  simply  named Packages.  dpkg keeps its
              record      of      available      packages      in
              /var/lib/dpkg/available.

       dpkg -A | --record-avail package_file ...
              Update  dpkg  and  dselect's idea of which packages
              are available with  information  from  the  package
              package_file.  If --recursive or -R option is spec-
              ified,  package_file  must  refer  to  a  directory
              instead.

       dpkg --forget-old-unavail
              Forget about uninstalled unavailable packages.

       dpkg --clear-avail
              Erase  the existing information about what packages
              are available.

       dpkg -l | --list package-name-pattern ...
              List packages matching given pattern. If  no  pack-
              age-name-pattern  is  given,  list  all packages in
              /var/lib/dpkg/available.   Normal  shell  wildchars
              are  allowed  in  package-name-pattern.   (You will
              probably have to quote package-name-pattern to pre-
              vent  the shell from performing filename expansion.
              For example, dpkg -l 'libc5*'  will  list  all  the
              package names starting with "libc5".)

       dpkg -s | --status package-name ...
              Report  status of specified package. This just dis-
              plays the entry in  the  installed  package  status
              database.

       dpkg -C | --audit
              Searches for packages that have been installed only
              partially on your system.  dpkg will  suggest  what
              to do with them to get them working.

       dpkg --get-selections [pattern...]
              Get  list  of  package  selections, and write it to
              stdout.

       dpkg --set-selections
              Set package selections using file read from  stdin.

       dpkg --yet-to-unpack
              Searches  for  packages  selected for installation,
              but  which  for  some  reason  still  haven't  been
              installed.

       dpkg -L | --listfiles package ...
              List  files  installed to your system from package.
              However, note that files  created  by  package-spe-
              cific installation-scripts are not listed.

       dpkg -S | --search filename-search-pattern ...
              Search  for a filename from installed packages. All
              standard shell wildchars can be used  in  the  pat-
              tern.

       dpkg --print-architecture
              Print  target  architecture  (for example, "i386").
              This option uses gcc.

       dpkg --print-gnu-build-architecture
              Print GNU version of target architecture (for exam-
              ple, "i486").

       dpkg --print-installation-architecture
              Print host architecture for installation.

       dpkg --compare-versions ver1 op ver2
              Compare version numbers, where op is a binary oper-
              ator.  dpkg returns success (zero  result)  if  the
              specified   condition  is  satisfied,  and  failure
              (nonzero result) otherwise.  There are  two  groups
              of  operators,  which  differ  in  how they treat a
              missing ver1 or ver2.  These treat  no  version  as
              earlier than any version: lt le eq ne ge gt.  These
              treat no version as later than any  version:  lt-nl
              le-nl  ge-nl  gt-nl.   These  are provided only for
              compatibility with control file syntax: < <<  <=  =
              >= >> >.

       dpkg --command-fd <n>
              Accept  a series of commands on input file descrip-
              tor <n>.  Note: additional options set on the  com-
              mand  line,  and thru this file descriptor, are not
              reset for subsequent commands executed  during  the
              same run.

       dpkg --help
              Display a brief help message.

       dpkg --force-help
              Give help about the --force-thing options.

       dpkg -Dh | --debug=help
              Give help about debugging options.

       dpkg --licence | dpkg --license
              Display dpkg licence.

       dpkg --version
              Display dpkg version information.

       dpkg-deb-actions
              See dpkg-deb(b) for more information about the fol-
              lowing actions.

              dpkg -b | --build directory [filename]
                  Build a deb package.
              dpkg -c | --contents filename
                  List contents of a deb package.
              dpkg -e | --control filename [directory]
                  Extract control-information from a package.
              dpkg -x | --extract filename directory
                  Extract the files contained by package.
              dpkg -f | --field  filename [control-field] ...
                  Display control field(d) of a package.
              dpkg --fsys-tarfile filename
                  Display the filesystem tar-file contained by a
                  Debian package.
              dpkg -I | --info filename [control-file]
                  Show information about a package.
              dpkg -X | --vextract filename directory
                  Extract and display the filenames contained by a
                  package.


OPTIONS
       All options can be specified both on the  commandline  and
       in  the  dpkg  configuration file /etc/dpkg/dpkg.cfg. Each
       line  in  the  configuration  file  is  either  an  option
       (exactly  the  same  as the commandline option but without
       leading dashes) or a comment (if it starts with a #).

       --abort-after=number
              Change after how many errors dpkg will  abort.  The
              default is 50.

       -B|--auto-deconfigure
              When  a  package is removed, there is a possibility
              that another  installed  package  depended  on  the
              removed  package. Specifying this option will cause
              automatic  deconfiguration  of  the  package  which
              depended on the removed package.

       -Doctal | --debug=octal
              Set  debugging  on.   octal  is  formed by bitwise-
              orring desired values together from the list  below
              (note  that  these  values  may  change  in  future
              releases).   -Dh  or  --debug=help  display   these
              debugging values.

               number  description
                  1   Generally helpful progress information
                  2   Invocation and status of maintainer scripts
                 10   Output for each file processed
                100   Lots of output for each file processed
                 20   Output for each configuration file
                200   Lots of output for each configuration file
                 40   Dependencies and conflicts
                400   Lots of dependencies/conflicts output
               1000   Lots of drivel about e.g. the dpkg/info dir
               2000   Insane amounts of drivel

       --force-things | --no-force-things | --refuse-things

              Force  or refuse (no-force and refuse mean the same
              thing) to do some things.  things is a comma  sepa-
              rated list of things specified below.  --force-help
              displays a message describing them.  Things  marked
              with (*) are forced by default.

              Warning:  These  options  are mostly intended to be
              used by experts  only.  Using  them  without  fully
              understanding  their  effects  may break your whole
              system.

              all: Turns on(or off) all force options.

              auto-select(*): Select packages  to  install  them,
              and deselect packages to remove them.

              downgrade(*): Install a package, even if newer ver-
              sion of it is already installed.

              configure-any:  Configure  also  any  unpacked  but
              unconfigured  packages on which the current package
              depends.

              hold: Process packages even when marked "hold".

              remove-reinstreq: Remove a package,  even  if  it's
              broken  and marked to require reinstallation.  This
              may, for example, cause parts  of  the  package  to
              remain  on the system, which will then be forgotten
              by dpkg.

              remove-essential: Remove, even if  the  package  is
              considered  essential.  Essential  packages contain
              mostly very  basic  Unix  commands.  Removing  them
              might  cause  the  whole system to stop working, so
              use with caution.

              depends: Turn all dependency  problems  into  warn-
              ings.

              depends-version:  Don't  care  about  versions when
              checking dependencies.

              conflicts:  Install,  even  if  it  conflicts  with
              another  package.  This  is  dangerous, for it will
              usually cause overwriting of some files.

              confmiss: Always install  a  missing  configuration
              file.  This  is  dangerous, since it means not pre-
              serving a change (removing) made to the file.

              confnew: If a conffile  has  been  modified  always
              install  the  new version without prompting, unless
              the --force-confdef is  also  specified,  in  which
              case the default action is preferred.

              confold:  If  a  conffile  has been modified always
              keep the old version without prompting, unless  the
              --force-confdef  is  also  specified, in which case
              the default action is preferred.

              confdef: If a conffile  has  been  modified  always
              choose  the  default action. If there is no default
              action it will stop to ask the user unless --force-
              confnew  or  --force-confold is also been given, in
              which case it will use that  to  decide  the  final
              action.

              overwrite:   Overwrite   one  package's  file  with
              another's file.

              overwrite-dir  Overwrite  one  package's  directory
              with another's file.

              overwrite-diverted:  Overwrite a diverted file with
              an undiverted version.

              architecture: Process even packages with the  wrong
              architecture.

              bad-path:  PATH  is  missing important programs, so
              problems are likely.

              not-root: Try to (de)install things even  when  not
              root.


       --ignore-depends=package,...
              Ignore  dependency-checking  for specified packages
              (actually, checking is performed, but only warnings
              about conflicts are given, nothing else).

       --new | --old
              Select  new or old binary package format. This is a
              dpkg-deb(b) option.

       --nocheck
              Don't read or check contents of control file  while
              building  a package.  This is a dpkg-deb(b) option.

       --no-act
              Do everything which is supposed  to  be  done,  but
              don't  write  any changes. This is used to see what
              would happen with  the  specified  action,  without
              actually modifying anything.

              Be  sure to give --no-act before the action-parame-
              ter, or you might end up with undesirable  results.
              (e.g.   dpkg  --purge foo --no-act will first purge
              package foo and then try to purge package --no-act,
              even though you probably expected it to actually do
              nothing)

       -R | --recursive
              Recursively handle all regular files matching  pat-
              tern  *.deb  found at specified directories and all
              of its subdirectories. This can be  used  with  -i,
              -A, --install, --unpack and --avail actions.

       -G     Don't  install  a package if a newer version of the
              same package is already installed. This is an alias
              of --refuse-downgrade.

       --root=dir | --admindir=dir | --instdir=dir
              Change  default  directories.  admindir defaults to
              /var/lib/dpkg and contains  many  files  that  give
              information  about  status  of  installed  or unin-
              stalled packages, etc.  instdir defaults to  /  and
              refers  to  the  directory where packages are to be
              installed.  instdir is also the directory passed to
              chroot(t)  before  running  package's  installation
              scripts, which means that the scripts  see  instdir
              as a root directory.  Changing root changes instdir
              to dir and admindir to dir/var/lib/dpkg.

       -O | --selected-only
              Only process the packages  that  are  selected  for
              installation.  The actual marking is done with dse-
              lect or by dpkg, when  it  handles  packages.   For
              example,  when  a  package  is  removed, it will be
              marked selected for installation.

       -E | --skip-same-version
              Don't install the package if the  same  version  of
              the package is already installed.

       --status-fd <n>
              Send  package  status  info to file descriptor <n>.
              This can be given multiple times.   Status  updates
              are of the form `status: <pkg>: <pkg qstate>'.

FILES
       /etc/dpkg/dpkg.cfg
              Configuration file with default options.

       The other files listed below are in their default directo-
       ries, see option --admindir to see how to change locations
       of these files.

       /var/lib/dpkg/available
              List of available packages.

       /var/lib/dpkg/status
              Statuses  of available packages. This file contains
              information about whether a package is  marked  for
              removing  or  not,  whether it is installed or not,
              etc. See section  INFORMATION  ABOUT  PACKAGES  for
              more info.

       The  following  files  are components of a binary package.
       See deb(b) for more information about them:

       control

       conffiles

       preinst

       postinst

       prerm

       postrm

ENVIRONMENT VARIABLES
       DPKG_NO_TSTP
              Define this to something if you prefer dpkg  start-
              ing  a  new  shell  rather  than suspending itself,
              while doing a shell escape.

       SHELL  The program dpkg will execute while starting a  new
              shell.

       COLUMNS
              Sets  the  number  of  columns dpkg should use when
              displaying formatted text.  Currently only used  by
              -l.

       DPKG_OLD_CONFFILE
              Set  by  dpkg to the filename of the old configura-
              tion file when you  start  a  shell  to  examine  a
              changed configuration.  file.

       DPKG_NEW_CONFFILE
              Set  by dpkg to the filename of the newversion of a
              configuration file when you start a shell to  exam-
              ine a changed configuration.  file.


EXAMPLES
       To list packages related to the editor vi:
            dpkg -l '*vi*'

       To see the entries in /var/lib/dpkg/available on two pack-
       ages:
            dpkg --print-avail elvis vim | less

       To search the listing of packages yourself:
            less /var/lib/dpkg/available

       To remove an installed elvis package:
            dpkg -r elvis

       To install a package, you first need  to  find  it  in  an
       archive or CDROM.  The "available" file shows that the vim
       package is in section "editors":
            cd /cdrom/hamm/hamm/binary/editors
            dpkg -i vim_4.5-3.deb

       To make a local copy of the package selection states:
            dpkg --get-selections >myselections

       You might transfer this  file  to  another  computer,  and
       install it there with:
            dpkg --set-selections <myselections
       Note  that  this  will not actually install or remove any-
       thing, but just set the selection state on  the  requested
       packages.    You  will  need  some  other  application  to
       actually download and install the requested packages.

       Ordinarily, you will find that dselect(t) provides a  more
       convenient way to modify the package selection states.

SEE ALSO
       dselect(t), dpkg-deb(b), deb(b), and deb-control(l)


BUGS
       --no-act  usually  gives  less  information  than might be
       helpful.


AUTHORS
       See /usr/share/doc/dpkg/THANKS for the list of people who have
       contributed to dpkg .



Debian Project            April 12, 1998                  DPKG(G)