C'è un modo per elencare tutte le `alternative` configurabili (collegamenti simbolici per comandi simili) sul sistema?


24

Il alternativescomando (pacchetto chkconfig) su RHEL / Fedora gestisce i collegamenti simbolici che collegano un nome generico a una delle implementazioni alternative. Ad esempio, un mtagruppo di collegamenti simbolici può essere fornito da Sendmail e Postfix (per implementare il sendmailcomando ie ):

alternatives --display mta

Mentre posso --displayun gruppo di collegamenti simbolici, devo prima indovinare il suo nome (cioè mta).

Posso semplicemente elencare tutti i possibili gruppi di link simbolici configurabili (come mta) tra cui scegliere?

Il motivo è che ogni tanto dimentico alcuni nomi di gruppo.

Risposte:


25

Su Debian (ma non su Fedora o RHEL), per vedere un elenco di tutti i "nomi alternativi master":

update-alternatives --get-selections

--get-selections elenca i nomi alternativi principali e il loro stato.

E per ciascuno di quelli elencati, è possibile eseguire --list $ALTERNATIVE_NAME, ad es

update-alternatives --list editor

--list name Visualizza tutte le destinazioni del gruppo di collegamenti.

Se si desidera visualizzare un elenco di tutte le alternative nei rispettivi gruppi, è possibile eseguire quanto segue in fishshell:

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

La sintassi (ba | z)? Sh dovrebbe essere qualcosa di simile.

Per modificare le alternative, eseguire sudo update-alternatives --config $ALTERNATIVE_NAME


1
Sul mio Fedora 12 update-alternativesè un link simbolico a alternatives: /usr/sbin/update-alternatives -> alternatives. Quindi, l'opzione --get-selectionsnon mostra nulla (esci con errore che mostra l'utilizzo).
uvsmtid,

1
Non ho letto correttamente la domanda. Scusate. Questo è per Debian. Stavo cercando di trovare la tua stessa cosa e non riesco a trovare questa risposta. Mi chiedo se dovrei eliminare la mia risposta?
kzh

Sta a te. Se ritieni che sia corretto in alcune circostanze e possa essere utile per chiunque altro, vale la pena lasciarlo.
uvsmtid,

16

La risposta esatta è:

ls /var/lib/alternatives

Directory /etc/alternativesmantiene un lungo elenco piatto di tutti i collegamenti simbolici che mescolano insieme master e slave. I collegamenti simbolici slave non possono essere utilizzati con il alternatives --display [symlink]comando.

Allo stesso tempo, directory /var/lib/alternativescontiene le informazioni di stato (tra cui relazione master-slave) per ogni gruppo in accorciato lista di nomi di file tutti i dei quali può essere utilizzato direttamente con --displayl'opzione. Ad esempio /var/lib/alternatives/java:

alternatives --display java

4
Su Ubuntu 12.04, non c'è /var/lib/alternatives, sembra esserlo /var/lib/dpkg/alternatives.
Hibou57,

1
Ottima risposta, grazie! Un'aggiunta: su Debian e Armbian è /etc/alternativesinvece di/var/lib/alternatives
Alexey Vesnin il

4

La risposta più semplice sarebbe ...

ls /etc/alternatives

1
È sempre più ovvio quando conosci già la risposta :)
gparent

Era anche la mia prima ipotesi. Ma non mi ha soddisfatto. L'elenco è troppo lungo e contiene tutti i collegamenti master e slave.
uvsmtid

-1

Su Ubuntu 12.04 (potrebbero essere presenti anche alcune versioni precedenti, da verificare) e probabilmente anche Debian (da verificare):

ls /var/lib/dpkg/alternatives

Elencalo solo per ottenere nomi alternativi configurabili, poiché le voci in queste directory non sono collegamenti. A proposito, potrebbe esserci un file compresso in questa directory, quindi i nomi elencati non possono sempre essere usati così come sono. Ex. Ho un/var/lib/dpkg/alternatives/psql.1.gz


Non molto utile, poiché la domanda afferma chiaramente che si applica a RedHat Enterprise Linux. Il modo di configurazione di RHEL è correttamente descritto nelle altre risposte.
Kosi2801,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.