Zum Inhalt springen

Update-alternatives: Unterschied zwischen den Versionen

Aus Foxwiki
Zeile 2: Zeile 2:


== Beschreibung ==
== 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 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.
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, 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.


== Installation ==
== Installation ==

Version vom 7. März 2026, 10:23 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.

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.

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

Installation

Aufruf

update-alternatives [Option ] Befehl

Optionen

Unix GNU Parameter Beschreibung

Parameter

Umgebungsvariablen

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

Konfiguration

Dateien

Datei Beschreibung


Anhang

Siehe auch



  1. update-alternatives(1)
  2. dpkg suite
  3. ln(1)
  4. FHS (der Dateisystem-Hierarchie-Standard, Filesystem Hierarchy Standard)

Dokumentation

Man-Page
  1. update-alternatives(1)

Projekt