Der unbekannte Befehl – „update-alternatives“ der Alternative

In der Linux-Welt ist man in der glücklichen Lage oft Alternativen für einzelne Aufgaben zu haben. Anders als in der Windows-Welt bringen die meisten Linux-Distributionen einen Paketmanager mit die für eine Aufgabe verschiedene Programme zur Verfügung stellen. So gibt es z.B. viele ASCII-Editoren, Webbrowser oder E-Mail-Clients. In der Debian-Welt gibt es mit update-alternatives ein Tool zur Verwaltung dieser Programme mit konkurrierenden Funktionen. Streng genommen dient das Programm nur dazu symbolische Links auf diese Programme zu setzen.

Um sich einen Überblick über die mit update-alternatives verwalteten Bereiche zu erhalten ruft man es mit der Option –get-selections auf:

$ update-alternatives --get-selections 
arptables                      auto     /usr/sbin/arptables-nft
automake                       auto     /usr/bin/automake-1.16
awk                            auto     /usr/bin/mawk
builtins.7.gz                  auto     /usr/share/man/man7/bash-builtins.7.gz
c++                            auto     /usr/bin/g++
c89                            auto     /usr/bin/c89-gcc
c99                            auto     /usr/bin/c99-gcc
cc                             auto     /usr/bin/gcc
cpp                            auto     /usr/bin/cpp
ebtables                       auto     /usr/sbin/ebtables-nft
editor                         manual   /usr/bin/vim.basic
ex                             auto     /usr/bin/vim.basic
fakeroot                       auto     /usr/bin/fakeroot-sysv
from                           auto     /usr/bin/bsd-from
gnome-www-browser              auto     /usr/bin/firefox-esr
ip6tables                      auto     /usr/sbin/ip6tables-nft
iptables                       auto     /usr/sbin/iptables-nft
js                             auto     /usr/bin/nodejs
lzma                           auto     /usr/bin/xz
my.cnf                         auto     /etc/mysql/mariadb.cnf
pager                          auto     /bin/less
pico                           auto     /bin/nano
pinentry                       auto     /usr/bin/pinentry-gtk-2
pinentry-x11                   auto     /usr/bin/pinentry-gtk-2
readline-editor                auto     /usr/bin/rlwrap
rmt                            auto     /usr/sbin/rmt-tar
rview                          auto     /usr/bin/vim.basic
rvim                           auto     /usr/bin/vim.basic
start-here.svg                 auto     /usr/share/icons/gnome/scalable/places/debian-swirl.svg
vi                             auto     /usr/bin/vim.basic
view                           auto     /usr/bin/vim.basic
vim                            auto     /usr/bin/vim.basic
vimdiff                        auto     /usr/bin/vim.basic
w                              auto     /usr/bin/w.procps
write                          auto     /usr/bin/bsd-write
x-cursor-theme                 auto     /usr/share/icons/Adwaita/cursor.theme
x-www-browser                  auto     /usr/bin/firefox-esr

Man sieht das es eine lange Liste ist und vieles von den Einträgen wird man niemals ändern. Interessant sind hier die Einträge z.B. für editor oder pager. Mit diesen Einträgen wird bestimmt welcher Editor bei cron -e oder welcher pager beim Anzeigen der Man-Pages mit man aufgerufen wird.

Um sich die auswählbaren Alternativen anzuzeigen wird das Programm mit  der Option –list und der Section aufgerufen:

$ update-alternatives --list pager
/bin/less
/bin/more
/usr/bin/most
$ update-alternatives --list editor
/bin/nano
/usr/bin/vim.basic

Bei mir sind, wie man oben sieht, als Editoren nano und vim installiert und auswählbar. Mit der Option –config wird ein Menue aufgerufen mit dem man die gewünschte Änderung machen kann:

$ update-alternatives --config editor
Es gibt 2 Auswahlmöglichkeiten für die Alternative editor (welche /usr/bin/editor bereitstellen).

Auswahl Pfad Priorität Status
------------------------------------------------------------
0 /bin/nano 40 automatischer Modus
1 /bin/nano 40 manueller Modus
* 2 /usr/bin/vim.basic 30 manueller Modus

Drücken Sie die Eingabetaste, um die aktuelle Wahl[*] beizubehalten,
oder geben Sie die Auswahlnummer ein:
Do NOT follow this link or you will be banned from the site!