Zum Inhalt springen

Update-alternatives: Unterschied zwischen den Versionen

Aus Foxwiki
Keine Bearbeitungszusammenfassung
K Textersetzung - „ “ durch „ “
 
(67 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 1: Zeile 1:
{{DISPLAYTITLE:update-alternatives}}
'''update-alternatives''' - Verwaltung symbolischer Links zur Bestimmung von Standardwerten für Befehle


= Manpage =
== Beschreibung ==
update-alternatives(1)                                                  dpkg suite                                                  update-alternatives(1)
update-alternatives erzeugt, entfernt, verwaltet und zeigt die Informationen über die symbolischen Links, die das [[Debian Alternativ-System]] bilden, an


== BEZEICHNUNG ==
; Programme mit ähnlicher Funktionalität
update-alternatives - Verwaltung symbolischer Links zur Bestimmung von Standardwerten für Befehle
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


== ÜBERSICHT ==
; Debians Alternativ-System
update-alternatives [Option …] Befehl
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


== BESCHREIBUNG ==
; Generische Name
update-alternatives erzeugt, entfernt, verwaltet und zeigt die Informationen über die symbolischen Links, die das „Debian Alternativ-System“ bilden,
Der generische Name ist kein direkter symbolischer Link auf die ausgewählte Alternative
an.
* 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


Es ist möglich, mehrere Programme, die die gleiche oder ähnliche Funktionalität bereitstellen, gleichzeitig auf einem System zu installieren.
; Update
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.
Wenn ein Paket, das eine Datei mit einer bestimmten Funktionalität bereitstellt, installiert, geändert oder entfernt wird, wird update-alternatives aufgerufen, um die Informationen über diese Datei im Alternatives-System zu aktualisieren
* update-alternatives wird normalerweise in den folgenden Debian-Paketbetreuerskripten aufgerufen: postinst (configure), um die Alternative zu installieren und von prerm und postrm (remove), um die Alternative zu entfernen
* Hinweis: In den meisten (wenn nicht allen) Fällen sollte keine weitere Betreuerskriptaktion update-alternatives aufrufen, insbesondere weder upgrade noch disappear, da jede dieser anderen Aktionen zum Verlust des manuellen Zustands einer Alternative, oder zum Hin-und Herspringen oder zum kompletten Umspringen, wenn mehrere von ihnen die gleiche Priorität haben, führen kann


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
Es ist oft sinnvoll, dass eine Reihe von Alternativen synchronisiert werden, sodass 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
ä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.
* update-alternatives erledigt dies mithilfe 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


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
; Linkgruppe
Änderungen des Systemadministrators auf das /etc-Verzeichnis beschränkt bleiben: der FHS (siehe dort) erklärt, warum dies eine gute Idee ist.
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 etwas ist defekt)


Wenn ein Paket, das eine Datei mit einer bestimmten Funktionalität bereitstellt, installiert, geändert oder entfernt wird, wird update-alternatives aufgerufen, um die Informationen über diese Datei im Alternatives-System zu aktualisieren. update-alternatives wird normalerweise in den folgenden Debian-Paketbetreuerskripten aufgerufen: postinst (configure), um die Alternative zu installieren und von prerm und postrm (remove), um die Alternative zu entfernen. Hinweis: In den meisten (wenn nicht allen) Fällen sollte keine weitere Betreuerskriptaktion update-alternatives aufrufen,
Beim erstmaligen Einführen in das System befindet sich eine Linkgruppe im automatischen Modus
insbesondere weder upgrade noch disappear, da jede dieser anderen Aktionen zum Verlust des manuellen Zustands einer Alternative, oder zum Hin-und Herspringen oder zum kompletten Umspringen, wenn mehrere von ihnen die gleiche Priorität haben, führen kann.
* 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


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-
Jede Alternative hat eine ihr zugeordnete Priorität
Gruppe.
* Befindet sich eine Linkgruppe im automatischen Modus, zeigen die Mitglieder einer Gruppe auf die Alternative mit der höchsten Priorität


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


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.
Falls Sie nicht-interaktiv konfigurieren möchten, können Sie stattdessen die Option --set verwenden (siehe unten)


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


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
=== Begriffe ===
--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).
Da die Tätigkeiten von update-alternatives recht komplex sind, sollen einige spezielle Begriffe helfen, seine Vorgehensweise zu erläutern


Falls Sie nicht-interaktiv konfigurieren möchten, können Sie stattdessen die Option --set verwenden (siehe unten).
{| class="wikitable options big"
|-
! Begiff !! Beschreibung
|-
| Generischer Name</br>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</br>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
|}


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.
== Installation ==
<syntaxhighlight lang="bash" highlight="1" line copy>
</syntaxhighlight>


== BEGRIFFE ==
== Aufruf ==
Da die Tätigkeiten von update-alternatives recht komplex sind, sollen einige spezielle Begriffe helfen, seine Vorgehensweise zu erläutern.
<syntaxhighlight lang="bash" highlight="1" line>
update-alternatives [Option …] Befehl
</syntaxhighlight>


generischer Name (oder Alternativ-Link)
=== Optionen ===
Ein Name wie /usr/bin/editor, der sich über das Alternativ-System auf eine Reihe von Dateien mit ähnlicher Funktionalität bezieht.
{| class="wikitable sortable options gnu big"
|-
! Unix !! GNU !! Parameter !! Beschreibung
|-
| || || ||
|-
|}


Alternativ-Name Der Name eines symbolischen Links im Alternativ-Verzeichnis.
=== Befehle ===
; --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


Alternative (oder Alternativ-Pfad)
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
Der Name einer speziellen Datei im Dateisystem, die mittels eines generischen Namens über das Alternativ-System zugreifbar gemacht werden kann.
* 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


Alternativ-Verzeichnis Ein Verzeichnis, standardmäßig /etc/alternatives, das die Symlinks enthält.
; --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


administratives Verzeichnis Ein Verzeichnis, standardmäßig /var/lib/dpkg/alternatives, das die update-alternatives Zustandsinformationen enthält.
; --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


Linkgruppe Ein Satz zusammengehörender Symlinks, die als Gruppe aktualisiert werden sollen.
; --remove-all Name
Entfernt alle Alternativen und deren zugehörige Slave-Links
* Name ist ein Name im Alternativ-Verzeichnis


Master-Link Der Alternativ-Link in einer Linkgruppe, der bestimmt, wie die anderen Links in der Gruppe konfiguriert werden.
; --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


Slave-Link Ein Alternativ-Link in einer Linkgruppe, der durch die Einstellung des Master-Links gesteuert wird.
; --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


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


manueller Modus Ist eine Linkgruppe im manuellen Modus, dann führt das Alternativ-System keine Änderungen an den Einstellungen des Systemadministrators durch.
; --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)


== BEFEHLE ==
; --set-selections
--install Link Name Pfad Priorität [--slave Link Name Pfad] …
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)
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.
; --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")


--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.
; --list Name
Zeigt alle Ziele der Linkgruppe an


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


--remove-all Name Entfernt alle Alternativen und deren zugehörige Slave-Links. Name ist ein Name im Alternativ-Verzeichnis.
; --help
Zeigt einen Hinweis zum Aufruf und beendet das Programm


--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-
; --version
alternatives --force --all ist daher eine einfache Art, um alle defekten Alternativen zu reparieren.
Gibt die Version aus und beendet das Programm


--auto Name
=== Parameter ===
Ü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-
=== Umgebung ===
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.
{| class="wikitable options big"
|-
! Variable !! Beschreibung
|-
| DPKG_ROOT || Falls gesetzt und die Option --instdir oder --root nicht angegeben wurde, wird dies als Dateisystemwurzelverzeichnis verwandt
|-
| DPKG_ADMINDIR || Falls gesetzt und die Option --admindir nicht angegeben wurde, wird dies als Basis-Administrationsverzeichnis verwandt
|}


--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
=== Exit-Status ===
(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).
{| class="wikitable options col1center big"
|-
! Wert !! Beschreibung
|-
| 0 || Erfolg
|-
| >0 || Fehler
|}


--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).
== Anwendung ==
=== Einstellungen anzeigen ===
; get-selections
<syntaxhighlight lang="bash" highlight="1" line copy>
sudo update-alternatives --get-selections
</syntaxhighlight>


--query Name Zeigt alle Informationen über die Linkgruppe an, wie dies auch von --display erfolgt, allerdings in einem maschinenlesbaren Format (seit Version
<syntaxhighlight lang="bash" highlight="" line>
1.15.0, siehe nachfolgenden Abschnitt ABFRAGE-FORMAT).
animate            auto  /usr/bin/animate-im6.q16
animate-im6          auto  /usr/bin/animate-im6.q16
aptitude            auto  /usr/bin/aptitude-curses
arptables          auto  /usr/sbin/arptables-nft
automake            auto  /usr/bin/automake-1.16
awk              auto  /usr/bin/gawk
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
[...]
</syntaxhighlight>


--list Name Zeigt alle Ziele der Linkgruppe an.
=== Einstellungen setzen ===
; config
<syntaxhighlight lang="bash" highlight="1" line copy>
sudo update-alternatives --config vi
</syntaxhighlight>
<syntaxhighlight lang="bash" highlight="" line>
There are 2 choices for the alternative vi (providing /usr/bin/vi)


--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.
  Selection  Path        Priority  Status
------------------------------------------------------------
* 0      /usr/bin/vim.basic  30    auto mode
  1      /usr/bin/vim.basic  30    manual mode
  2      /usr/bin/vim.tiny  15    manual mode


--help Zeigt einen Hinweis zum Aufruf und beendet das Programm.
Press <enter> to keep the current choice[*], or type selection number
</syntaxhighlight>
<syntaxhighlight lang="bash" highlight="1" line copy>
sudo update-alternatives --config editor
</syntaxhighlight>
<syntaxhighlight lang="bash" highlight="" line>
[sudo] password for dirkwagner
There are 3 choices for the alternative editor (providing /usr/bin/editor)


--version Gibt die Version aus und beendet das Programm.
Selection  Path        Priority  Status
------------------------------------------------------------
  0      /bin/nano      40    auto mode
  1      /bin/nano      40    manual mode
* 2      /usr/bin/vim.basic  30    manual mode
  3      /usr/bin/vim.tiny  15    manual mode


== OPTIONEN ==
Press <enter> to keep the current choice[*], or type selection number
--altdir Verzeichnis Spezifiziert das Alternativ-Verzeichnis, wenn sich dieses von der Standardeinstellung unterscheiden soll. Vorgabe ist „/etc/alternatives“.
</syntaxhighlight>


--admindir Verzeichnis Spezifiziert das administrative Verzeichnis, wenn sich dieses von der Standardeinstellung unterscheiden soll. Vorgabe ist
=== Beispiele ===
„/var/lib/dpkg/alternatives“, falls DPKG_ADMINDIR nicht gesetzt wurde.
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 selbst und die zugehörige Handbuchseite beinhaltet


--instdir Verzeichnis Spezifiziert das Installationsverzeichnis, in dem Alternatives-Links erstellt werden (seit Dpkg 1.20.1). Standardmäßig „/“, falls DPKG_ROOT nicht gesetzt wurde.
Um alle verfügbaren Programme anzuzeigen, die vi bereitstellen, und die dazu gehörigen Einstellungen, benutzen Sie die Aktion --display
<syntaxhighlight lang="bash" highlight="1" line copy>
update-alternatives --display vi
</syntaxhighlight>


--root Verzeichnis Spezifiziert das Wurzelverzeichnis (seit Version 1.201.). Dies setzt auch passend die Alternatives-, Installations- und administrativen Verzeichnisse. Standardmäßig „/“, falls DPKG_ROOT nicht gesetzt wurde.
Um eine bestimmte vi-Implementation auszuwählen, benutzen Sie als Root den folgenden Befehl und wählen dann eine Zahl aus der Liste aus
<syntaxhighlight lang="bash" highlight="1" line copy>
update-alternatives --config vi
</syntaxhighlight>


--log Datei Gibt die Protokolldatei an (seit Version 1.15.0), wenn diese sich von der Vorgabe (/var/log/alternatives.log) unterscheiden soll.
Um zur automatischen Auswahl der vi-Implementation zurückzukehren, führen Sie Folgendes als Root aus
 
<syntaxhighlight lang="bash" highlight="1" line copy>
--force Erlaubt die Ersetzung oder Entfernung von echten Dateien, die sich an Stellen befinden, an denen ein Alternativ-Link installiert werden muss.
update-alternatives --auto vi
 
</syntaxhighlight>
--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).
 
== 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_ROOT ==
Falls gesetzt und die Option --instdir oder --root nicht angegeben wurde, wird dies als Dateisystemwurzelverzeichnis verwandt.
 
== 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 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.


Beispiel
=== Beispiel ===
$ update-alternatives --query editor Name: editor Link: /usr/bin/editor Slaves:
<syntaxhighlight lang="bash" highlight="1" line copy>
update-alternatives --query editor
</syntaxhighlight>
<syntaxhighlight lang="bash" highlight="" line>
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
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
Alternative: /bin/ed Priority: -100
Slaves:
Slaves
editor.1.gz /usr/share/man/man1/ed.1.gz
editor.1.gz /usr/share/man/man1/ed.1.gz


Alternative: /usr/bin/vim.basic Priority: 50
Alternative: /usr/bin/vim.basic Priority: 50
Slaves:
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
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
</syntaxhighlight>


== DIAGNOSE ==
=== Problembehebung ===
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.
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


== BEISPIELE ==
== Konfiguration ==
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.
=== Dateien ===
{| class="wikitable options big"
|-
! Datei !! Beschreibung
|-
| ||
|-
| ||
|}


Um alle verfügbaren Programme anzuzeigen, die vi bereitstellen, und die dazu gehörigen Einstellungen, benutzen Sie die Aktion --display:
<noinclude>


update-alternatives --display vi
== Anhang ==
=== Siehe auch ===
<div style="column-count:2">
<categorytree hideroot=on mode="pages">{{BASEPAGENAME}}</categorytree>
</div>
----
{{Special:PrefixIndex/{{BASEPAGENAME}}/}}
----
* [[dpkg]] suite
* [[ln]](1)
* [[FHS]] (der Dateisystem-Hierarchie-Standard, Filesystem Hierarchy Standard)


Um eine bestimmte vi-Implementation auszuwählen, benutzen Sie als Root den folgenden Befehl und wählen dann eine Zahl aus der Liste aus:
=== Dokumentation ===
; Man-Page
# [https://manpages.debian.org/stable/dpkg/update-alternatives.1.de.html update-alternatives(1)]
<!--
; Info-Pages
-->


update-alternatives --config vi
=== Links ===
==== Projekt ====
==== Weblinks ====


Um zur automatischen Auswahl der vi-Implementation zurückzukehren, führen Sie Folgendes als Root aus:
{{DEFAULTSORT:update-alternatives}}
 
{{DISPLAYTITLE:update-alternatives}}
update-alternatives --auto vi
 
== SIEHE AUCH ==
ln(1), FHS (der Dateisystem-Hierarchie-Standard, Filesystem Hierarchy Standard).
 
== ÜBERSETZUNG ==
Die deutsche Übersetzung wurde 2004, 2006-2022 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.
 
1.21.9                                                                  2022-10-15                                                  update-alternatives(1)
 
 
= ubuntuwiki =
 
Ein Vorteil von Linux ist die Vielfalt von Anwendungen. Man kann zwischen mindestens 42 Editoren oder 24 Mail-Programmen wählen. Der Benutzer hat dabei alle Freiheiten bei der Auswahl seiner Lieblingsprogramme. Diese Programme können alle gleichzeitig installiert sein. Für andere Programme kann es aber schwierig sein festzustellen, welches Programm für welche Aufgabe benutzen werden soll.
 
Das Alternativen-System ermöglicht es, aus mehreren Programmen mit gleicher Funktionalität eines als systemweite Vorgabe zu wählen. Verwendet wird es in der Regel bei Debian und darauf basierenden Distributionen – wie Ubuntu.
 
Für – in aller Regel – benutzerspezifische Vorgaben nicht nur von Standard-Anwendungen, sondern u.a. auch von [:MIME-Typ:MIME-Typen], stehen als Alternative die Kommandozeilenwerkzeuge der [:xdg-utils:] bereit.
 
== Funktionsweise ==
Alternativen werden über zweifache symbolische Links verwirklicht. Zum Beispiel ist '''/usr/bin/x-www-browser''' ein symbolischer Link auf '''/etc/alternatives/x-www-browser''', was wiederum ein symbolischer Link auf den als Vorgabe eingestellten Webbrowser ist.
 
{{{#!vorlage Experten
Diese scheinbar unsinnige "Umleitung" erklärt sich dadurch, dass der [wikipedia:Filesystem_Hierarchy_Standard:FHS] empfiehlt, dass vom Systemadministrator durchgeführte Änderungen sich auf das Verzeichnis '''/etc''' beschränken sollten.
}}}
 
== Optionen ==
Das Alternativen-System kann mit dem Kommandozeilenprogramm [1] '''update-alternatives''' konfiguriert werden. Die folgenden Optionen sind gebräuchlich, wobei immer Eingabe und Ausgabe angegeben ist. Mitunter sind bei der Ausgabe noch weitere Ein- und Angaben des Benutzers notwendig.
 
* `--get-selections` -  Zeigt die Namen der Gruppen an: {{{#!vorlage Befehl
update-alternatives --get-selections
}}} Der Gruppenname ist Voraussetzung für alle folgenden Befehle.
 
* `--list GRUPPENNAME` -  Zeigt alle Ziele der Linkgruppe an: {{{#!vorlage Befehl
update-alternatives --list x-www-browser
}}} {{{
/usr/bin/firefox
/usr/bin/epiphany
/usr/bin/dillo
/usr/bin/opera
}}}
 
* `--display GRUPPENNAME` - Zeigt  Informationen über die Linkgruppe an, in der `link` der Master-Link ist. Die angezeigten Informationen enthalten den Modus der Gruppe (automatisch oder manuell), auf welche Alternative der Symlink derzeit zeigt, welche weiteren Alternativen als `slave` zur Verfügung stehen und die installierte Alternative mit der höchsten Priorität. {{{#!vorlage Befehl
update-alternatives --display x-www-browser
}}} {{{x-www-browser - status is manual.
link currently points to /usr/bin/epiphany
/usr/bin/firefox - priority 70
slave x-www-browser.1.gz: /usr/share/man/man1/firefox.1.gz
/usr/bin/epiphany - priority 85
slave x-www-browser.1.gz: /usr/share/man/man1/epiphany.1.gz
/usr/bin/dillo - priority 100
slave x-www-browser.1.gz: /usr/share/man/man1/dillo.1.gz
/usr/bin/opera - priority 80
Current `best' version is /usr/bin/dillo.
}}}
 
* `--config GRUPPENNAME` - Zeigt die verfügbaren Alternativen an und erlaubt es, interaktiv ein Programm als Vorgabe auszuwählen. {{{#!vorlage Befehl
sudo update-alternatives --config x-www-browser
}}} {{{There are 4 alternatives which provide `x-www-browser'.
 
  Selection    Alternative
-----------------------------------------------
      1        /usr/bin/firefox
*    2        /usr/bin/epiphany
+    3        /usr/bin/dillo
      4        /usr/bin/opera
 
Press enter to keep the default[*], or type selection number: 2
Using `/usr/bin/epiphany' to provide `x-www-browser'.
}}}
 
* `--install ZIEL GRUPPENNAME PROGRAMM PRIORITÄT` - Man kann dem Alternativen-System auch eigene Einträge für Anwendungen bekannt machen. Wenn man zum Beispiel den Webbrowser Firefox unter '''/usr/local/bin''' installiert hat, sähe der Befehl so aus: {{{#!vorlage Befehl
sudo update-alternatives --install /usr/bin/x-www-browser x-www-browser /usr/local/bin/firefox 100
}}} {{{#!vorlage Experten
Sehr ausführliche Informationen sind in den [:man:Manpages] von '''update-alternatives''' nachzulesen. Um den generischen Namen des Ziels (der Master-Link; im obigen Beispiel '''/usr/bin/x-www-browser''') von bereits installierten Alternativen-Gruppen herausbekommt, benötigt man die Ausgabe von: {{{#!vorlage Befehl
sed -ne 2p /var/lib/dpkg/alternatives/x-www-browser
\}}}
}}}
 
* `--set GRUPPENNAME PROGRAMM` -  Nachdem man ein Programm "installiert" (im Sinne von dem Alternativen-System bekannt gemacht) hat, setzt man nun das jeweils gewünschte Programm als Alternative.  Dieser Befehl ist äquivalent zu `--config`, aber nicht interaktiv. {{{#!vorlage Befehl
sudo update-alternatives --set x-www-browser /usr/bin/epiphany
}}} {{{
Using `/usr/bin/epiphany' to provide `x-www-browser'
}}}
 
[[Anker(GUI)]]
 
== Grafische Werkzeuge ==
Neben der Möglichkeit, Programme mit dem Alternativen-System systemweit als bevorzugte Anwendung zu setzen, gibt es in den verschiedenen Desktop-Umgebungen die Möglichkeit, Standardanwendungen nur für den jeweiligen Benutzer einzurichten. Dafür sind keine Root-Rechte notwendig. Wurden so Einstellungen in der Desktop-Umgebung vorgenommen, gelten diese für den jeweiligen Nutzer und nicht die systemweiten Einstellungen.
 
[[Anker(Ubuntu)]]
 
[[Bild(gnome-control-center-vorgabe.png, 250, align=right)]]
=== Unity/GNOME 3 ===
In [:Unity:] und bei der [:GNOME_Shell:] können unter
 
* ''"[:GNOME3_Systemeinstellungen:Systemeinstellungen] → Informationen → Vorgabeanwendungen"''
einige Standardanwendungen eingestellt werden. Die Einstellung für das [:Terminal:] legt man stattdessen mit Hilfe desselben fest:
 
{{{#!vorlage Befehl
gsettings list-recursively org.gnome.desktop.default-applications                                # Einstellungen anzeigen
gsettings set org.gnome.desktop.default-applications.terminal exec 'gnome-terminal --maximize'  # Einstellung ändern (Beispiel)
}}}
 
[[Anker(Kubuntu)]]
[[Bild(./kde_standardanwendungen.png, 250, align=right)]]
=== KDE ===
Über das {k} Anwendungsmenü unter
* ''"[:KDE-Systemeinstellungen:Systemeinstellungen] → Anwendungen → Standard-Anwendungen"''
kann man unter [:KDE:] einstellen, welche KDE-Anwendungen benutzt werden sollen.
 
Damit ist es auch möglich, mittels `sudo update-alternatives --config x-www-browser` den systemweiten Browser auf [:Firefox:] und nur den KDE-Webbrowser umzustellen. Dann öffnet z.B. der [:TV-Browser:] (ein Java-Programm) Links weiterhin in Firefox.
 
=== MATE ===
Über das {ma} MATE-Menü unter
* ''"System → Einstellungen → Bevorzugte Anwendungen"''
kann jeder Benutzer individuell einstellen, welcher Webbrowser, welches E-Mail- und welches Terminalprogramm zu nutzen ist.
 
[[Anker(Xubuntu)]]
 
[[Bild(./xfce_bevorzugte_anwendungen.png, 150, align=right)]]
=== Xfce ===
In der Desktopumgebung  [:Xfce:] findet man diesen Dialog im {x} Anwendungsmenü unter
* ''"Einstellungen → Bevorzugte Anwendungen"''
Unter dem Reiter ''"Werkzeuge"'' können noch weitere Einstellungen vorgenommen werden. Neben Webbrowser und E-Mail-Programm können auch Standard-Terminal und -Editor festgelegt werden.


[[Anker(Lubuntu)]]
[[Kategorie:Linux/Software/Verwaltung]]
[[Kategorie:Linux/Befehl]]


[[Bild(./lxde_bevorzugte_anwendungen.png, 150, align=right)]]
</noinclude>
=== LXDE ===
Die Einstellungsmöglichkeiten bei LXDE sind im Vergleich mit den bisherigen Werkzeugen am bescheidensten. Zugänglich sind diese wie bei Xfce über das {l} Anwendungsmenü und
* ''"Einstellungen → Bevorzugte Anwendungen"''
erreichbar.
 
[[Bild(./galternatives.png, 200, align=right)]]
== G Alternatives ==
Neben der Verwaltung der Alternativen über die Kommandozeile oder den integrierten Möglichkeiten der Desktop-Umgebungen gibt ein weiteres grafisches Werkzeug namens ''"G Alternatives"''. Damit können die systemweiten Einstellung über eine graphische Benutzeroberfläche geändert werden. Die Anwendung eignet sie sich für alle auf der Grafikbibliothek [:GTK:] basierenden Oberflächen (praktisch alle offiziellen Ubuntu-Varianten mit Ausnahme von Kubuntu).
 
Dieses Programm kann direkt aus den offiziellen Paketquellen installiert [3] werden. Der Paketname lautet:
 
{{{#!vorlage Paketinstallation
galternatives, universe
}}}
 
Der Programmstart[4] erfolgt bei Ubuntu-Varianten mit einem Anwendungsmenü über ''"System -> Alternatives Configurator"''. Alternativ kann man den Befehl:
 
{{{#!vorlage Befehl
sudo -H galternatives
}}}
 
nutzen. In beiden Fällen sind Root-Rechte [2] erforderlich. Die Bedienung sollte selbsterklärend sein - ansonsten sei noch einmal auf die Grundlagen am Anfang dieses Artikels verwiesen.
 
== Links ==
* [:MIME-Typ:] - Dateiinhalte bestimmten Standardanwendungen zuweisen
[[Kategorie:Linux:Softwareverwaltung]]
{{DEFAULTSORT:update-alternatives}}

Aktuelle Version vom 14. Juni 2026, 00:45 Uhr

update-alternatives - Verwaltung symbolischer Links zur Bestimmung von Standardwerten für Befehle

Beschreibung

update-alternatives erzeugt, entfernt, verwaltet und zeigt die Informationen über die symbolischen Links, die das Debian Alternativ-System bilden, an

Programme mit ähnlicher Funktionalität

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

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
Generische Name

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
Update

Wenn ein Paket, das eine Datei mit einer bestimmten Funktionalität bereitstellt, installiert, geändert oder entfernt wird, wird update-alternatives aufgerufen, um die Informationen über diese Datei im Alternatives-System zu aktualisieren

  • update-alternatives wird normalerweise in den folgenden Debian-Paketbetreuerskripten aufgerufen: postinst (configure), um die Alternative zu installieren und von prerm und postrm (remove), um die Alternative zu entfernen
  • Hinweis: In den meisten (wenn nicht allen) Fällen sollte keine weitere Betreuerskriptaktion update-alternatives aufrufen, insbesondere weder upgrade noch disappear, da jede dieser anderen Aktionen zum Verlust des manuellen Zustands einer Alternative, oder zum Hin-und Herspringen oder zum kompletten Umspringen, wenn mehrere von ihnen die gleiche Priorität haben, führen kann

Es ist oft sinnvoll, dass eine Reihe von Alternativen synchronisiert werden, sodass 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 mithilfe 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
Linkgruppe

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

Begriffe

Da die Tätigkeiten von update-alternatives recht komplex sind, sollen einige spezielle Begriffe helfen, seine Vorgehensweise zu erläutern

Begiff Beschreibung
Generischer Name
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
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

Installation

Aufruf

update-alternatives [Option ] Befehl

Optionen

Unix GNU Parameter Beschreibung

Befehle

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

Parameter

Umgebung

Variable Beschreibung
DPKG_ROOT Falls gesetzt und die Option --instdir oder --root nicht angegeben wurde, wird dies als Dateisystemwurzelverzeichnis verwandt
DPKG_ADMINDIR Falls gesetzt und die Option --admindir nicht angegeben wurde, wird dies als Basis-Administrationsverzeichnis verwandt

Exit-Status

Wert Beschreibung
0 Erfolg
>0 Fehler

Anwendung

Einstellungen anzeigen

get-selections
sudo update-alternatives --get-selections
 animate            auto   /usr/bin/animate-im6.q16
 animate-im6          auto   /usr/bin/animate-im6.q16
 aptitude            auto   /usr/bin/aptitude-curses
 arptables           auto   /usr/sbin/arptables-nft
 automake            auto   /usr/bin/automake-1.16
 awk              auto   /usr/bin/gawk
 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
 [...]

Einstellungen setzen

config
sudo update-alternatives --config vi
 There are 2 choices for the alternative vi (providing /usr/bin/vi)

  Selection  Path        Priority  Status
 ------------------------------------------------------------
 * 0      /usr/bin/vim.basic  30    auto mode
  1      /usr/bin/vim.basic  30    manual mode
  2      /usr/bin/vim.tiny  15    manual mode

 Press <enter> to keep the current choice[*], or type selection number
 sudo update-alternatives --config editor
 [sudo] password for dirkwagner
 There are 3 choices for the alternative editor (providing /usr/bin/editor)

 Selection  Path        Priority  Status
 ------------------------------------------------------------
  0      /bin/nano      40    auto mode
  1      /bin/nano      40    manual mode
 * 2      /usr/bin/vim.basic  30    manual mode
  3      /usr/bin/vim.tiny  15    manual mode

 Press <enter> to keep the current choice[*], or type selection number

Beispiele

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

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

Problembehebung

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

Konfiguration

Dateien

Datei Beschreibung


Anhang

Siehe auch



  • dpkg suite
  • ln(1)
  • FHS (der Dateisystem-Hierarchie-Standard, Filesystem Hierarchy Standard)

Dokumentation

Man-Page
  1. update-alternatives(1)

Projekt