DPKG-DIVERT(8)

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

SYNOPSIS
dpkg-divert [options] [--add] <file>
dpkg-divert [options] --remove <file>
dpkg-divert [options] --list <glob-pattern>
dpkg-divert [options] --truename <file>

DESCRIPTION
File `diversions' are a way of forcing dpkg not to install a file into its location, but to a `diverted' location. Diversions can be used through the Debian package 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.

dpkg-divert is the utility used to set up and update the list of diversions. It functions in three basic modes - adding, removing, and listing diversions. The options are --add, --remove, and --list, respectively. Additionally, it can print out the real name for a diverted file with --truename. Other options (listed below) may also be specified.

OPTIONS

--admindir <directory>
    Set the dpkg data directory to <directory> (default: /var/lib/dpkg).

--divert <divert-to>
    <divert-to> is the name used by other packages' versions.

--help
    Output the version and the short usage instructions, and exit successfully.

--local
    Specifies that all packages' versions are diverted.

--package <package>
    <package> is the name of a package whose copy of <file> will not be diverted.

--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.

--test
    Test mode, i.e. don't actually perform any changes, just demonstrate.

--version
    Output program name and version and exit successfully.

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 doesn't honour diverts (only dpkg does), if a diverted library has the same SONAME as the undiverted one the symlink may end up pointing at the diverted library.

EXAMPLES
To divert all copies of a /usr/bin/example.foo to /usr/bin/example, performing the rename if required:

dpkg-divert --divert /usr/bin/example --rename /usr/bin/example.foo

To remove that diversion:

dpkg-divert --rename --remove /usr/bin/example.foo

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

FILES

/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.

SEE ALSO
dpkg(8).

AUTHOR
Copyright (C) 1995 Ian Jackson.

This is free software; see the GNU General Public Licence version 2 or later for copying conditions. There is NO warranty.