update\-alternatives
Section: dpkg\-Programmsammlung (1)
Updated: 2019-04-02
Page Index
BEZEICHNUNG
update-alternatives - Verwaltung symbolischer Links zur Bestimmung von
Standardwerten für Befehle
ÜBERSICHT
update-alternatives [
Option …]
Befehl
BESCHREIBUNG
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 nicht ein 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 --config-Option 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 bq*'
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.
BEGRIFFE
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.
BEFEHLE
- --install Link Name Pfad Priorität [--slave Link Name Pfad] …
-
Füge 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
-
Entferne 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
-
Entferne 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. Um alle defekten Alternativen zu
reparieren dient daher ein einfacher Aufruf von yes '' |
update-alternatives --force --all.
- --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
-
Zeige 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ühre 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
-
Lese eine Konfiguration von Alternativen über die Standardeingabe im von
»--get-selections« generierten Format und konfiguriere die Alternativen
entsprechend neu (seit Version 1.15.0).
- --query Name
-
Zeige alle Informationen über die Linkgruppe an, wie dies auch von
--display erfolgt, allerdings in einem maschinenlesbaren Format (seit
Version 1.15.0, siehe Abschnitt ABFRAGE-FORMAT unten).
- --list Name
-
Zeige alle Ziele der Linkgruppe an.
- --config Name
-
Zeige die verfügbaren Alternativen für eine Linkgruppe an und erlaube es dem
Benutzer interaktiv auszuwählen, welche zu benutzen ist. Die Linkgruppe wird
aktualisiert.
- --help
-
Zeige den Bedienungshinweis und beende.
- --version
-
Gebe die Version aus und beende sich.
OPTIONEN
- --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
automatische Modus konfiguriert sind. Diese Option ist nur mit --config
oder --all relevant.
- --quiet
-
Erzeuge 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).
RÜCKGABEWERT
- 0
-
Die angeforderte Aktion wurde erfolgreich ausgeführt.
- 2
-
Beim Lesen der Befehlszeile oder beim Ausführen der Aktion traten Probleme
auf.
UMGEBUNG
- DPKG_ADMINDIR
-
Falls gesetzt und die Option --admindir nicht angegeben wurde, wird dies
als Basis-Administrationsverzeichnis verwandt.
DATEIEN
- /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.
ABFRAGE-FORMAT
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 Masterlink 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 zum Block dieser Alternativen.
- 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 Masterlink 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.
Beispiel
$ 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
DIAGNOSE
Mit
--verbose quatscht
update-alternatives ohne Unterlass ü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.
BEISPIELE
Es gibt mehrere Pakete, die einen zum
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
SIEHE AUCH
ln(1), FHS, der Dateisystem Hierarchie-Standard (Filesystem Hierarchy
Standard).
ÜBERSETZUNG
Die deutsche Übersetzung wurde 2004, 2006-2019 von Helge Kreutzmann
<
debian@helgefjell.de>, 2007 von Florian Rehnisch <
eixman@gmx.de> und
2008 von Sven Joachim <
svenjoac@gmx.de>
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.