Java-Package: un modo migliore di installarlo

Sabato, 12 Gennaio 2008

In precedenza ho scritto un post sulla pacchettizzazione ed installazione della versione 6 del Java Software Developement Kit (jdk6) su Debian Etch. Tale operazione richiedeva la presenza sul sistema di una versione del pacchetto java-package più aggiornata rispetto a quella presente nei repository di Etch. Le mie istruzioni prevedevano il download e l’installazione manuale di una versione aggiornata del pacchetto, prendendola dai repository del ramo testing di Debian (Lenny). Una maniera migliore di ottenere lo stesso risultato consiste nel fare il backport del pacchetto java-package da Lenny ad Etch, usando il comando build di apt-get.

Per prima cosa è necessario modificare il file /etc/apt/sources.list, inserendo come repository dei sorgenti quelli di Lenny al posto di quelli di Etch; quindi al posto di

deb-src http://ftp.at.debian.org/debian/ etch main contrib non-free

metterete

deb-src http://ftp.at.debian.org/debian/ testing main contrib non-free

(ovviamente sostituendo “ftp.at.debian.org” con l’indirizzo del vostro server preferito).
Quindi, dopo aver aggiornato la lista dei pacchetti con

apt-get update

ed esservi spostati in una directory (a vostro piacimento) dedicata alla compilazione dei pacchetti, potete dare i comandi:

  • apt-get build-dep java-package
  • apt-get source --compile java-package

ottenendo nella directory corrente il pacchetto java-package aggiornato pronto per essere installato. Infatti il primo dei precedenti comandi si occupa di installare sul vostro sistema le dipendenze necessarie alla compilazione, mentre il secondo scarica i sorgenti di java-package, li compila e produce il relativo pacchetto deb.

Dopo l’installazione del suddetto pacchetto, col solito

dpkg -i java-package<versione>.deb

potrete provvedere alla pacchettizzazione della versione 6 del JDK secondo le modalità illustrate nel mio precedente post o nell’ottimo howto di debianizzati.org.

Buon lavoro ;-)

Gica


Debian Alternatives Explained

Sabato, 12 Gennaio 2008

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 :-)