Gibt es eine Möglichkeit, alle konfigurierbaren Alternativen (Symlinks für ähnliche Befehle) im System aufzulisten?

24

Der alternativesBefehl (package chkconfig) auf RHEL / Fedora verwaltet Symlinks, die einen generischen Namen mit einer der alternativen Implementierungen verknüpfen. Eine mtaGruppe von Symlinks kann beispielsweise von Sendmail und Postfix bereitgestellt werden (um zB den sendmailBefehl zu implementieren ):

alternatives --display mta

Während ich --displayeine Gruppe von Symlinks erstellen kann, muss ich zuerst den Namen erraten (dh mta).

Kann ich einfach alle möglichen konfigurierbaren Symlink-Gruppen (wie mta) auflisten, aus denen ich auswählen kann?

Der Grund ist, dass ich gelegentlich einige Gruppennamen vergesse.

uvsmtid
quelle

Antworten:

25

Unter Debian (aber nicht Fedora oder RHEL) finden Sie eine Liste aller "Master-Alternativnamen":

update-alternatives --get-selections

--get-selections Listen Sie alternative Masternamen und deren Status auf.

Und für jede der aufgelisteten können Sie ausführen --list $ALTERNATIVE_NAME, z

update-alternatives --list editor

--list name Alle Ziele der Linkgruppe anzeigen.

Wenn Sie eine Liste aller Alternativen in ihren jeweiligen Gruppen sehen möchten, können Sie Folgendes in der fishShell ausführen :

for alternative in (update-alternatives --get-selections)
    echo $alternative 
    update-alternatives --list (echo $alternative | cut -d" " -f1)
    echo
end | pager

Die (ba | z)? Sh-Syntax sollte ähnlich sein.

Führen Sie aus, um die Alternativen zu ändern sudo update-alternatives --config $ALTERNATIVE_NAME

kzh
quelle
1
Auf meinem Fedora 12 update-alternativesist ein symbolischer Link auf alternatives: /usr/sbin/update-alternatives -> alternatives. Die Option --get-selectionszeigt also nichts an (Beenden mit Fehler beim Anzeigen der Verwendung).
Uvsmtid
1
Ich habe die Frage nicht richtig gelesen. Es tut uns leid. Dies ist für Debian. Ich habe versucht, dasselbe wie Sie zu finden, und diese Antwort kann ich nicht fassen. Ich frage mich, ob ich meine Antwort löschen soll.
kzh
Wie du willst. Wenn Sie der Meinung sind, dass es unter bestimmten Umständen korrekt ist und für andere nützlich sein könnte, lohnt es sich, es einfach zu belassen.
Uvsmtid
16

Die genaue Antwort lautet:

ls /var/lib/alternatives

Directory führt /etc/alternativeseine lange Liste aller Symlinks, die Master und Slaves zusammenführen. Slave-Symlinks können nicht mit dem alternatives --display [symlink]Befehl verwendet werden.

Gleichzeitig enthält das Verzeichnis /var/lib/alternativesStatusinformationen (einschließlich der Master-Slave-Beziehung) für jede Gruppe in einer verkürzten Liste von Dateinamen, die alle direkt mit der --displayOption verwendet werden können. Zum Beispiel /var/lib/alternatives/java:

alternatives --display java
uvsmtid
quelle
4
Unter Ubuntu 12.04 gibt /var/lib/alternativeses anscheinend keine /var/lib/dpkg/alternatives.
Hibou57
1
Tolle Antwort, danke! Ein Zusatz: auf Debian und Armbian ist es /etc/alternativesstattdessen/var/lib/alternatives
Alexey Vesnin
4

Die einfachste Antwort wäre ...

ls /etc/alternatives
Michael Hampton
quelle
1
Es ist immer offensichtlicher, wenn Sie bereits die Antwort wissen :)
gparent
Es war auch meine erste Vermutung. Aber es hat mich nicht befriedigt. Die Liste ist zu lang und enthält Master- und Slave-Links.
uvsmtid
-1

Unter Ubuntu 12.04 (möglicherweise sind einige frühere Versionen ebenfalls zu prüfen) und wahrscheinlich auch unter Debian (zu prüfen):

ls /var/lib/dpkg/alternatives

Listen Sie es auf, um konfigurierbare alternative Namen zu erhalten, da Einträge in diesen Verzeichnissen keine Links sind. Übrigens kann es sein, dass sich in diesem Verzeichnis eine komprimierte Datei befindet, sodass die dort aufgeführten Namen nicht immer unverändert verwendet werden können. Ex. Ich habe ein/var/lib/dpkg/alternatives/psql.1.gz

Hibou57
quelle
Nicht wirklich hilfreich, da die Frage eindeutig besagt, dass sie für RedHat Enterprise Linux gilt. Die RHEL-Konfiguration ist in den anderen Antworten richtig beschrieben.
Kosi2801