dwww Home | Manual pages | Find package

update-alternatives(1)            dpkg suite            update-alternatives(1)

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

       The 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 following Debian package
       maintainer scripts, postinst (configure) to install the alternative and
       from prerm and postrm (remove) to remove the alternative.  Note: in
       most (if not all) cases no other maintainer script actions should call
       update-alternatives, in particular neither of upgrade nor disappear, as
       any other such action can lose the manual state of an alternative, or
       make the alternative temporarily flip-flop, or completely switch when
       several of them have the same priority.

       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 manual 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.  Defaults to «/etc/alternatives».

       --admindir directory
           Specifies  the  administrative  directory,  when  this  is  to   be
           different       from       the      default.       Defaults      to
           «/var/lib/dpkg/alternatives» if DPKG_ADMINDIR has not been set.

       --instdir directory
           Specifies the installation directory where alternatives links  will
           be  created  (since  version 1.20.1).  Defaults to «/» if DPKG_ROOT
           has not been set.

       --root directory
           Specifies the root directory (since  version  1.20.1).   This  also
           sets  the alternatives, installation and administrative directories
           to match.  Defaults to «/» if DPKG_ROOT has not been set.

       --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_ROOT
           If set and the --instdir or --root options have not been specified,
           it will be used as the filesystem root directory.

       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 stanzas where n is the number  of  alternatives  available  in  the
       queried link group.  The first stanza 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  stanzas  describe the available alternatives in the queried
       link group:

       Alternative: path-of-this-alternative
           Path to this stanza'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 manual page.

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

1.22.6                            2025-09-18            update-alternatives(1)

Generated by dwww version 1.16 on Tue Dec 16 15:14:53 CET 2025.