10.10 Some users like mawk, others like gawk; some like vim, others like elvis; some like trn, others like tin; how does Debian support diversity?
There are several cases where two packages provide two different versions of a
program, both of which provide the same core functionality. Users might prefer
one over another out of habit, or because the user interface of one package is
somehow more pleasing than the interface of another. Other users on the same
system might make a different choice.
Debian uses a "virtual" package system to allow system administrators
to choose (or let users choose) their favorite tools when there are two or more
that provide the same basic functionality, yet satisfy package dependency
requirements without specifying a particular package.
For example, there might exist two different versions of newsreaders on a
system. The news server package might 'recommend' that there exist
some news reader on the system, but the choice of tin or
trn is left up to the individual user. This is satisfied by
having both the tin
and trn
packages provide the
virtual package news-reader
. Which program is invoked is
determined by a link pointing from a file with the virtual package name
/etc/alternatives/news-reader to the selected file, e.g.,
/usr/bin/trn.
A single link is insufficient to support full use of an alternate program;
normally, manual pages, and possibly other supporting files must be selected as
well. The Perl script update-alternatives provides a way of
ensuring that all the files associated with a specified package are selected as
a system default.
For example, to check what executables provide `x-window-manager', run:
update-alternatives --display x-window-manager
If you want to change it, run:
update-alternatives --config x-window-manager
And follow the instructions on the screen (basically, press the number next to
the entry you'd like better).
If a package doesn't register itself as a window manager for some reason (file
a bug if it's in error), or if you use a window manager from /usr/local
directory, the selections on screen won't contain your preferred entry. You
can update the link through command line options, like this:
update-alternatives --install /usr/bin/x-window-manager \
x-window-manager /usr/local/bin/wmaker-cvs 50
The first argument to `--install' option is the symlink that points to
/etc/alternatives/NAME, where NAME is the second argument. The third argument
is the program to which /etc/alternatives/NAME should point to, and the fourth
argument is the priority (larger value means the alternative will more probably
get picked automatically).
To remove an alternative you added, simply run:
update-alternatives --remove x-window-manager /usr/local/bin/wmaker-cvs