Per l’autore dello script potrebbe essere estremamente scomodo dover inserire delle parti di codice per verificare la disponibilità sul sistema di un particolare editor, di un particolare browser o altre applicazioni da invocare. Per questo c’è il sistema delle debian-alternatives, un sistema che assegna un nome generico (genname) a ciascuna classe di applicazioni, in modo che con quel nome si possa avviare l’applicazione idonea.
Esempio pratico
Sul vostro sistema ci sono diversi editor di testo, ad esempio jed, vim, nano e pico. Uno script che dovesse avere bisogno di invocare un editor di testo, invece di invocarne esplicitamente uno attraverso il comando diretto, invocherebbe semplicemente il comando
editor
. Sarà poi compito di debian-alternatives avviare un editor effettivamente disponibile sul sistema, in particolare quello deciso da voi oppure quello cui è stata assegnata la maggiore priorità.Quindi sul sistema potrete trovare un generico comando
x-www-browser
che avvia un browser nell’ambiente grafico, un generico javac
che invoca il compilatore Java (ad esempio gcj, oppure quello della SUN, ecc.), e così via. Una cosa analoga avviene anche per le pagine di manuale, ovvero pagine di manuale generiche che fanno riferimento alla manpage dell’opportuna applicazione.Vediamo ora più nel dettaglio come funzionano queste debian-alternatives.
Significato dei termini usati.
Genname: è il nome generico assegnato ad una classe di applicazioni, ed è il nome del file sul filesystem che verrà usato in luogo dell’applicazione particolare. Esempi: /usr/bin/editor, /usr/bin/x-www-browser, ecc.
Symlink: è il nome del link simbolico nella directory /etc/alternatives. Esempi: x-www-browser, editor, ecc.
/etc/alternatives: è la directory che contiene, salvo diversa impostazione, tutti i symlink delle applicazioni, vale a dire quei link simbolici che hanno come nome il nome generico del gruppo e che puntano all’applicazione predefinita del gruppo.
Alternativa: il nome di uno specifico file nel filesystem, che sarà acceduto/invocato attraverso un nome generico.
Link group: insieme di symlink correlati, che si vuole trattare in maniera coordinata.
Master link: il link all’interno di un link group che stabilisce come gli altri link ad esso collegati devono essere configurati.
Slave link: link subordinato ad un master link, e che viene modificato in caso di modifica del master link. Per intenderci, è quello che avviene con le man-pages.
Priorità: è un valore intero che serve a specificare quale applicazione di un gruppo deve essere quella di default, a meno di una ridefinizione manuale dell’utente. E’ anche il parametro che viene preso in considerazione quando si reimposta l’alternativa allo stato automatico.
Comandi ed esempi
Il comando principale con cui si interagisce col sistema delle alternative è
update-alternatives
, e va eseguito sempre con i privilegi di amministratore di sistema. Le opzioni più importanti sono le seguenti:--display
: mostra le impostazioni attuali di un’alternativa;--list
: mostra le possibili scelte per un’alternativa;--config
: configura un’alternativa;--auto
: reimposta lo stato automatico per un’alternativa, cioè la riassegna all’applicazione con priorità maggiore;--install
: installa una nuova alternativa all’interno di un gruppo. Se il gruppo non esiste, lo crea.--remove
: rimuove un’alternativa all’interno di un gruppo, con tutti i suoi slave;--remove-all
: rimuove un intero gruppo di alternative.
--list
update-alternatives --list x-www-browser
Output:/usr/bin/iceweasel
/usr/bin/konqueror
/usr/bin/firefox-2.0
Questo vuol dire che per x-www-browser ci sono tre diverse alternative (Iceweasel, Konqueror e Firefox-2.0).Esempio 2: opzione
--display
update-alternatives --display x-www-browser
Output:x-www-browser - lo status è auto.
il link attualmente punta a /usr/bin/konqueror
/usr/bin/iceweasel - priorità 70
slave x-www-browser.1.gz: /usr/share/man/man1/iceweasel.1.gz
/usr/bin/konqueror - priorità 100
slave x-www-browser.1.gz: /usr/share/man/man1/konqueror.1.gz
/usr/bin/firefox-2.0 - priorità 20
slave x-www-browser.1.gz: /usr/share/man/man1/firefox.1.gz
La `migliore' versione attualmente è /usr/bin/konqueror.
Questo significa che nel gruppo x-www-browser (browser nell’ambiente grafico) sono presenti tre distinte applicazioni: Konqueror, Iceweasel e Firefox-2.0. La dicitura status auto segnala che l’applicazione da associare a x-www-browser è scelta automaticamente in base alla priorità; essendo Konqueror l’applicazione cui è assegnata la priorità più alta, invocando il comando x-www-browser
verrà avviato Konqueror.Esempio 3: opzione
--config
update-alternatives --config x-www-browser
Output:Il carattere * indica la configurazione corrente, mentre il + indica l’applicazione a maggiore priorità. Inserendo 1, 2 o 3 sceglierete quale applicazione associare a x-www-browser; premendo semplicemente invio, invece, manterrete tutto inalterato.Ci sono 3 alternative che forniscono `x-www-browser'.
Selezione Alternativa
-----------------------------------------------
1 /usr/bin/iceweasel
*+ 2 /usr/bin/konqueror
3 /usr/bin/firefox-2.0Premi invio per mantenere il default[*], o inserisci il numero da selezionare:
Esempio 4: opzione
--auto
update-alternatives --auto x-www-browser
Viene reimpostato per x-www-browser il link a priorità maggiore (Konqueror).Esempio 5: opzione
--install
update-alternatives --install /usr/bin/x-www-browser x-www-browser /usr/bin/opera 40 --slave /usr/share/man/man1/x-www-browser.1.gz x-www-browser.1.gz /usr/share/man/man1/opera.1.gz
Attenzione: il precedente comando va scritto su un’unica riga, senza andare a capo!Analizziamo il comando pezzo per pezzo:
l’opzione
--install
serve per aggiungere un’applicazione ad un gruppo o, se il gruppo non esiste ancora, per crearlo.La parte del master link include i seguenti frammenti:
/usr/bin/x-www-browser
: è il file che rappresenta l’applicazione generica (genname)x-www-browser
: è il nome del gruppo, ovvero del symlink nella directory/etc/alternatives
/usr/bin/opera
: è il file che rappresenta l’applicazione da associare al gruppo40
: è la priorità da assegnare a questa applicazione
--slave
, include:/usr/share/man/man1/x-www-browser.1.gz
: il nome del file che rappresenta lo slave link (ovvero il genname dello slave)x-www-browser.1.gz
: il nome dello slave/usr/share/man/man1/opera.1.gz
: il file da associare a questo slave link
--remove
e --remove-all
sono banali, per cui vi invito a leggere la man-page del comando update-alternatives
, in cui troverete ulteriori dettagli.Capita che, dopo l'installazione o rimozione o aggiornamento del software, le alternatives si riconfigurino, sovrascrivendo la precedente configurazione.
Gli amanti del terminale possono usufruire di questo comando:
# update-alternatives --config [alternativa]Chi invece non ha molta dimestichezza con la riga di comando può ricorrere a due software grafici: galternatives oppure kalternatives, rispettivamente per Gnome e per KDE.
Installazione.
Per installare, è sufficiente dare uno dei due comandi, in base a quale dei due programmi si vuole installare:
# apt-get install galternatives
# apt-get install kalternatives
Ora è possibile amministrare graficamente le alternatives, senza scervellarsi col terminale.
Se ti è piaciuto l'articolo , iscriviti al feed cliccando sull'immagine sottostante per tenerti sempre aggiornato sui nuovi contenuti del blog: