update-alternatives - mantiene collegamenti simbolici che
determinano i comandi predefiniti
update-alternatives [opzione...] comando
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.
When each package providing a file with a particular functionality
is installed, changed or removed, update-alternatives is called to
update information about that file in the alternatives system.
update-alternatives is usually called from the following Debian
package maintainer scripts, postinst (configure) to install the
alternative and from prerm and postrm (remove) to remove the
alternative. Note: in most (if not all) cases no other maintainer
script actions should call update-alternatives, in particular neither
of upgrade nor disappear, as any other such action can lose
the manual state of an alternative, or make the alternative temporarily
flip-flop, or completely switch when several of them have the same
priority.
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.
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.
- --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
- Set the program path as alternative for name. This is
equivalent to --config but is non-interactive and thus
scriptable.
- --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.
- --altdir
directory
- Specifies the alternatives directory, when this is to be different from
the default. Defaults to «/etc/alternatives».
- --admindir
directory
- Specifies the administrative directory, when this is to be different from
the default. Defaults to
«/var/lib/dpkg/alternatives»
- --instdir
directory
- Specifies the installation directory where alternatives links will be
created (since version 1.20.1). Defaults to «».
- --root
directory
- Specifies the root directory (since version 1.20.1). This also sets the
alternatives, installation and administrative directories to match.
Defaults to «».
- --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).
- 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.
- DPKG_ADMINDIR
- Se impostata e l'opzione --admindir non è stata specificata,
verrà usata come directory di amministrazione di base.
- /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.
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.
$ 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
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.
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
ln(1), FHS (the Filesystem Hierarchy Standard).