# dpkg-divert

## NAME



           dpkg-divert - override a package's version of a file
    


## SYNOPSIS



           **dpkg-divert**[_option_...]  _command_
    


## DESCRIPTION



           **dpkg-divert** is the utility used to set up and update the list of
           diversions.
    
           File _diversions_ are a way of forcing dpkg(1) not to install a file
           into its location, but to a _diverted_ location.  Diversions can be
           used through the package maintainer scripts to move a file away
           when it causes a conflict.  System administrators can also use it
           to override some package's configuration file, or whenever some
           files (which aren't marked as “conffiles”) need to be preserved by
           **dpkg** , when installing a newer version of a package which contains
           those files.
    


## COMMANDS



           [**--add**] _file_
               Add a diversion for _file_.  The file is currently not renamed,
               see **--rename**.
    
           **--remove** _file_
               Remove a diversion for _file_.  The file is currently not
               renamed, see **--rename**.
    
           **--list**[_glob-pattern_]
               List all diversions, or ones matching _glob-pattern_.
    
           **--listpackage** _file_
               Print the name of the package that diverts _file_ (since dpkg
               1.15.0).  Prints LOCAL if _file_ is locally diverted and nothing
               if _file_ is not diverted.
    
           **--truename** _file_
               Print the real name for a diverted file.
    


## OPTIONS



           **--admindir** _directory_
               Set the administrative directory to _directory_.  Defaults to
               « _/usr/local/var/lib/dpkg_ » if **DPKG_ADMINDIR** has not been set.
    
           **--instdir** _directory_
               Set the installation directory, which refers to the directory
               where packages get installed (since dpkg 1.19.2).  Defaults to
               « _/_ » if **DPKG_ROOT** has not been set.
    
           **--root** _directory_
               Set the root directory to **directory** , which sets the
               installation directory to « _directory_ » and the administrative
               directory to « _directory_**/usr/local/var/lib/dpkg** » (since dpkg
               1.19.2) if **DPKG_ROOT** has not been set.
    
           **--divert** _divert-to_
               _divert-to_ is the location where the versions of _file_ , as
               provided by other packages, will be diverted.
    
           **--local**
               Specifies that all packages' versions of this file are
               diverted.  This means, that there are no exceptions, and
               whatever package is installed, the file is diverted.  This can
               be used by an admin to install a locally modified version.
    
           **--package** _package_
               _package_ is the name of a package whose copy of _file_ will not
               be diverted.  i.e. _file_ will be diverted for all packages
               except _package_.
    
           **--quiet**
               Quiet mode, i.e. no verbose output.
    
           **--rename**
               Actually move the file aside (or back).  **dpkg-divert** will
               abort operation in case the destination file already exists.
               This is the common behavior used for diversions of files from
               the non-**Essential** package set (see **--no-rename** for more
               details).
    
           **--no-rename**
               Specifies that the file should not be renamed while adding or
               removing the diversion into the database (since dpkg 1.19.1).
               This is intended for diversions of files from the **Essential**
               package set, where the temporary disappearance of the original
               file is not acceptable, as it can render the system
               non-functional.  This is the default behavior, which will
               change once there are no known users, but not before the dpkg
               1.23.x release cycle.
    
           **--test**
               Test mode, i.e. don't actually perform any changes, just
               demonstrate.
    
           **-?** , **--help**
               Show the usage message and exit.
    
           **--version**
               Show the version and exit.
    


## EXIT STATUS



           **0** The requested action was successfully performed.
    
           **2** Fatal or unrecoverable error due to invalid command-line
               usage, or interactions with the system, such as accesses to
               the database, memory allocations, etc.
    


## ENVIRONMENT



           **DPKG_ROOT**
               If set and the **--instdir** or **--root** options have not been
               specified, it will be used as the filesystem root directory
               (since dpkg 1.19.2).
    
           **DPKG_ADMINDIR**
               If set and the **--admindir** or **--root** options have not been
               specified, it will be used as the **dpkg** data directory.
    
           **DPKG_MAINTSCRIPT_PACKAGE**
               If set and the **--local** and **--package** options have not been
               specified, **dpkg-divert** will use it as the package name.
    
           **DPKG_DEBUG**
               Sets the debug mask (since dpkg 1.21.10) from an octal value.
               The currently accepted flags are described in the **dpkg --debug**
               option, but not all these flags might have an effect on this
               program.
    
           **DPKG_COLORS**
               Sets the color mode (since dpkg 1.18.5).  The currently
               accepted values are: **auto**(default), **always** and **never**.
    
           **DPKG_NLS**
               If set, it will be used to decide whether to activate Native
               Language Support, also known as internationalization (or i18n)
               support (since dpkg 1.22.7).  The accepted values are: **0** and **1**
               (default).
    


## FILES



           _/usr/local/var/lib/dpkg/diversions_
               File which contains the current list of diversions of the
               system.  It is located in the **dpkg** administration directory,
               along with other files important to **dpkg** , such as _status_ or
               _available_.
    
               **Note** : **dpkg-divert** preserves the old copy of this file, with
               extension _-old_ , before replacing it with the new one.
    


## NOTES



           When adding, default is **--local** and **--divert** _original_**.distrib**.
           When removing, **--package** or **--local** and **--divert** must match if
           specified.
    
           Directories can't be diverted with **dpkg-divert**.
    
           Care should be taken when diverting shared libraries, ldconfig(8)
           creates a symbolic link based on the DT_SONAME field embedded in
           the library.  Because **ldconfig** does not honor diverts (only **dpkg**
           does), the symlink may end up pointing at the diverted library, if
           a diverted library has the same SONAME as the undiverted one.
    


## EXAMPLES



           To divert all copies of a _/usr/bin/example_ to
           _/usr/bin/example.foo_ , i.e. directs all packages providing
           _/usr/bin/example_ to install it as _/usr/bin/example.foo_ , performing
           the rename if required:
    
            dpkg-divert --divert /usr/bin/example.foo --rename /usr/bin/example
    
           To remove that diversion:
    
            dpkg-divert --rename --remove /usr/bin/example
    
           To divert any package trying to install _/usr/bin/example_ to
           _/usr/bin/example.foo_ , except your own _wibble_ package:
    
            dpkg-divert --package wibble --divert /usr/bin/example.foo \
               --rename /usr/bin/example
    
           To remove that diversion:
    
            dpkg-divert --package wibble --rename --remove /usr/bin/example
    


* * *