update-alternatives - Verwaltung symbolischer Links zur Bestimmung
von Standardwerten für Befehle
ÜBERSICHT
update-alternatives [Option …]
Befehl
update-alternatives erzeugt, entfernt, verwaltet und zeigt
die Informationen über die symbolischen Links, die das „Debian
Alternativ-System“ bilden, an.
Es ist möglich, mehrere Programme, die die gleiche oder
ähnliche Funktionalität bereitstellen, gleichzeitig auf einem
System zu installieren. Beispielsweise sind auf vielen Systemen mehrere
Texteditoren gleichzeitig installiert. Dies gibt den Benutzern eines Systems
die Möglichkeit, falls gewünscht, jeweils einen anderen Editor
zu verwenden, allerdings wird es damit für ein Programm schwierig,
eine gute Wahl für einen Editor zum Starten zu treffen, falls der
Benutzer keine spezielle Wahl getroffen hat.
Debians Alternativ-System hat das Ziel, dieses Problem zu
lösen. Ein generischer Name im Dateisystem wird von allen Dateien,
die austauschbare Funktionalität bereitstellen, verwendet. Das
Alternativ-System bestimmt zusammen mit dem Systemadministrator, welche
Datei tatsächlich durch diesen generischen Namen referenziert wird.
Falls beispielsweise sowohl der Texteditor ed(1) als auch
nvi(1) im System installiert sind, wird das Alternativ-System
dafür sorgen, dass der generische Name /usr/bin/editor
standardmäßig auf /usr/bin/nvi zeigt. Der
Systemadministrator kann dies ändern und dafür sorgen, dass er
stattdessen auf /usr/bin/ed zeigt, und das Alternativ-System wird
diese Einstellung nicht verändern, bis es explizit dazu aufgefordert
wird.
Der generische Name ist kein direkter symbolischer Link auf die
ausgewählte Alternative. Stattdessen ist es ein symbolischer Link auf
einen Namen im Alternativ-Verzeichnis, welches wiederum ein
symbolischer Link auf die tatsächlich referenzierte Datei ist. Dies
ist so realisiert, damit die Änderungen des Systemadministrators auf
das /etc-Verzeichnis beschränkt bleiben: der FHS (siehe dort)
erklärt, warum dies eine gute Idee ist.
Für jedes Paket, das eine Datei mit einer bestimmten
Funktionalität bereitstellt, wird bei der Installation, der
Änderung oder der Entfernung update-alternatives aufgerufen,
um die Informationen über diese Datei im Alternativ-System zu
aktualisieren. update-alternatives wird gewöhnlich vom Skript
postinst (configure) oder prerm (remove und deconfigure) eines
Debian-Paketes aufgerufen.
Es ist oft sinnvoll, dass eine Reihe von Alternativen
synchronisiert werden, so dass sie als Gruppe geändert werden; wenn
beispielsweise mehrere Versionen des vi(1) Editors installiert sind,
sollte die Handbuchseite, die durch /usr/share/man/man1/vi.1
referenziert wird, zu dem ausführbaren Programm, dass durch
/usr/bin/vi referenziert wird, gehören.
update-alternatives erledigt dies mit Hilfe von Master- und
Slave-Links; wird der Master-Link geändert, wird auch jeder
zugehörige Slave-Link geändert. Ein Master-Link und seine
zugehörigen Slave-Links bilden zusammen eine Link-Gruppe.
Eine Linkgruppe ist zu jeder Zeit in einem der beiden Modi:
automatisch oder manuell. Ist eine Gruppe im automatischen Modus, dann wird
das Alternativ-System bei der Paketinstallation und -entfernung automatisch
entscheiden, ob und wie die Links aktualisiert werden. Im manuellen Modus
wird das Alternativ-System die Wahl des Administrators beibehalten und
Änderungen der Links vermeiden (außer irgendetwas ist
defekt).
Beim erstmaligen Einführen in das System befindet sich eine
Linkgruppe im automatischen Modus. Führt der Systemadministrator
Änderungen an den automatischen Einstellungen des Systems durch, wird
dies beim nächsten Aufruf von update-alternatives auf die
Linkgruppe bemerkt und die Gruppe wird automatisch in den manuellen Modus
umgeschaltet.
Jede Alternative hat eine ihr zugeordnete Priorität.
Befindet sich eine Linkgruppe im automatischen Modus, zeigen die Mitglieder
einer Gruppe auf die Alternative mit der höchsten
Priorität.
Wird die Option --config verwendet, dann zeigt
update-alternatives alle Auswahlmöglichkeiten für die
Link-Gruppe an, für die der gegebene Name der
Master-Alternative-Name ist. Die aktuelle Auswahl ist mit ‚*’
markiert. Sie werden dann aufgefordert, Ihre Auswahl bezüglich der
Linkgruppe anzugeben. Abhängig von der getroffenen Auswahl
könnte sich die Link-Gruppe nicht mehr im automatischen Modus
befinden. Sie müssen dann die Option --auto verwenden, um
wieder in den automatischen Zustand zurückzukehren (oder Sie
können --config erneut ausführen und den als
automatisch markierten Eintrag auswählen).
Falls Sie nicht-interaktiv konfigurieren möchten,
können Sie stattdessen die Option --set verwenden (siehe
unten).
Verschiedene Pakete, die die gleiche Datei bereitstellen,
müssen dies kooperativ durchführen. Anders gesagt ist
in diesem Fall die Verwendung von update-alternatives für alle
beteiligten Pakete zwingend. Es ist nicht möglich, sich
über eine Datei in einem Paket hinwegzusetzen, welches den
update-alternatives-Mechanismus nicht verwendet.
Da die Tätigkeiten von update-alternatives recht
komplex sind, sollen einige spezielle Begriffe helfen, seine Vorgehensweise
zu erläutern.
- generischer Name
(oder Alternativ-Link)
- Ein Name wie /usr/bin/editor, der sich über das
Alternativ-System auf eine Reihe von Dateien mit ähnlicher
Funktionalität bezieht.
- Alternativ-Name
- Der Name eines symbolischen Links im Alternativ-Verzeichnis.
- Alternative
(oder Alternativ-Pfad)
- Der Name einer speziellen Datei im Dateisystem, die mittels eines
generischen Namens über das Alternativ-System zugreifbar gemacht
werden kann.
- Alternativ-Verzeichnis
- Ein Verzeichnis, standardmäßig /etc/alternatives, das
die Symlinks enthält.
- administratives
Verzeichnis
- Ein Verzeichnis, standardmäßig
/var/lib/dpkg/alternatives, das die update-alternatives
Zustandsinformationen enthält.
- Linkgruppe
- Ein Satz zusammengehörender Symlinks, die als Gruppe aktualisiert
werden sollen.
- Master-Link
- Der Alternativ-Link in einer Linkgruppe, der bestimmt, wie die anderen
Links in der Gruppe konfiguriert werden.
- Slave-Link
- Ein Alternativ-Link in einer Linkgruppe, der durch die Einstellung des
Master-Links gesteuert wird.
- automatischer
Modus
- Ist eine Linkgruppe im automatischen Modus, dann sorgt das
Alternativ-System dafür, dass die Links in der Gruppe auf die
für die Gruppe passende Alternative mit der höchsten
Priorität zeigen.
- manueller
Modus
- Ist eine Linkgruppe im manuellen Modus, dann führt das
Alternativ-System keine Änderungen an den Einstellungen des
Systemadministrators durch.
- --install Link
Name Pfad Priorität [--slave Link Name Pfad]
…
- Fügt eine Gruppe von Alternativen zum System hinzu. Link ist
der generische Name des Master-Links, Name ist der Name seines
Symlinks im Alternativ-Verzeichnis und Pfad ist die Alternative,
die für den Master-Link eingeführt wird. Die Argumente nach
--slave sind der generische Name, Symlink-Name in dem
Alternativ-Verzeichnis und der Alternativ-Pfad für den Slave-Link.
Null oder mehrere --slave-Optionen, jede von drei Argumenten
gefolgt, können spezifiziert werden. Beachten Sie, dass die
Master-Alternative existieren muss, ansonsten schlägt der Aufruf
fehl. Falls allerdings eine Slave-Alternative nicht existiert, wird der
zugehörige Slave-Alternative-Link einfach nicht installiert (es
wird noch eine Warnung ausgegeben). Falls eine echte Datei an einer Stelle
installiert wird, an der ein Alternativ-Link installiert werden muss, wird
diese beibehalten, solange --force nicht verwandt wird.
- Falls der angegebene Alternativ-Name bereits in den Aufzeichnungen des
Alternativ-Systems existiert, werden die angegebenen Informationen als
neuer Satz von Alternativen für die Gruppe hinzugefügt.
Andernfalls wird eine neue Gruppe, eingestellt im automatischen Modus, mit
dieser Information hinzugefügt. Falls die Gruppe sich im
automatischen Modus befindet und die Priorität der neu
hinzugefügten Alternative höher ist als die jeder anderen
installierten Alternative für diese Gruppe, werden die Symlinks
aktualisiert, so dass sie auf die neu hinzugefügte Alternative
zeigen.
- --set Name
Pfad
- Setzt das Programm Pfad als Alternative für Name.
Dies ist äquivalent zu --config, ist aber nicht interaktiv
und kann somit geskriptet werden.
- --remove Name
Pfad
- Entfernt eine Alternative und alle zugehörigen Slave-Links.
Name ist ein Name im Alternativ-Verzeichnis, und Pfad ist
ein absoluter Dateiname, zu dem Name gelinkt werden könnte.
Falls Name tatsächlich nach Pfad gelinkt ist, dann
wird Name aktualisiert, um auf eine andere geeignete Alternative zu
zeigen (und die Gruppe wird wieder in den automatischen Modus versetzt)
oder entfernt, falls keine solche Alternative übrig bleibt.
Zugehörige Slave-Links werden entsprechend aktualisiert oder
entfernt. Falls der Link derzeit nicht auf Pfad zeigt, werden keine
Links geändert; nur die Information über die Alternative
wird entfernt.
- --remove-all
Name
- Entfernt alle Alternativen und deren zugehörige Slave-Links.
Name ist ein Name im Alternativ-Verzeichnis.
- --all
- Ruft --config für alle Alternativen auf. In der Kombination
mit --skip-auto kann dies nützlich sein, um alle
Alternativen zu prüfen und zu konfigurieren, die sich nicht im
automatischen Modus befinden. Defekte Alternativen werden auch angezeigt.
Ein Aufruf von yes ” | update-alternatives --force
--all ist daher eine einfache Art, um alle defekten Alternativen zu
reparieren.
- --auto
Name
- Überführt die Linkgruppe hinter der Alternative mit Name
Name in den automatischen Modus. Bei diesem Prozess werden der
Master-Symlink und seine Slave-Links aktualisiert, um auf die installierte
Alternative mit höchster Priorität zu zeigen.
- --display
Name
- Zeigt Informationen über die Linkgruppe an. Die angezeigten
Informationen enthalten den Modus der Gruppe (automatisch oder manuell),
die Master- und Slave-Links, auf welche Alternative der Master-Link
derzeit zeigt, welche weiteren Alternativen zur Verfügung stehen
(und ihre zugehörigen Slave-Alternativen), und die installierte
Alternative mit der höchsten Priorität.
- --get-selections
- Führt alle Master-Alternativ-Namen (die eine Linkgruppe steuern)
mit ihrem Status auf (seit Version 1.15.0). Jede Zeile enthält bis
zu 3 Felder (getrennt durch mindestens ein Leerzeichen). Im ersten Feld
steht der Alternativ-Name, im zweiten der Status (entweder auto
oder manual) und im letzten die derzeitige Wahl der Alternative
(Achtung: Dies ist ein Dateiname, der Leerzeichen enthalten kann).
- --set-selections
- Liest eine Konfiguration von Alternativen über die Standardeingabe
im von „--get-selections“ generierten Format und
konfiguriert die Alternativen entsprechend neu (seit Version 1.15.0).
- --query
Name
- Zeigt alle Informationen über die Linkgruppe an, wie dies auch von
--display erfolgt, allerdings in einem maschinenlesbaren Format
(seit Version 1.15.0, siehe nachfolgenden Abschnitt
ABFRAGE-FORMAT).
- --list
Name
- Zeigt alle Ziele der Linkgruppe an.
- --config
Name
- Zeigt die verfügbaren Alternativen für eine Linkgruppe an
und erlaubt es dem Benutzer, interaktiv auszuwählen, welche zu
benutzen ist. Die Linkgruppe wird aktualisiert.
- --help
- Zeigt einen Hinweis zum Aufruf und beendet das Programm.
- --version
- Gibt die Version aus und beendet das Programm.
- --altdir
Verzeichnis
- Spezifiziert das Alternativ-Verzeichnis, wenn sich dieses von der
Standardeinstellung unterscheiden soll.
- --admindir
Verzeichnis
- Spezifiziert das administrative Verzeichnis, wenn sich dieses von der
Standardeinstellung unterscheiden soll.
- --log
Datei
- Gibt die Protokolldatei an (seit Version 1.15.0), wenn diese sich von der
Vorgabe (/var/log/alternatives.log) unterscheiden soll.
- --force
- Erlaubt die Ersetzung oder Entfernung von echten Dateien, die sich an
Stellen befinden, an denen ein Alternativ-Link installiert werden
muss.
- --skip-auto
- Überspringt die Konfigurationsabfrage für Alternativen, die
korrekt im automatischen Modus konfiguriert sind. Diese Option ist nur mit
--config oder --all relevant.
- --quiet
- Erzeugt keine Kommentare, es sei denn, ein Fehler tritt auf.
- --verbose
- Erzeugt mehr Kommentare darüber, was getan wird.
- --debug
- Erzeugt mehr Kommentare darüber, hilfreich für die
Fehlersuche, was getan wird (seit Version 1.19.3).
- 0
- Die angeforderte Aktion wurde erfolgreich ausgeführt.
- 2
- Beim Lesen der Befehlszeile oder beim Ausführen der Aktion traten
Probleme auf.
- DPKG_ADMINDIR
- Falls gesetzt und die Option --admindir nicht angegeben wurde, wird
dies als Basis-Administrationsverzeichnis verwandt.
- /etc/alternatives/
- Das standardmäßige Alternativ-Verzeichnis. Kann mittels der
Option --altdir geändert werden.
- /var/lib/dpkg/alternatives/
- Das standardmäßige administrative Verzeichnis. Kann mittels
der --admindir Option geändert werden.
Das Format von --query ist ein RFC822-artiges, flaches
Format. Es besteht aus n+1 Blöcken, wobei n die Anzahl
der in einer abgefragten Linkgruppe verfügbaren Alternativen ist. Der
erste Block enthält die folgenden Felder:
- Name:
Name
- Der alternative Name im Alternativ-Verzeichnis.
- Link:
Link
- Der generische Name der Alternative.
- Slaves:
Liste-von-Slaves
- Wenn diese Feld vorhanden ist, enthält die nächste
Zeile alle Slave-Links, die dem Master-Link dieser Alternativen zugeordnet
sind. Pro Zeile wird ein Slave aufgeführt. Jede Zeile
enthält ein Leerzeichen, den generischen Namen des Slaves, ein
weiteres Leerzeichen und den Pfad zu dem Slave-Link.
- Status:
Status
- Der Status der Alternative (auto oder manual).
- Best:
beste-Wahl
- Der Pfad der besten Alternative für diese Linkgruppe. Nicht
vorhanden, falls keine Alternative verfügbar ist.
- Value:
derzeit-ausgewählte-Alternative
- Der Pfad der derzeit ausgewählten Alternative. Es akzeptiert auch
den magischen Wert none, der verwandt wird, falls der Link nicht
existiert.
Die anderen Blöcke beschreiben die verfügbaren
Alternativen in der abgefragten Linkgruppe:
- Alternative:
Pfad-dieser-Alternativen
- Pfad zu der Alternative dieses Blocks.
- Priority:
Prioritätswert
- Wert der Priorität dieser Alternativen.
- Slaves:
Liste-von-Slaves
- Wenn dieses Feld vorhanden ist, enthält die nächste
Zeile alle Slave-Alternativen, die dem Master-Link dieser Alternativen
zugeordnet sind. Pro Zeile wird ein Slave aufgeführt. Jede Zeile
enthält ein Leerzeichen, den generischen Namen des Slaves, ein
weiteres Leerzeichen und den Pfad zu der Slave-Alternative.
$ 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
Mit --verbose berichtet update-alternatives
fortwährend über seine Aktivitäten auf seinem
Standardausgabekanal. Falls Probleme auftreten, gibt
update-alternatives eine Fehlermeldung auf seinem Standardfehlerkanal
aus und beendet sich mit dem Exit-Status 2. Die Diagnostiken sollten
selbsterklärend sein; falls Sie dies nicht so empfinden, melden Sie
dies bitte als Fehler.
Es gibt mehrere Pakete, die einen vi-kompatiblen Texteditor
bereitstellen, beispielsweise nvi und vim. Welcher benutzt
wird, wird durch die Linkgruppe vi eingestellt, welche Links
für das Programm selber und die zugehörige Handbuchseite
beinhaltet.
Um alle verfügbaren Programme anzuzeigen, die vi
bereitstellen, und die dazu gehörigen Einstellungen, benutzen Sie die
Aktion --display:
update-alternatives --display vi
Um eine bestimmte vi-Implementation auszuwählen,
benutzen Sie als Root den folgenden Befehl und wählen dann eine Zahl
aus der Liste aus:
update-alternatives --config vi
Um zur automatischen Auswahl der vi-Implementation
zurückzukehren, führen Sie Folgendes als Root aus:
update-alternatives --auto vi
ln(1), FHS, der Dateisystem-Hierarchie-Standard (Filesystem
Hierarchy Standard).
ÜBERSETZUNG
Die deutsche Übersetzung wurde 2004, 2006-2020 von Helge
Kreutzmann <debian@helgefjell.de>, 2007 von Florian Rehnisch
<eixman@gmx.de>, 2008 von Sven Joachim <svenjoac@gmx.de> und
2019,2020 von Mario Blättermann <mario.blaettermann@gmail.com>
angefertigt. Diese Übersetzung ist Freie Dokumentation; lesen Sie die
GNU General Public License Version 2 oder neuer für die
Kopierbedingungen. Es gibt KEINE HAFTUNG.