Provided by: dpkg_1.19.7ubuntu3.2_amd64 bug

NAME

       update-alternatives - maintain symbolic links determining default commands

SYNOPSIS

       update-alternatives [option...] command

DESCRIPTION

       update-alternatives  creates,  removes,  maintains  and  displays  information  about  the symbolic links
       comprising the Debian alternatives system.

       It is possible for several programs fulfilling the same or similar functions to be installed on a  single
       system  at  the  same time.  For example, many systems have several text editors installed at once.  This
       gives choice to the users of a system, allowing each to use a different editor, if desired, but makes  it
       difficult  for  a  program  to make a good choice for an editor to invoke if the user has not specified a
       particular preference.

       Debian's alternatives system aims to solve this problem.  A generic name in the filesystem is  shared  by
       all  files providing interchangeable functionality.  The alternatives system and the system administrator
       together determine which actual file is referenced by this  generic  name.   For  example,  if  the  text
       editors ed(1) and nvi(1) are both installed on the system, the alternatives system will cause the generic
       name /usr/bin/editor to refer to /usr/bin/nvi by default. The system administrator can override this  and
       cause  it  to refer to /usr/bin/ed instead, and the alternatives system will not alter this setting until
       explicitly requested to do so.

       The generic name is not a direct symbolic link to the selected alternative.  Instead, it  is  a  symbolic
       link  to  a  name  in  the  alternatives  directory,  which in turn is a symbolic link to the actual file
       referenced.  This is done so that the system administrator's changes can  be  confined  within  the  /etc
       directory: the FHS (q.v.) gives reasons why this is a Good Thing.

       When  each  package  providing  a  file with a particular functionality is installed, changed or removed,
       update-alternatives is called  to  update  information  about  that  file  in  the  alternatives  system.
       update-alternatives  is  usually  called  from the postinst (configure) or prerm (remove and deconfigure)
       scripts in Debian packages.

       It is often useful for a number of alternatives to be synchronized, so that they are changed as a  group;
       for  example,  when  several  versions  of  the  vi(1)  editor  are installed, the man page referenced by
       /usr/share/man/man1/vi.1   should   correspond   to   the   executable   referenced    by    /usr/bin/vi.
       update-alternatives  handles  this  by  means  of master and slave links; when the master is changed, any
       associated slaves are changed too.  A master link and its associated slaves make up a link group.

       Each link group is, at any given time, in one of two modes: automatic or manual.   When  a  group  is  in
       automatic mode, the alternatives system will automatically decide, as packages are installed and removed,
       whether and how to update the links.  In manual mode, the alternatives system will retain the  choice  of
       the administrator and avoid changing the links (except when something is broken).

       Link  groups  are  in  automatic  mode  when  they  are  first  introduced  to the system.  If the system
       administrator makes changes to the system's automatic settings,  this  will  be  noticed  the  next  time
       update-alternatives  is  run on the changed link's group, and the group will automatically be switched to
       manual mode.

       Each alternative has a priority associated with it.   When  a  link  group  is  in  automatic  mode,  the
       alternatives pointed to by members of the group will be those which have the highest priority.

       When  using  the  --config option, update-alternatives will list all of the choices for the link group of
       which given name is the master alternative name.  The current choice is marked with a ‘*’.  You will then
       be  prompted  for  your  choice  regarding this link group.  Depending on the choice made, the link group
       might no longer be in auto mode. You will need to use the  --auto  option  in  order  to  return  to  the
       automatic mode (or you can rerun --config and select the entry marked as automatic).

       If you want to configure non-interactively you can use the --set option instead (see below).

       Different  packages  providing  the  same file need to do so cooperatively.  In other words, the usage of
       update-alternatives is mandatory for all involved packages in such case. It is not possible  to  override
       some file in a package that does not employ the update-alternatives mechanism.

TERMINOLOGY

       Since  the activities of update-alternatives are quite involved, some specific terms will help to explain
       its operation.

       generic name (or alternative link)
              A name, like /usr/bin/editor, which refers, via the alternatives system, to one  of  a  number  of
              files of similar function.

       alternative name
              The name of a symbolic link in the alternatives directory.

       alternative (or alternative path)
              The  name  of  a  specific file in the filesystem, which may be made accessible via a generic name
              using the alternatives system.

       alternatives directory
              A directory, by default /etc/alternatives, containing the symlinks.

       administrative directory
              A  directory,  by  default  /var/lib/dpkg/alternatives,  containing   update-alternatives'   state
              information.

       link group
              A set of related symlinks, intended to be updated as a group.

       master link
              The  alternative  link  in  a  link  group  which  determines how the other links in the group are
              configured.

       slave link
              An alternative link in a link group which is controlled by the setting of the master link.

       automatic mode
              When a link group is in automatic mode, the alternatives system ensures  that  the  links  in  the
              group point to the highest priority alternative appropriate for the group.

       manual mode
              When  a  link  group  is  in manual mode, the alternatives system will not make any changes to the
              system administrator's settings.

COMMANDS

       --install link name path priority [--slave link name path]...
              Add a group of alternatives to the system.  link is the generic name for the master link, name  is
              the  name  of  its  symlink  in  the  alternatives  directory,  and  path is the alternative being
              introduced for the master link.  The arguments after --slave are the generic name, symlink name in
              the  alternatives  directory  and  the  alternative  path  for a slave link.  Zero or more --slave
              options, each followed by three arguments, may be specified. Note that the master alternative must
              exist or the call will fail. However if a slave alternative doesn't exist, the corresponding slave
              alternative link will simply not be installed (a warning will still be displayed).  If  some  real
              file  is  installed  where  an  alternative link has to be installed, it is kept unless --force is
              used.

              If the alternative name specified  exists  already  in  the  alternatives  system's  records,  the
              information  supplied  will be added as a new set of alternatives for the group.  Otherwise, a new
              group, set to automatic mode, will be added with this information.  If the group is  in  automatic
              mode,  and  the newly added alternatives' priority is higher than any other installed alternatives
              for this group, the symlinks will be updated to point to the newly added alternatives.

       --set name path
              Set the program path as alternative for  name.   This  is  equivalent  to  --config  but  is  non-
              interactive and thus scriptable.

       --remove name path
              Remove  an  alternative and all of its associated slave links.  name is a name in the alternatives
              directory, and path is an absolute filename to which name could  be  linked.  If  name  is  indeed
              linked to path, name will be updated to point to another appropriate alternative (and the group is
              put back in automatic mode), or removed if there is no such alternative  left.   Associated  slave
              links will be updated or removed, correspondingly.  If the link is not currently pointing to path,
              no links are changed; only the information about the alternative is removed.

       --remove-all name
              Remove all alternatives and all  of  their  associated  slave  links.   name  is  a  name  in  the
              alternatives directory.

       --all  Call  --config  on  all  alternatives.  It can be usefully combined with --skip-auto to review and
              configure all alternatives which are not configured in automatic  mode.  Broken  alternatives  are
              also  displayed.   Thus  a  simple  way  to  fix  all  broken  alternatives  is  to  call yes '' |
              update-alternatives --force --all.

       --auto name
              Switch the link group behind the alternative for name to automatic  mode.   In  the  process,  the
              master symlink and its slaves are updated to point to the highest priority installed alternatives.

       --display name
              Display  information  about the link group.  Information displayed includes the group's mode (auto
              or manual), the master and slave links, which alternative the master  link  currently  points  to,
              what  other  alternatives  are  available  (and  their  corresponding slave alternatives), and the
              highest priority alternative currently installed.

       --get-selections
              List all master alternative names (those controlling a link group) and their status (since version
              1.15.0).   Each line contains up to 3 fields (separated by one or more spaces). The first field is
              the alternative name, the second one is the status (either auto  or  manual),  and  the  last  one
              contains  the  current  choice  in the alternative (beware: it's a filename and thus might contain
              spaces).

       --set-selections
              Read configuration of alternatives on standard input in the format generated  by  --get-selections
              and reconfigure them accordingly (since version 1.15.0).

       --query name
              Display  information  about  the  link  group  like --display does, but in a machine parseable way
              (since version 1.15.0, see section QUERY FORMAT below).

       --list name
              Display all targets of the link group.

       --config name
              Show available alternatives for a link group and allow the user to interactively select which  one
              to use. The link group is updated.

       --help Show the usage message and exit.

       --version
              Show the version and exit.

OPTIONS

       --altdir directory
              Specifies the alternatives directory, when this is to be different from the default.

       --admindir directory
              Specifies the administrative directory, when this is to be different from the default.

       --log file
              Specifies  the  log  file  (since  version  1.15.0), when this is to be different from the default
              (/var/log/alternatives.log).

       --force
              Allow replacing or dropping any real file that is installed where an alternative link  has  to  be
              installed or removed.

       --skip-auto
              Skip  configuration  prompt for alternatives which are properly configured in automatic mode. This
              option is only relevant with --config or --all.

       --quiet
              Do not generate any comments unless errors occur.

       --verbose
              Generate more comments about what is being done.

       --debug
              Generate even more comments, helpful for debugging,  about  what  is  being  done  (since  version
              1.19.3).

EXIT STATUS

       0      The requested action was successfully performed.

       2      Problems were encountered whilst parsing the command line or performing the action.

ENVIRONMENT

       DPKG_ADMINDIR
              If  set  and  the  --admindir  option  has  not  been  specified,  it  will  be  used  as the base
              administrative directory.

FILES

       /etc/alternatives/
              The default alternatives directory.  Can be overridden by the --altdir option.

       /var/lib/dpkg/alternatives/
              The default administration directory.  Can be overridden by the --admindir option.

QUERY FORMAT

       The --query format is using an RFC822-like flat format. It's made of n + 1 blocks where n is  the  number
       of alternatives available in the queried link group. The first block contains the following fields:

       Name: name
              The alternative name in the alternative directory.

       Link: link
              The generic name of the alternative.

       Slaves: list-of-slaves
              When  this  field is present, the next lines hold all slave links associated to the master link of
              the alternative. There is one slave per line. Each line contains one space, the  generic  name  of
              the slave alternative, another space, and the path to the slave link.

       Status: status
              The status of the alternative (auto or manual).

       Best: best-choice
              The  path  of  the  best  alternative for this link group. Not present if there is no alternatives
              available.

       Value: currently-selected-alternative
              The path of the currently selected alternative. It can also take the magic value none. It is  used
              if the link doesn't exist.

       The other blocks describe the available alternatives in the queried link group:

       Alternative: path-of-this-alternative
              Path to this block's alternative.

       Priority: priority-value
              Value of the priority of this alternative.

       Slaves: list-of-slaves
              When  this  field  is present, the next lines hold all slave alternatives associated to the master
              link of the alternative. There is one slave per line. Each line contains one  space,  the  generic
              name of the slave alternative, another space, and the path to the slave alternative.

   Example
       $ update-alternatives --query editor
       Name: editor
       Link: /usr/bin/editor
       Slaves:
        editor.1.gz /usr/share/man/man1/editor.1.gz
        editor.fr.1.gz /usr/share/man/fr/man1/editor.1.gz
        editor.it.1.gz /usr/share/man/it/man1/editor.1.gz
        editor.pl.1.gz /usr/share/man/pl/man1/editor.1.gz
        editor.ru.1.gz /usr/share/man/ru/man1/editor.1.gz
       Status: auto
       Best: /usr/bin/vim.basic
       Value: /usr/bin/vim.basic

       Alternative: /bin/ed
       Priority: -100
       Slaves:
        editor.1.gz /usr/share/man/man1/ed.1.gz

       Alternative: /usr/bin/vim.basic
       Priority: 50
       Slaves:
        editor.1.gz /usr/share/man/man1/vim.1.gz
        editor.fr.1.gz /usr/share/man/fr/man1/vim.1.gz
        editor.it.1.gz /usr/share/man/it/man1/vim.1.gz
        editor.pl.1.gz /usr/share/man/pl/man1/vim.1.gz
        editor.ru.1.gz /usr/share/man/ru/man1/vim.1.gz

DIAGNOSTICS

       With  --verbose  update-alternatives  chatters  incessantly  about  its activities on its standard output
       channel.  If problems occur, update-alternatives outputs error messages on its standard error channel and
       returns  an  exit status of 2.  These diagnostics should be self-explanatory; if you do not find them so,
       please report this as a bug.

EXAMPLES

       There are several packages which provide a text editor compatible with vi, for example nvi and vim. Which
       one  is  used  is  controlled  by  the link group vi, which includes links for the program itself and the
       associated manpage.

       To display the available packages which provide vi and the current setting  for  it,  use  the  --display
       action:

              update-alternatives --display vi

       To  choose  a  particular  vi  implementation, use this command as root and then select a number from the
       list:

              update-alternatives --config vi

       To go back to having the vi implementation chosen automatically, do this as root:

              update-alternatives --auto vi

SEE ALSO

       ln(1), FHS, the Filesystem Hierarchy Standard.