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.
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.
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
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.
OPZIONI
--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).
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 (the Filesystem Hierarchy Standard).