Alternatives: differenze tra le versioni

Da Guide@Debianizzati.Org.
Vai alla navigazione Vai alla ricerca
m (aggiunti link)
m (aggiunta "get-selections" + verifica guida)
 
(25 versioni intermedie di 6 utenti non mostrate)
Riga 1: Riga 1:
Pbuilder � uno strumento che permette di creare un ambiente pulito per la compilazione e il test di pacchetti Debian. Inoltre pu� essere usato anche per effettuare i backport, compilazioni particolari e tutto quello che pu� richiedere l'uso di un ambiente pulito e controllato.
{{Versioni compatibili}}
== Introduzione ==
Le ''alternative'' sono un sistema di link simbolici che permettono di gestire comodamente i programmi di default per ogni categoria di applicazioni (browser, editor, ecc ...).


= Installazione =
L'idea che è alla base di questo sistema è di avere un database che raccoglie le possibili alternative ad una applicazione (per esempio, <code>x-www-browser</code> è una ''alternativa'' che può essere collegata al browser proferito).
Pbuilder �, ovviamente, contenuto in Debian:
<pre>
# apt-get install pbuilder
</pre>


= Configurazione e Opzioni =
== Struttura del sistema ==
Normalmente non sono necessarie configurazioni particolari, osserviamo, perci�, le opzioni pi� importanti:


== pbuilder ==
== Elenco Alternatives ==
; --basetgz [base.tgz] : permette di indicare una locazione, per il [[tarball]] dell'ambiente da gestire, diverso da quello di default
<div align="center">
; --buildplace [location of build] : permette di specificare un directory, diversa da quella di default, dove ricreare l'ambiente ed eseguire le compilazioni
{|border="1" cellpadding="0" cellspacing="0" width="90%"
; --mirror [mirror location] : permette di specificare un [[mirror]] Debian diverso da quello predefinito
|Nome
; --othermirror [other mirror location in apt deb-line format, delimited with | signs] : permette di aggiungere altri mirror (o repository)
|Descrizione
; --http-proxy [proxy] : se � presente un proxy http nella rete, � possibile gestirne l'accesso (nella forma http://username:password@server)
|-
; --distribution [distribution(potato|woody|sarge|sid|etch|experimental)] : imposta la distribuzione
|editor
; --buildresult [location-to-copy-build-result] : permette di specificare una directory diversa in cui posizionare i pacchetti creati
|
; --aptcache [location of retrieved package files] : permette di specificare una directory in cui immagazzinare i pacchetti debian scaricati (e usati) per soddisfare le dipendenze per la compilazione
|-
; --configfile [configuration file to load] : specifica un file di configurazione alternativo
|fakeroot
; --debemail [mail address] : imposta l'indirizzo email
|
; --debbuildopts [dpkg-buildpackage options] : permette di impostare delle opzioni aggiuntive per il comando ''dpkg-buildpackage'', che si occupa della creazione di un pacchetto Debian a partire dai sorgenti
|-
; --logfile [filename to output log] : specifica un file di log, utile per analizzare con calma i risultati delle compilazioni
|firefox-javaplugin.so
; --binary-arch : permette di impostare l'architettura da usare per la creazione dell'ambiente (utile nel caso di supporto per pi� architetture (macchina a 64 bit))
|
; --save-after-login/--save-after-exec : permette di salvare lo stato della macchina al termine di una sessione interattiva, ricreando il tarball a partire dall'ambiente modificato (usare con attenzione)
|-
 
|ftp
== pdebuild ==
|
; --use-pdebuild-internal :
|-
; --auto-debsign : impone la firma automatica al termine della compilazione del pacchetto
|infobrowser
; --debsign-k [keyid] : imposta la chiave con cui eseguire la firma del pacchetto
|
 
|-
== Azioni ==
|java, javac, ...
; create : creazione di un nuovo ambiente
| impostazioni circa il [[path]] degli eseguibili Java
; update : aggiornametno di un ambiene esistente
|-
; build : compilazione
|vi
; clean : pulizia di un ambiente
| Permette di scegliere l'alternativa tra vi o vim
; login : login all'interno di un ambiente
|-
; execute : esecuzione di un comando all'interno di un ambiente
|view
; dumpconfig : mostra a video la configurazione dell'ambiente specificato, utile per le operazioni di debug
|
 
|-
 
|vim
= Utilizzo =
|
== Creazione Ambiente ==
|-
In questo esempio creeremo un ambiente per la distribuzione sid, con i repository Debian '''main''', '''contrib''' e '''non-free'''.
|www-browser
| Il browser di default in modalità testuale.
|-
|x-cursor-theme
| Il tema dei cursori di default.
|-
|x-session-manager
| Il session manager di default.
|-
|x-terminal-emulator
| L'emulatore di terminale predefinito da usare in X
|-
|x-window-manager
| Il window manager di default.
|-
|x-www-browser
| Il browser di default in modalità grafica.
|}
</div>


per visualizzare l'elenco completo delle alternatives disponibili nel sistema
<pre>
<pre>
# pbuilder create --basetgz /home/maxer/pbuilder/sid.tgz --mirror http://debian.fastweb.it/debian \
# update-alternatives --get-selections
    --othermirror http://debian.fastweb.it/debian contrib non-free --distribution sid \
    --debemail maxer@knio.it --binary-arch i386
</pre>
</pre>


Analizzando il comando osserviamo che:
== Modifica impostazioni ==
* con '''--basetgz''' impostiamo un percorso diverso per salvare il [[tarball]] che conterr� l'immagine del nostro ambiente;
=== Ottenere informazioni ===
* con '''--mirror''' specifichiamo un mirror italiano, mentre con '''--othermirror''' aggiungiamo anche ''non-free'' e ''contrib'' (allo stesso modo potremmo aggiungere altri repository...);
È possibile ottenere le informazioni relative alle varie alternative disponibili per una voce tramite il comando
* con '''--distribution''' impostiamo la distribuzione di cui vogliamo creare l'ambiente;
<pre># update-alternatives --display <alternativa></pre>
* con '''--debemail''' impostiamo la nostra email;
* con '''--bynary-arch''' impostiamo l'architettura dei nostri binari (utile nei sistemi a 64 bit, in cui � possibile emulare l'architettura a 32 bit ;-).


Pbuilder scaricher� dalla rete tutto il materiale necessario, e creer� l'immagine (potrebbe volerci molto tempo.. quindi � consigliata una bella tazzona di caff�)!
L'output del comando sarà simile a questo:
<pre># update-alternatives --display x-www-browser
x-www-browser - status is auto.
link currently points to /usr/bin/konqueror
/usr/bin/konqueror - priority 100
slave x-www-browser.1.gz: /usr/share/man/man1/konqueror.1.gz
/usr/bin/firefox - priority 70
slave x-www-browser.1.gz: /usr/share/man/man1/firefox.1.gz
/usr/bin/mozilla - priority 80
slave x-www-browser.1.gz: /usr/share/man/man1/mozilla.1.gz
Current `best' version is /usr/bin/konqueror.


== Aggiornamento Ambiente ==
</pre>
L'aggiornamento di un ambiente � utile per le release diversa da Stable, nelle quali sono spesso presenti degli aggiornamenti, che potrebbero portare ad una modifica delle dipendenze (si pensi, ad esempio, alla migrazione da xfree ad xorg).
Verranno mostrati, in ordine di priorità, le varia alternative, accompagnate dalla [[manpage]].


Per aggiornare i pacchetti ed il database dei repository, � sufficiente un
=== Cambiare l'associazione ===
<pre> # pbuider update --basetgz /home/maxer/pbuilder/sid.tgz</pre>
Cambiare l'associazione, tra quelle disponibili, è semplice:
<pre># update-alternatives --config x-www-browser


== Compilazione di pacchetti ==
There are 3 alternatives which provide `x-www-browser'.
La compilazione pu� avvenire in due modi:
* '''Da un pacchetto di sorgenti''', tramite pbuilder
* '''Dalla directory che contiene i sorgenti''' tramite pdebuild


=== Da un pacchetto di sorgenti ===
  Selection    Alternative
Questa procedura funziona se si dispone di un pacchetto Debian in formato ''sorgente''... la procedura � usabile, ad esempio, per ricompilare un pacchetto presente in testing o unstable per una distribuzione stable (tecnica chiamata [[backport]]).
-----------------------------------------------
+        1    /usr/bin/konqueror
*        2    /usr/bin/firefox
          3    /usr/bin/mozilla


<pre> # pbuild build --basetgz /home/maxer/pbuilder/sid.tgz file_0.0-1.dsc </pre>
Press enter to keep the default[*], or type selection number:</pre>
a questo punto sarà sufficiente inserire il numero della alternativa che si vuole utilizzare.


Questo comando avvier� la compilazione, esattamente secondo le seguenti fasi:
A fianco delle varie scelte sono presenti due caratteri: '''+''' indica che quel programma ha la priorità maggiore (quindi, secondo il sistema, è l'associazione più appropriata); '''*''', invece, indica l'applicazione attualmente associata all'alternativa.
# creazione dell'ambiente a partire dal tarball indicato
# risoluzione delle dipendenze per la compilazione
# compilazione
# rimozione ambiente creato (definito ''sporco'')
# eventuale firma GnuPG


=== Dalla Directory dei sorgenti ===
Questa procedura, a differenza di quella illustrata precedentemente, molto pi usata (almeno nel mio caso) in quanto pu essere applicata direttamente alla directory dei sorgenti (si sta sempre parlando di pacchetti Debian, quindi i sorgenti devono contenere la directory ''debian/'', che gestisce la creazione dei pacchetti.


Una volta posizionati nella directori contenente i sorgenti, � sufficiente eseguire questo comando:
Nel caso siano necessarie delle modifiche massive (come, ad esempio, nel caso in cui si voglia utilizzare il java ufficiale di Oracle) si può procedere alla riconfigurazione di tutte le ''alternatives'' con il comando:
<pre> # pdebuild build --basetgz /home/maxer/pbuilder/sid.tgz</pre>
<pre>
# update-alternatives --all
</pre>
che si occuperà di richiamare <code>update-alternatives --config</code> su tutte le ''alternatives'' registrate. Per quelle relative a java, si potrà effettuare la modifica, mentre per le altre sarà sufficiente premere ''invio'' per mantenere le impostazioni attuali senza modificarle.


In questo caso, invece, la procedura seguita da pbuilder sar� leggermente diversa:
=== Aggiunta ===
# esecuzione ''debian/rules clean'' all'interno della directory dei sorgenti
Per aggiungere alla lista delle alternative (o crearne una nuova) è possibile usare l'opzione <code>--install</code> nel seguente modo:
# creazione dell'ambiente a partire dal tarball indicato
<pre>
# risoluzione delle dipendenze per la compilazione
# update-alternatives [options] --install link name path priority [--slave link name path]
# compilazione
</pre>
# rimozione ambiente creato (definito ''sporco'')
con i seguenti parametri:
# eventuale firma GnuPG
; link : il nome del link principale che punterà a quello inserito nella directory di alternatives (<code>/etc/alternatives/</code>)
; name : il nome del link in <code>/etc/alternatives/</code> (è normale farlo coincidere con il nome del link) che punterà all'eseguibile vero e proprio
; path : il path dell'eseguibile utilizzato come alternativa
; priority : la priorità da assegnare a questa alternativa
; --slave : si tratta di un'opzione facoltativa e utilizzabile più volte, che permette l'aggiunta di alternative secondarie, ciascuna accettante tre argomenti con il medesimo significato e configurata in base alla priorità dell'alternativa principale


==Firma GnuPG==
Ad esempio, se vogliamo aggiungere Firefox come browser, basterà dare il seguente comando:
Pbuilder permette anche la firma con chiave [[GnuPG]], molto utile in quanto evita l'utilizzo di ''deb-sign'', automatizzando il tutto!
<pre>
L'unico problema (se cos� si pu� definire) � la necessit� di esportare la propria chiave privata ed importarla nel [[keyring]] dell'utente root.
# update-alternatives --install /usr/bin/x-www-browser x-www-browser /usr/bin/firefox 90 \
--slave /usr/share/man/man1/x-www-browser.1.gz x-www-browser.1.gz /usr/share/man/man1/firefox.1.gz
</pre>
L'alternativa secondaria specificata con <code>--slave</code> farà sì che dando:
<pre>$ man x-www-browser</pre>
sia richiamata la pagina di manuale di Firefox, fintanto che l'alternativa principale (<code>/usr/bin/firefox</code>) sarà utilizzata da <code>/usr/bin/x-www-browser</code>.


==File di Configurazione==
=== Rimozione ===
Una pratica diffusa e molto comoda per semplificare l'utilizzo di pbuider sono i file di configurazione: essi permettono, infatti, di specificare direttamente al loro interno i parametri (oltre ad offrirne molti di pi�).
Per la rimozione esistono due opzioni:
; --remove <name> <path> : provoca la rimozione di una sola alternativa (associata a <path>) dall'elenco di quelle relativa a <name>
; --remove-all <name> : rimuove l'intera alternativa <name>


Un altro vantaggio, inoltre, consiste nel poter specificare altre distribuzioni (come ubuntu, knoppix, ...) che altrimenti non sarebbero supportate dal pbuilder dispnibile in Debian.
I link seguenti portano a dei file di configurazione ad hoc per le distribuzioni indicate:
* [[Pbuilder: Breezy.conf]]
* [[Pbuilder: Dapper.conf]]
=Varie=
==Semplifichiamo i comandi con alias==
I comandi da impartire sono spesso complessi e lunghi... in questo caso ci viene in aiuta ''alias'', che permette di creare un nuovo ''comando'', alias di uno pi complesso.
Per fare questo, sufficiente inserire nel file ''/root/.bashrc'' delle righe simili alle seguenti:
<pre>
<pre>
# comandi per la compilazione
# update-alternatives --remove x-www-browser /usr/bin/firefox
alias pdebuild-sarge="pdebuild --auto-debsign --debsign-k 34337C08 --buildresult /var/cache/pbuilder/result/stable -- --basetgz /store3/sarge.tgz \
</pre>
    --mirror http://debian.fastweb.it/debian"
alias pdebuild-etch="pdebuild --auto-debsign --debsign-k 34337C08 --buildresult /var/cache/pbuilder/result/testing -- --basetgz /store3/etch.tgz \
    --mirror http://debian.fastweb.it/debian"
alias pdebuild-sid="pdebuild --auto-debsign --debsign-k 34337C08 --buildresult /var/cache/pbuilder/result/unstable -- --basetgz /store3/sid.tgz \
    --mirror http://debian.fastweb.it/debian"
alias pdebuild-breezy="pdebuild --auto-debsign --debsign-k 34337C08 --buildresult /var/cache/pbuilder/result/breezy -- --basetgz /store3/breezy.tgz \
    --configfile /root/pbuilder-breezy.conf"


# automatizziamo al massimo
== Riferimenti ==
alias pdebuild-all="pdebuild-sarge; pdebuild-etch; pdebuild-sid; pdebuild-breezy"
* <code>man update-alternatives</code>


# aggiornamento
Per una gestione grafica dei link si veda la [[Amministrazione_grafica_delle_%22Alternatives%22|pagina]] dedicata.
alias pbuilder-update-sid="pbuilder update --basetgz /store3/sid.tgz --mirror http://debian.fastweb.it/debian"
alias pbuilder-update-etch="pbuilder update --basetgz /store3/etch.tgz --mirror http://debian.fastweb.it/debian"
alias pbuilder-update-sarge="pbuilder update --basetgz /store3/sarge.tgz --mirror http://debian.fastweb.it/debian"
alias pbuilder-update-breezy="pbuilder update --basetgz /store3/breezy.tgz --configfile /root/pbuilder-breezy.conf"


# automatizziamo al massimo
{{Autori
alias pbuilder-update-all="pbuilder-update-sarge && pbuilder-update-etch && pbuilder-update-sid && pbuilder-update-breezy"
|Autore= [[Utente:MaXeR|MaXeR]]
</pre>
|Estesa_da=
I comandi elencati sono, per l'esattezza, quelli che uso io per creare i pacchetti per qualsiasi release Debian ed Ubuntu.
|Verificata_da=
: [[Utente:MadameZou|MadameZou]] 22:26, 5 mar 2010 (CET)
: [[Utente:HAL 9000|HAL 9000]] 18:03, 20 mag 2015 (CEST)
: [[Utente:Ombra|Ombra]] 19:02, 11 mar 2017 (CET)
|Numero_revisori=3
}}


[[Categoria:Apt-Dev]]
[[Categoria:Programmi da terminale]]

Versione attuale delle 18:02, 11 mar 2017

Debian-swirl.png Versioni Compatibili

Tutte le versioni supportate di Debian

Introduzione

Le alternative sono un sistema di link simbolici che permettono di gestire comodamente i programmi di default per ogni categoria di applicazioni (browser, editor, ecc ...).

L'idea che è alla base di questo sistema è di avere un database che raccoglie le possibili alternative ad una applicazione (per esempio, x-www-browser è una alternativa che può essere collegata al browser proferito).

Struttura del sistema

Elenco Alternatives

Nome Descrizione
editor
fakeroot
firefox-javaplugin.so
ftp
infobrowser
java, javac, ... impostazioni circa il path degli eseguibili Java
vi Permette di scegliere l'alternativa tra vi o vim
view
vim
www-browser Il browser di default in modalità testuale.
x-cursor-theme Il tema dei cursori di default.
x-session-manager Il session manager di default.
x-terminal-emulator L'emulatore di terminale predefinito da usare in X
x-window-manager Il window manager di default.
x-www-browser Il browser di default in modalità grafica.

per visualizzare l'elenco completo delle alternatives disponibili nel sistema

# update-alternatives --get-selections

Modifica impostazioni

Ottenere informazioni

È possibile ottenere le informazioni relative alle varie alternative disponibili per una voce tramite il comando

# update-alternatives --display <alternativa>

L'output del comando sarà simile a questo:

# update-alternatives --display x-www-browser
x-www-browser - status is auto.
 link currently points to /usr/bin/konqueror
/usr/bin/konqueror - priority 100
 slave x-www-browser.1.gz: /usr/share/man/man1/konqueror.1.gz
/usr/bin/firefox - priority 70
 slave x-www-browser.1.gz: /usr/share/man/man1/firefox.1.gz
/usr/bin/mozilla - priority 80
 slave x-www-browser.1.gz: /usr/share/man/man1/mozilla.1.gz
Current `best' version is /usr/bin/konqueror.

Verranno mostrati, in ordine di priorità, le varia alternative, accompagnate dalla manpage.

Cambiare l'associazione

Cambiare l'associazione, tra quelle disponibili, è semplice:

# update-alternatives --config x-www-browser

There are 3 alternatives which provide `x-www-browser'.

  Selection    Alternative
-----------------------------------------------
 +        1    /usr/bin/konqueror
*         2    /usr/bin/firefox
          3    /usr/bin/mozilla

Press enter to keep the default[*], or type selection number:

a questo punto sarà sufficiente inserire il numero della alternativa che si vuole utilizzare.

A fianco delle varie scelte sono presenti due caratteri: + indica che quel programma ha la priorità maggiore (quindi, secondo il sistema, è l'associazione più appropriata); *, invece, indica l'applicazione attualmente associata all'alternativa.


Nel caso siano necessarie delle modifiche massive (come, ad esempio, nel caso in cui si voglia utilizzare il java ufficiale di Oracle) si può procedere alla riconfigurazione di tutte le alternatives con il comando:

# update-alternatives --all

che si occuperà di richiamare update-alternatives --config su tutte le alternatives registrate. Per quelle relative a java, si potrà effettuare la modifica, mentre per le altre sarà sufficiente premere invio per mantenere le impostazioni attuali senza modificarle.

Aggiunta

Per aggiungere alla lista delle alternative (o crearne una nuova) è possibile usare l'opzione --install nel seguente modo:

# update-alternatives [options] --install link name path priority [--slave link name path]

con i seguenti parametri:

link
il nome del link principale che punterà a quello inserito nella directory di alternatives (/etc/alternatives/)
name
il nome del link in /etc/alternatives/ (è normale farlo coincidere con il nome del link) che punterà all'eseguibile vero e proprio
path
il path dell'eseguibile utilizzato come alternativa
priority
la priorità da assegnare a questa alternativa
--slave
si tratta di un'opzione facoltativa e utilizzabile più volte, che permette l'aggiunta di alternative secondarie, ciascuna accettante tre argomenti con il medesimo significato e configurata in base alla priorità dell'alternativa principale

Ad esempio, se vogliamo aggiungere Firefox come browser, basterà dare il seguente comando:

# update-alternatives --install /usr/bin/x-www-browser x-www-browser /usr/bin/firefox 90 \ 
--slave /usr/share/man/man1/x-www-browser.1.gz x-www-browser.1.gz /usr/share/man/man1/firefox.1.gz

L'alternativa secondaria specificata con --slave farà sì che dando:

$ man x-www-browser

sia richiamata la pagina di manuale di Firefox, fintanto che l'alternativa principale (/usr/bin/firefox) sarà utilizzata da /usr/bin/x-www-browser.

Rimozione

Per la rimozione esistono due opzioni:

--remove <name> <path>
provoca la rimozione di una sola alternativa (associata a <path>) dall'elenco di quelle relativa a <name>
--remove-all <name>
rimuove l'intera alternativa <name>
# update-alternatives --remove x-www-browser /usr/bin/firefox

Riferimenti

  • man update-alternatives

Per una gestione grafica dei link si veda la pagina dedicata.




Guida scritta da: MaXeR Swirl-auth80.png Debianized 80%
Estesa da:
Verificata da:
MadameZou 22:26, 5 mar 2010 (CET)
HAL 9000 18:03, 20 mag 2015 (CEST)
Ombra 19:02, 11 mar 2017 (CET)

Verificare ed estendere la guida | Cos'è una guida Debianized