update\-alternatives
Section: suite dpkg (1)
Updated: 2019-04-02
Page Index
NOME
update-alternatives - mantiene collegamenti simbolici che determinano i
comandi predefiniti
SINTASSI
update-alternatives [
opzione...]
comando
DESCRIZIONE
update-alternatives crea, rimuove, mantiene e visualizza informazioni sui
collegamenti simbolici che costituiscono il sistema di alternative di
Debian.
È possibile che in un dato momento nel sistema siano installati più
programmi che hanno la stessa funzione o una funzione simile. Per esempio,
molti sistemi hanno diversi editor di testo installati
contemporaneamente. Questo dà agli utenti del sistema una possibilità di
scelta, permettendo a ciascuno di usare un editor diverso, se lo desidera,
ma rende difficile per un programma fare una buona scelta quando deve
invocare un editor se l'utente non ha impostato una preferenza specifica.
Il sistema delle alternative Debian mira a risolvere questo problema. Nel
file system tutti i file che forniscono una funzionalità intercambiabile
condividono un nome generico. Il sistema delle alternative e
l'amministratore di sistema insieme determinano a quale file faccia
effettivamente riferimento questo nome generico. Per esempio, se sul sistema
sono installati entrambi gli editor di testo ed(1) e nvi(1), il
sistema delle alternative farà sì che il nome generico /usr/bin/editor
faccia in modo predefinito riferimento a /usr/bin/nvi. L'amministratore
di sistema può sovrascrivere ciò e far sì che esso faccia invece riferimento
a /usr/bin/ed, e il sistema delle alternative non modificherà questa
impostazione se ciò non viene esplicitamente richiesto.
Il nome generico non è un collegamento simbolico diretto all'alternativa
selezionata. È invece un collegamento simbolico a un nome nella directory
alternatives, che è a sua volta un collegamento simbolico all'effettivo
file referenziato. Tutto questo perché così le modifiche fatte
dall'amministratore di sistema possono rimanere confinate nella directory
/etc: il FHS (q.v.) spiega le ragioni per cui questa è una Cosa Buona e
Giusta.
Al momento dell'installazione, cambiamento o rimozione di ogni pacchetto che
fornisce un file con una particolare funzionalità, viene invocato
update-alternatives per aggiornare le informazioni su quel file nel
sistema delle alternative. update-alternatives viene solitamente chiamato
dagli script postinst (configurazione) o prerm (rimozione e
deconfigurazione) dei pacchetti Debian.
Spesso è utile che un certo numero di alternative siano sincronizzate, in
modo da venir modificate in gruppo; per esempio, quando sono installate
diverse versioni dell'editor vi(1), la pagina di manuale a cui fa
riferimento /usr/share/man/man1/vi.1 dovrebbe corrispondere
all'eseguibile a cui fa riferimento /usr/bin/vi. update-alternatives
gestisce questo usando collegamenti principali e secondari; quando
viene modificato il principale, anche tutti i secondari ad esso associati
vengono modificati. Un collegamento principale e tutti i suoi secondari
associati compongono un gruppo di collegamenti.
In qualsiasi momento, ogni gruppo di collegamenti è in una di due modalità:
automatica o manuale. Quando un gruppo è in modalità automatica, il sistema
delle alternative deciderà automaticamente se e come aggiornare i
collegamenti quando i pacchetti vengono installati o rimossi. In modalità
manuale, il sistema delle alternative preserva le scelte dell'amministratore
ed evita di modificare i collegamenti (tranne quando qualcosa non è
corretto).
I gruppi di collegamenti sono inizialmente in modalità automatica, quando
vengono introdotti nel sistema. Se l'amministratore del sistema fa modifiche
alle impostazioni automatiche del sistema, queste verranno notate alla
successiva esecuzione di update-alternatives sul gruppo di collegamenti
modificato e il gruppo automaticamente verrà passato alla modalità manuale.
Ogni alternativa è associata ad una priorità. Quando un gruppo di
collegamenti è in modalità automatica, le alternative a cui puntano i membri
del gruppo saranno quelle con la priorità più alta.
When using the --config option, update-alternatives will list all of
the choices for the link group of which given name is the master
alternative name. The current choice is marked with a '*'. You will then
be prompted for your choice regarding this link group. Depending on the
choice made, the link group might no longer be in auto mode. You will
need to use the --auto option in order to return to the automatic mode
(or you can rerun --config and select the entry marked as automatic).
Se si vuole fare la configurazione in modo non interattivo, si può usare
invece l'opzione --set (vedere in seguito).
Pacchetti diversi che forniscono lo stesso file devono farlo
cooperando. In altre parole, l'uso di update-alternatives è
obbligatorio per tutti i pacchetti coinvolti in un caso simile. Non è
possibile sovrascrivere un file in un pacchetto che non utilizza il
meccanismo update-alternatives.
TERMINOLOGIA
Dato che le attività di
update-alternatives sono piuttosto convolute,
alcuni termini specifici aiutano a spiegare il suo funzionamento.
- nome generico (o collegamento dell'alternativa)
-
Un nome, come /usr/bin/editor, che fa riferimento, utilizzando il sistema
delle alternative, ad uno di svariati file con funzione similare.
- nome dell'alternativa
-
Il nome di un collegamento simbolico nella directory delle alternative.
- alternativa (o percorso alternativo)
-
Il nome di uno specifico file nel file system, che può essere reso
accessibile attraverso un nome generico utilizzando il sistema delle
alternative.
- directory delle alternative
-
Una directory, in modo predefinito /etc/alternatives, che contiene i
collegamenti simbolici.
- directory di amministrazione
-
Una directory, in modo predefinito /var/lib/dpkg/alternatives, che contiene
le informazioni di stato di update-alternatives.
- gruppo di collegamenti
-
Un insieme di collegamenti simbolici correlati, pensato per essere
aggiornato in gruppo.
- collegamento principale
-
Il collegamento dell'alternativa, in un gruppo di collegamenti, che
determina come sono configurati gli altri collegamenti nel gruppo
- collegamento secondario
-
Un collegamento dell'alternativa, in un gruppo di collegamenti, che è
controllato dall'impostazione del collegamento principale.
- modalità automatica
-
Quando un gruppo di collegamenti è in modalità automatica, il sistema delle
alternative assicura che i collegamenti nel gruppo puntino all'alternativa
con la priorità più alta appropriata per il gruppo.
- modalità manuale
-
Quando un gruppo di collegamenti è in modalità manuale, il sistema delle
alternative non fa alcuna modifica alle impostazioni dell'amministratore di
sistema.
COMANDI
- --install collegamento nome percorso priorità [--slave collegamento nome percorso]...
-
Aggiunge un gruppo di alternative al sistema. collegamento è il nome
generico del collegamento principale, nome è il nome del suo collegamento
simbolico nella directory delle alternative e percorso è l'alternativa
che viene introdotta per il collegamento principale. Gli argomenti che
seguono --slave sono il nome generico, il nome del collegamento simbolico
nella directory delle alternative e il percorso dell'alternativa per un
collegamento secondario. Possono essere specificate zero o più opzioni
--slave, ciascuna fatta seguire da tre argomenti. Notare che
l'alternativa principale deve esistere o la chiamata non avrà
successo. Tuttavia, se un'alternativa secondaria non esiste, il collegamento
corrispondente semplicemente non verrà installato (verrà comunque
visualizzato un messaggio di avvertimento). Se dove deve essere installato
un collegamento di un'alternativa è installato un qualche file reale, esso
viene conservato, a meno che non venga usata l'opzione --force.
-
Se il nome dell'alternativa specificato esiste già nel registro del sistema
delle alternative, le informazioni fornite verranno aggiunte come un nuovo
insieme di alternative per il gruppo. Altrimenti viene aggiunto un nuovo
gruppo con queste informazioni, impostato in modalità automatica. Se il
gruppo è in modalità automatica, e la priorità delle alternative appena
aggiunte è più alta di qualsiasi altra alternativa installata per questo
gruppo, i collegamenti simbolici verranno aggiornati per puntare alle
alternative appena aggiunte.
- --set nome percorso
-
Imposta il programma percorso come alternativa per nome. È equivalente
a --config ma non è interattivo e perciò è utilizzabile in script.
- --remove nome percorso
-
Rimuove un'alternativa e tutti i collegamenti secondari associati. nome è
il nome nella directory delle alternative e percorso è un nome file
assoluto a cui può essere collegato nome. Se nome è in effetti
collegato a percorso, nome sarà aggiornato in modo da puntare ad
un'altra alternativa appropriata (e il gruppo verrà rimesso in modalità
automatica), oppure rimosso se non c'è più alcuna alternativa corretta. I
collegamenti secondari associati verranno analogamente aggiornati o
rimossi. Se il collegamento attualmente non punta a percorso, non verrà
modificato alcun collegamento; verranno solamente rimosse le informazioni
riguardanti l'alternativa.
- --remove-all nome
-
Rimuove tutte le alternative e tutti i loro collegamenti secondari
associati. nome è un nome nella directory delle alternative.
- --all
-
Invoca --config su tutte le alternative. Può essere proficuamente
combinato con --skip-auto per rivedere e configurare tutte le alternative
che non sono configurate in modalità automatica. Vengono mostrate anche le
alternative non corrette. Perciò un modo semplice per correggere tutte le
alternative difettose è di chiamare yes '' | update-alternatives --force
--all.
- --auto nome
-
Fa passare in modalità automatica il gruppo di collegamenti relativo
all'alternativa per nome. Nel fare ciò, il collegamento simbolico
principale e i suoi collegamenti secondari sono aggiornati in modo da
puntare alle alternative installate con la priorità più alta.
- --display nome
-
Display information about the link group. Information displayed includes
the group's mode (auto or manual), the master and slave links, which
alternative the master link currently points to, what other alternatives are
available (and their corresponding slave alternatives), and the highest
priority alternative currently installed.
- --get-selections
-
List all master alternative names (those controlling a link group) and
their status (since version 1.15.0). Each line contains up to 3 fields
(separated by one or more spaces). The first field is the alternative name,
the second one is the status (either auto or manual), and the last one
contains the current choice in the alternative (beware: it's a filename and
thus might contain spaces).
- --set-selections
-
Read configuration of alternatives on standard input in the format generated
by --get-selections and reconfigure them accordingly (since version
1.15.0).
- --query nome
-
Display information about the link group like --display does, but in a
machine parseable way (since version 1.15.0, see section QUERY FORMAT
below).
- --list nome
-
Visualizza tutte le destinazioni del gruppo di collegamenti
- --config nome
-
Visualizza le alternative disponibili per un gruppo di collegamenti e
permette all'utente di selezionare in modo interattivo quale usare. Il
gruppo di collegamenti viene aggiornato.
- --help
-
Mostra il messaggio sull'uso ed esce.
- --version
-
Mostra la versione ed esce.
OPZIONI
- --altdir directory
-
Specifica la directory delle alternative, quando deve essere diversa da
quella predefinita.
- --admindir directory
-
Specifica la directory di amministrazione, quando deve essere diversa da
quella predefinita.
- --log file
-
Specifies the log file (since version 1.15.0), when this is to be different
from the default (/var/log/alternatives.log).
- --force
-
Allow replacing or dropping any real file that is installed where an
alternative link has to be installed or removed.
- --skip-auto
-
Salta la richiesta di input sulla configurazione per le alternative che sono
configurate in modo corretto in modalità automatica. Questa opzione è
rilevante solo con --config o --all.
- --quiet
-
Do not generate any comments unless errors occur.
- --verbose
-
Generate more comments about what is being done.
- --debug
-
Generate even more comments, helpful for debugging, about what is being done
(since version 1.19.3).
STATO D'USCITA
- 0
-
L'azione richiesta è stata effettuata con successo.
- 2
-
Si sono verificati dei problemi nell'analisi della riga di comando o
nell'effettuare l'azione.
AMBIENTE
- DPKG_ADMINDIR
-
Se impostata e l'opzione --admindir non è stata specificata, verrà usata
come directory di amministrazione di base.
FILE
- /etc/alternatives/
-
La directory delle alternative predefinita. La directory considerata può
essere modificata usando l'opzione --altdir.
- /var/lib/dpkg/alternatives/
-
La directory di amministrazione predefinita. La directory considerata può
essere modificata usando l'opzione --admindir.
FORMATO DI QUERY
The
--query format is using an RFC822-like flat format. It's made of
n
+ 1 blocks where
n is the number of alternatives available in the queried
link group. The first block contains the following fields:
- Name: nome
-
Il nome dell'alternativa nella directory delle alternative.
- Link: collegamento
-
Il nome generico dell'alternativa.
- Slaves: elenco di collegamenti secondari
-
Quando è presente questo campo, le righe successive contengono tutti i
collegamenti secondari associati con il collegamento principale
dell'alternativa, uno per riga. Ogni riga contiene uno spazio, il nome
generico dell'alternativa secondaria, un altro spazio e il percorso del
collegamento secondario.
- Status: stato
-
Lo stato dell'alternativa (auto o manual).
- Best: scelta-migliore
-
Il percorso all'alternativa migliore per questo gruppo di collegamenti; non
è presente se non c'è alcuna alternativa disponibile.
- Value: alternativa-attualmente-selezionata
-
Il percorso dell'alternativa attualmente selezionata. Può anche avere il
valore magico none. Viene usato se il collegamento non esiste.
Gli altri blocchi descrivono le alternative disponibili nel gruppo di
collegamenti interrogato:
- Alternative: percorso-di-questa-alternativa
-
Percorso dell'alternativa di questo blocco.
- Priority: valore-priorità
-
Valore della priorità di questa alternativa.
- Slaves: elenco di collegamenti secondari
-
Quando è presente questo campo, le righe successive contengono tutte le
alternative secondarie associate con il collegamento principale
dell'alternativa, uno per riga. Ogni riga contiene uno spazio, il nome
generico dell'alternativa secondaria, un altro spazio e il percorso
dell'alternativa secondaria.
Example
$ 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
DIAGNOSTICA
Con
--verbose,
update-alternatives si dilunga sul suo standard output
in modo incessante su cosa sta facendo. Se si verificano dei problemi,
update-alternatives produce in output messaggi di errore nel suo canale
dello standard error e restituisce uno stato di uscita 2. Questi messaggi
diagnostici dovrebbero essere autoesplicativi; se non li si ritiene tali,
segnalare la cosa come un bug.
ESEMPI
Ci sono svariati pacchetti che forniscono un editor di testo compatibile con
vi, per esempio
nvi e
vim. Quello da usarsi è controllato dal
gruppo di collegamenti
vi, che include i collegamenti per il programma
stesso e per la pagina di manuale associata.
Per visualizzare tutti i pacchetti disponibili che forniscono vi e la sua
impostazione attuale, usare l'azione --display:
-
update-alternatives --display vi
Per scegliere una particolare implementazione di vi, usare questo comando
da root e poi selezionare un numero dall'elenco:
-
update-alternatives --config vi
Per ritornare alla scelta automatica dell'implementazione di vi, usare
questo da root:
-
update-alternatives --auto vi
VEDERE ANCHE
ln(1), FHS: lo standard per la gerarchia del file system.