Debian Alternatives Explained

In questo articolo vi spiegherò sommariamente in cosa consiste il sistema delle debian-alternatives e come configurarlo.

Premessa

Supponete che su un sistema siano installate molte applicazioni di uno stesso tipo, ad esempio tanti browser, tanti editor di testo o anche tante diverse versioni della macchina virtuale Java. Dal punto di vista dell’utente non ci sono problemi ad invocare l’applicazione desiderata, ma per il sistema potrebbe essere importante sapere quale browser o quale editor di testo avviare in caso di necessità, ad esempio durante l’esecuzione di uno script di installazione o configurazione. 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.

Esempio 1: opzione --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:

Ci sono 3 alternative che forniscono `x-www-browser'.

Selezione Alternativa
-----------------------------------------------
1 /usr/bin/iceweasel
*+ 2 /usr/bin/konqueror
3 /usr/bin/firefox-2.0

Premi invio per mantenere il default[*], o inserisci il numero da selezionare:

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.

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 gruppo
  • 40: è la priorità da assegnare a questa applicazione

La parte dello slave link, che inizia con l’opzione --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

Le opzioni --remove e --remove-all sono banali, per cui vi invito a leggere la man-page del comando update-alternatives, in cui troverete ulteriori dettagli.

Ciao da Gica :-)

Pubblicato il sabato, 12 gennaio 2008 su Debian. Aggiungi ai preferiti il collegamento . 9 commenti.

  1. Bell’articolo, ti stai per guadagnare un link in ingresso! :wink:

  2. Accidenti, sono lusingato! Gran bel blog il vostro! Ricambierò il link ;-)

    Ciao

  3. @Gica78R: beh, grazie anche a te per il link! :mrgreen:

    PS: non è che mi sono dimenticato, l’articolo (che ti darà il link) per adesso è in “programmazione”: ho appena scritto un post, e vorrei aspettare un po’ prima di pubblicare il successivo :wink:

  4. Non preoccuparti! Il link al vostro blog l’ho messo indipendentemente dall’articolo :-)

  5. @Gica78R: non te l’avevo detto per quello. :wink: È che ho pensato di non aver fatto una gran figura, promettendo un post che non è ancora arrivato… :mrgreen:

  6. Come vedi dal trackback, il post l’ho fatto – un po’ in ritardo… le uova pasquali mi hanno rallentato un po’ :mrgreen:

  7. Si, ho letto il tuo post. Ho visto che nel commento al link definisci pure “esaustiva” la mia guida :-D

    Ti ringrazio! Ciao

  1. Pingback: Browser di default su Debian GNU/Linux e Eee PC

  2. Pingback: Impostare il Browser di Default su Debian GNU/Linux (e Asus Eee PC) « Sudoaptget’s Weblog

Lascia un Commento

Fill in your details below or click an icon to log in:

Logo WordPress.com

You are commenting using your WordPress.com account. Log Out / Modifica )

Foto Twitter

You are commenting using your Twitter account. Log Out / Modifica )

Foto di Facebook

You are commenting using your Facebook account. Log Out / Modifica )

Connecting to %s

Iscriviti

Get every new post delivered to your Inbox.