Old:Pacchettizzare un tema per Bootsplash: differenze tra le versioni

Vai alla navigazione Vai alla ricerca
mNessun oggetto della modifica
Riga 1: Riga 1:
=Introduzione=
== Introduzione ==
Il pacchetto bootsplash per Debian, presente nei repository:
 
<pre>
Questa guida � dedicata all'uso di Aptitude.
deb http://debian.bootsplash.de unstable main
 
deb-src http://debian.bootsplash.de unstable main
Il completissimo '''manuale utente di Aptitude''' in formato html si pu� trovare installando il pacchetto <tt>aptitude-doc-en</tt>, in <tt>/usr/share/doc/aptitude/html/en/index.html</tt>. Purtroppo il manuale � solo in inglese.
</pre>
 
è molto comodo per la gestione dei temi, ma ha un ''difetto'': utilizza debconf per la gestione dei temi. Questo porta ad un effetto collaterale: i temi installati manualmente non saranno riconosciuti e per poterli usare si dovranno eseguire operazioni scomode (rispetto ad un semplice ''dpkg-reconfigure bootsplash'' :-) ).
 
== Cos'� Aptitude ==
 
Aptitude � un frontend per la gestione avanzata dei pacchetti di una distribuzione Debian, ma risulta valida per tutte le distribuzioni che supportano APT (http://www.debian.org/doc/manuals/apt-howto/ch-distros.it.html).
 
Aptitude � ormai lo strumento preferenziale per l'amministrazione dei pacchetti su Debian, in quanto non solo raggruppa in un unico semplice programma le funzionalit� di molti tool (apt-get, apt-cache ...) ma anche perch� permette di gestire in modo molto pi� facile (ed efficace) situazioni complesse (dipendenze, dipendenze inverse, rimozione pacchetti non utilizzati, ecc ...).
 
Aptitude � un frontend a dpkg esattamente come apt-get, che sembra essere destinato a sostituire integralmente lo stesso [[Introduzione_all%27_Apt_System | apt-get (e affini)]], tanto che nelle release notes di Sarge si legge:
 
{{Box|Citazione:|Il metodo di aggiornamento raccomandato fra le release Debian GNU/Linux prevede l'utilizzo dello strumento di gestione dei pacchetti aptitude. Tale strumento rende le decisioni riguardanti le installazioni dei pacchetti pi� sicure che l'esecuzione diretta di apt-get.}}


Vedremo, ora, come creare un pacchetto Debian contenente un tema, e come gestire il template di debconf per aggiornare la lista dei temi.
e anche:


{{Box|Nota Bene:|gli script qui descritti non sono opera mia, ma di [mailto:oliver_at_dediziert_dot_org Oliver Sorge], che mantiene i temi presenti nel repository sopra riportato}}
{{Box|Citazione:|Test di aggiornamento hanno mostrato che la versione di sarge di aptitude � migliore sia di apt-get sia della versione di woody di aptitude nella risoluzione di dipendenze complesse durante un aggiornamento.}}


=Requisiti=
Si pu� utilizzare Aptitude in due modi: da linea di comando, cio� come apt-get (la sintassi e le opzioni sono identiche, o quasi), oppure tramite l'interfaccia visuale basata sulle librerie ncurses.
Per poter creare un pacchetto Debian dobbiamo installare i seguenti pacchetti:
* build-essential
* dpkg-dev
* dh-make
* debhelper


=Creazione del pacchetto=
L'interfaccia visuale verr� trattata pi� diffusamente, perch� si ritiene che sia uno strumento fondamentale per la gestione dei pacchetti e soprattutto per la diagnostica e la risoluzione degli eventuali problemi riscontrati.
Estraiamo il pacchetto contenente il tema, e rinominiamo la directory contenente il tema in un formato del tipo ''bootsplash-theme-<nometema>-<versione>''.


La directory deve contenere le directory images, ...
{{Box|Prima di iniziare|Prima di iniziare a mettere le mani sulla tastiera, notiamo che aptitude, a differenza della maggior parte delle opzioni di apt-get, si pu� lanciare anche con i diritti di utente comune.  


Una volta completato, lanciamo il comando
Poich� per l'effettiva installazione o rimozione dei pacchetti � necessario possedere i diritti di root, � possibile e caldamente consigliato usare questa possibilit� per effettuare qualunque prova, visto che non si sar� in grado di modificare neanche una virgola del sistema prima di aver inserito la password di root.}}
<pre>
$ dh_make --copyright GPL
</pre>
ovviamente dopo aver verificato la licenza del tema...


Alla domanda
<pre>
Type of package: single binary, multiple binary, library, or kernel module?
[s/m/l/k]</pre> rispondiamo con una ''s''.


Controlliamo i dati riportati (per il nome e l'email possiamo usare le variabili d'ambiente $DEBEMAIL e $DEBFULLNAME); se tutto è corretto è possibile andare avanti.
== Uso da linea di comando ==


Verrà così creata la directory debian/, contenente tutto il necessario per il nostro pacchetto.
Anche dalla linea di comando l'uso di aptitude � molto semplice e comodo. Si usa in genere la seguente forma:


==La directory debian/*==
aptitude azione [argomenti...]
===Rimozione dei file non necessari===
La directory debian/ contiene molti file non necessari, che possiamo tranquillamente rimuovere:
<pre>
$ cd debian
$ rm conffiles.ex cron.d.ex emacsen* init.d.ex manpage* matrix* menu.ex watch*
</pre>


===.templates===
''azione'' dice ad aptitude quale azione svolgere; i rimanenti argomenti dipendono dall'azione scelta e consistono tipicamente in una lista di nomi di pacchetti.
Dobbiamo creare il template utilizzato da debconf. Creiamo, quindi, un file del tipo ''bootsplash-theme-<nometema>.template'' con il seguente contenuto:
<pre>
Template: shared/bootsplash-theme
Type: select
Choices: ${choices}
Description: Please select theme bootsplash should use.
Please select the theme bootsplash should use.  If you wish to
change it at a later date, just run dpkg-reconfigure bootsplash.


Template: bootsplash-theme-<nometema>/resolutions
Le azioni pi� importanti sono:
Type: multiselect
Choices: 1024x768
Default: 1024x768
Description: Select the resoultion you would like to enable bootsplash for.
You need to select which resolutions bootsplash should be enabled for, also
remember to include the proper (vga=???) line in your lilo.conf.
</pre>
Ricordandoci di sostituire a ''<nometema>'' il nome del nostro tema ed eventualmente sistemare i valori delle risoluzioni.


===rules===
; <tt>aptitude update</tt> : aggiorna la lista dei pacchetti (come premere ''''u'''' dall'interfaccia visuale o come <tt> apt-get update</tt>)
Il file ''debian/rules'' necessità di molte modifiche... Conviene, quindi, sostituire il contenuto con questo:
<pre>
#!/usr/bin/make -f
# -*- makefile -*-
# Sample debian/rules that uses debhelper.
# GNU copyright 1997 to 1999 by Joey Hess.


# Uncomment this to turn on verbose mode.
; <tt>aptitude upgrade</tt> : aggiorna tutti i pacchetti aggiornabili senza che nascano conflitti. Se l'aggiornamento di un pacchetto causa un conflitto il pacchetto non viene aggiornato (piuttosto che, ad esempio, rimuovere i pacchetti che generano il conflitto)
# export DH_VERBOSE=1


# Edit these lines!!!
; <tt>aptitude dist-upgrade</tt> : anche questo comando aggiorna tutti i pacchetti, ma � pi� aggressivo nella risoluzione delle dipendenze: nouvi pacchetti saranno installati e altri rimossi, fino a quando tutte le dipendenze non saranno soddifatte. Questo comando potrebbe fare cose non desiderate (come, appunto, installare nuovi pacchetti o rimuoverne altri) quindi deve essere usato con cautela.
THEME_DIRS = images config animations bootloader
THEME_SUFFIX = <nometema>


configure: configure-stamp
; <tt>aptitude [ install | remove | purge ] pkg1 [pkg2...]</tt>: questi comandi installano, rimuovono o fanno il ''purge'' (eliminazione anche dei file di configurazione) dei pacchetti specificati.
configure-stamp:
        dh_testdir
        touch configure-stamp


build: build-stamp
; <tt>aptitude search espressione1 [espressione2...]</tt>: mostra su terminale i pacchetti che contengono nel nome una delle espressioni fornite. Le espressioni possono essere semplici stringhe o anche espressioni pi� complesse ("Search Patterns").


build-stamp: configure-stamp
; <tt>aptitude show pkg1 [pkg2...]</tt> : mostra su terminale le informazioni di ogni pacchetto specificato.
        dh_testdir
        touch build-stamp


clean:
I comandi che installano, aggiornano o rimuovo pacchetti accettano tutti il parametro "-s" che st� per "simula". Quando viene passato "-s" nella linea di comando, aptitude svolge tutte le azioni che svolgerebbe normalmente, ma non scarica o installa/rimuove effettivamente nessun file.
        dh_testdir
        dh_testroot
        rm -f build-stamp configure-stamp
        dh_clean


install: build
        dh_testdir
        dh_testroot
        dh_clean -k
        dh_installdirs
        -cp -a $(THEME_DIRS) \
"$(CURDIR)/debian/bootsplash-theme-$(THEME_SUFFIX)/etc/bootsplash/themes/$(THEME_SUFFIX)/"


binary-indep: build install
==Interfaccia grafica==
        # We have nothing to do by default.


# Build architecture-dependent files here.
La prima schermata che aptitude ci presenta, dopo che l'abbiamo lanciato da linea di comando, e dopo il caricamento delle informazioni attuali sui pacchetti ("caricamento della cache"), � divisa orizzontalmente in due parti.
binary-arch: build install
        dh_testdir
        dh_testroot
        dh_installchangelogs
        dh_installdocs
        dh_installdebconf
        dh_link
        dh_strip
        dh_compress
        dh_fixperms
        dh_installdeb
        dh_shlibdeps
        dh_gencontrol
        dh_md5sums
        dh_builddeb


binary: binary-indep binary-arch
Nella parte superiore troviamo una zona a sfondo blu con un men� che propone diverse opzioni, e una zona a sfondo nero in cui si vede l'albero dei pacchetti disponibili, classificati in base al loro stato (installati, non installati, ecc.).  
.PHONY: build clean binary-indep binary-arch binary install configure
</pre>


ricordando le seguente cose:
Per vedere il contenuto di uno dei rami usiamo le frecce "su" e "giu" fino a selezionare la riga corrispondente e premiamo invio. Sotto al ramo in questione ora abbiamo dei sottorami, e premendo invio sui vari sottorami si accede allo stesso modo ai sotto-sottorami e cos� via, fino ad arrivare ai pacchetti.
* fare attenzione ad usare la tabulazioni (tasto <tab>) al posto degli spazi per le indentazioni (obbligatorie)!
* modificare la variabile THEME_DIRS riportando solo le directory presenti all'interno della directory ''<nometema>-<versione>'' ad eccezione di ''debian''.
* modificare la variabile THEME_SUFFIX con il nome del tema.


===control===
La parte inferiore � invece dedicata alla descrizione del pacchetto attualmente selezionato. Alcuni pacchetti, per esempio k3b, hanno una descrizione molto lunga: premendo TAB e usando le frecce � possibile leggerla tutta.  
Il file ''debian/control'' necessita di alcune modifiche:
* ''Section'' dovrebbe essere modificata in ''graphics''
* ''Architecture'' può essere modificato in ''all'', visto che il pacchetto non sarà dipendente dall'architettura
* ''Depends'' può essere modificato in ''bootsplash (>= 3.0.0), debconf (>= 0.5) | debconf-2.0''
* deve essere aggiunta la riga ''Provides: bootsplash-theme''
* la descrizione deve essere modificata nel seguente modo (in linea coi pacchetti di http://www.bootsplash.de ):
<pre>Description: The bootsplash theme <nometema>
This is another bootsplash theme packaged for the Debian GNU/Linux
Operating System.
.
Resolutions: 1280x1024</pre>


===dirs===
Ogni riga che mostra il nome di un pacchetto riporta anche molte informazioni.
Dovrà contenere
Per esempio, riporto lo stato di alcuni pacchetti nel mio sistema (nota: il mio sistema � una sarge, ma ho installato diversi pacchetti da testing e anche alcuni da unstable. Per informazioni sul pinning vedere [[APT_uso_avanzato:_mixare_releases_diverse | APT uso avanzato: mixare releases diverse ]]):
<pre>
<pre>
etc/bootsplash/themes/<nometema>
stato    nome                vers. attuale    vers. aggiornata
 
i        aptitude            0.2.15.9-2      0.2.15.9-2
i        amule                2.0.3-3          2.0.3-4
i A      amule-common        2.0.3-3          2.0.3-4
c        hotplug              <nessuna>       0.0.200403
p        apmd                <nessuna>        3.2.2-3
</pre>
</pre>


===docs===
Possiamo vedere che:
Dovrà contenere
*aptitude � installato ed � alla versione pi� recente
<pre>
*amule � installato ma � aggiornabile alla versione 2.0.3-4
docs/*
*amule-common � installato per soddisfare una dipendenza (<tt>A</tt>), cio� solo a causa di un pacchetto che dipende da lui (amule). Anch'esso � aggiornabile
</pre>
*hotplug non � installato, ma quando l'ho cancellato ho scelto di mantenere i file di configurazione (<tt>c</tt>)
se la directory è presente nei sorgenti del tema (altrimenti si può omettere questo file).
*apmd non � installato (<tt>p</tt>), oppure � stato cancellato con l'opzione "purge" (comando: "_"): lo stato risultante � il medesimo
 
Tramite semplici comandi si possono visualizzare molte altre informazioni. I comandi principali sono:
; v: visualizza le versioni disponibili per il pacchetto
; d: visualizza le dipendenze del pacchetto
; r: visualizza i pacchetti che dipendono dal pacchetto selezionato (dipendenze inverse)
; C: scarica da internet e visualizza il changelog del pacchetto
; q: chiude la schermata attuale e passa a quella precedente
 
Per una lista completa vedere la guida online con "?".
 
Ora premiamo invio su di un pacchetto: ci appare la schermata relativa al pacchetto, con la descrizione completa e molte altre informazioni, organizzate ad albero come abbiamo gi� visto. Se ci interessa qualche informazione in pi� su uno dei pacchetti che troviamo in questa schermata, lo selezioniamo e premiamo invio: appaiono le versioni disponibili del pacchetto. Se selezioniamo una delle versioni e premiamo invio ci ritroviamo nella schermata informativa di quel pacchetto. Fate attenzione perch� in questo modo si pu� perdere facilmente l'orientamento.
Torniamo alla vista dell'albero dei pacchetti premendo "q" tante volte quanto serve (se vi sbagliate e lo premete una volta in pi�, aptitude vi chiede se volete uscire dal programma: per il momento dite di no ;-)).
 
 
==Aggiornare i pacchetti==


===postinst===
Per la descrizione dell'utilizzo di aptitude useremo come esempio una sessione reale, in cui vengono svolte alcune normali operazioni di aggiornamento e amministrazione dei pacchetti.
Usiamo direttamente quelli creati per i pacchetti dei temi presenti su http://www.bootsplash.org :
<pre>
#! /bin/sh
# postinst script for test
#
# see: dh_installdeb(1)


set -e
Per prima cosa, nella nostra sessione di amministrazione, aggiorniamo le informazioni sui pacchetti disponibili. Con apt-get avremmo digitato <tt>apt-get update</tt>, mentre in aptitude � sufficiente premere "u".  
. /usr/share/debconf/confmodule


THEME_SUFFIX=<nometema>
Fate attenzione perch� aptitude non chiede conferma dopo che avete impartito un comando, quindi non digitate nulla senza prima essere sicuri/e di cosa state per fare.


# summary of how this script can be called:
Dopo aver fatto l'update potremmo trovare una, due, o tre voci nuove nell'albero dei pacchetti: "Aggiornamenti di sicurezza", "Pacchetti aggiornabili", e "Pacchetti nuovi". Per fare scomparire le prime due � necessario aggiornare tutti i pacchetti contenuti nei rispettivi rami, mentre per far sparire la terza � sufficiente premere "f" (forget).
#        * <postinst> `configure' <most-recently-configured-version>
#        * <old-postinst> `abort-upgrade' <new version>
#        * <conflictor's-postinst> `abort-remove' `in-favour' <package>
#          <new-version>
#        * <deconfigured's-postinst> `abort-deconfigure' `in-favour'
#          <failed-install-package> <version> `removing'
#          <conflicting-package> <version>
# for details, see http://www.debian.org/doc/debian-policy/ or
# the debian-policy package
#


case "$1" in
Una buona regola per l'amministratore � quella di far s� che alla fine dell'aggiornamento queste tre voci non siano presenti. Se ci sono dei pacchetti che risultano aggiornabili, ma che non volete aggiornare, probabilmente dovreste bloccarli alla versione desiderata con "=", oppure dovreste leggere la guida gi� citata sul pinning.
    configure)
        db_register shared/bootsplash-theme bootsplash-theme-$THEME_SUFFIX
    ;;


    abort-upgrade|abort-remove|abort-deconfigure)
Ora torniamo ai pacchetti mostrati prima e supponiamo di voler aggiornare amule: lo selezioniamo e premiamo "+". Questo marcher� in verde, cio� per l'installazione, sia amule che amule-common.
    ;;


    *)
Poi per� ci viene un'idea migliore, e decidiamo di aggiornare tutti i pacchetti aggiornabili, quindi digitiamo "^" per risalire al ramo superiore della vista, finch� arriviamo a <tt>Pacchetti installati</tt> poi usiamo la freccia in alto e se necessario risaliamo ancora ai rami superiori finch� non arriviamo a <tt>Pacchetti aggiornabili</tt> e qui premiamo "+". Questo marcher� per l'installazione tutti i pacchetti aggiornabili :-D
        gettext -s "postinst called with unknown argument \`$1'" >&2
        exit 1
    ;;
esac


# dh_installdeb will replace this with shell code automatically
# generated by other debhelper scripts.


#DEBHELPER#
==Risolvere eventuali problemi con delle dipendenze==


exit 0
Dopo aver marcato per l'installazione tutti i pacchetti aggiornabili, aptitude ci segnala nella zona blu che c'� un pacchetto "errato" cio� con problemi di dipendenze. Senza battere ciglio premiamo "b" e leggiamo:
<pre>
iB      udev          0.070    0.074
</pre>
</pre>
===postrm===
dove "B" significa "con errori", e sotto si legge:
<pre>
<pre>
#! /bin/sh
Alcune dipendenze di udev non sono soddisfatte:
# postrm script for bootsplash-theme-newtux
#
# see: dh_installdeb(1)


set -e
  *udev � in conflitto con module-init-tools (< 3.2pre9-1)
</pre>
premiamo invio su udev, e ci appare la schermata con tutte le informazioni su udev stesso, comprese le dipendenze: selezioniamo module-init-tools e premiamo invio. Ora ci appaiono tutte le versioni disponibili di module-init-tools, tra cui vediamo che � presente la 3.2pre9-1: non ci resta che selezionarla e marcarla per l'installazione :-D.


# summary of how this script can be called:
Quello che � successo � semplicemente che nel mio sistema udev � in testing, e fino alla versione 0.070 funzionava bene con module-init-tools-3.2pre1-2, che invece � in stable. Aggiornando tutto abbiamo marcato per l'installazione il nuovo udev, versione 0.074, che per� dipende da module-init-tools >= 3.2pre9-1. Poich� questo pacchetto � in testing, APT non ha potuto risolvere la dipendenza automaticamente: se un pacchetto � in una distribuzione (e APT � configurato nel modo giusto) non verr� mai passato ad un'altra, a meno che non siamo noi a farlo manualmente.
#        * <postrm> `remove'
#        * <postrm> `purge'
#        * <old-postrm> `upgrade' <new-version>
#        * <new-postrm> `failed-upgrade' <old-version>
#        * <new-postrm> `abort-install'
#        * <new-postrm> `abort-install' <old-version>
#        * <new-postrm> `abort-upgrade' <old-version>
#        * <disappearer's-postrm> `disappear' <r>overwrit>r> <new-version>
# for details, see http://www.debian.org/doc/debian-policy/ or
# the debian-policy package


# Theme variables
Si prega di notare che questo comportamento non � un bug, ma una cosa voluta: APT ha ricevuto un comando ambiguo e lo segnala generando un errore, proprio come noi ci aspettiamo da lui ;-).
THEME_SUFFIX=<nometema>


In effetti, i reali colpevoli della generazione dell'errore siamo noi. Infatti, per permettere ad APT di gestire correttamente delle dipendenze in testing, dobbiamo semplicemente usare "testing" come distribuzione predefinita.


case "$1" in
Ricordate che abbiamo lanciato aptitude semplicemente con il comando "aptitude"? e ricorderete anche che il mio sistema � una sarge (stable). Questo equivale a lanciare aptitude con il comando "aptitude -t stable", da cui il nostro problema.
      remove)


        # This only applies to the remove process.
Se avessimo usato "aptitude -t testing" aptitude avrebbe risolto correttamente la dipendenza, ma attenzione: in questo modo diciamo ad aptitude che testing � la nostra release predefinita (che non � vero) e lui ci mostrer� come aggiornabili tutti i pacchetti che lo sono in testing, cio� anche tutti quelli in stable (come peraltro ci aspettiamo che faccia ;-)).
        # By default the directory of the theme under
        # /etc/bootsplash/themes will not be removed.
        # However, this postrm script will do this if
        # a directory exists.
        if [ -d /etc/bootsplash/themes/$THEME_SUFFIX ]
        then
                gettext -s "Deleting orphaned files under /etc/bootsplash/themes/$THEME_SUFFIX ... "
                rm -rf /etc/bootsplash/themes/$THEME_SUFFIX || gettext -s "ERROR: Couldn't delete directory /etc/bootsplash/themes/$THEME_SUFFIX."
        fi
        ;;


      purge|upgrade|failed-upgrade|abort-install|abort-upgrade|disappear)
Il fatto � che aptitude, per quanto avanzato, ancora non legge il pensiero dell'amministratore, e fa solo il suo mestiere: prende tutte le decisioni ovvie autonomamente, e genera un errore quando non sa cosa decidere.




        ;;
==Cercare un pacchetto==


    *)
Ora supponiamo di voler vedere se in debian c'� qualche programma per la gestione dei contenuti, e l'acronimo in inglese � "cms". Per fare questo possiamo usare le funzioni di ricerca di aptitude: per prima cosa digitiamo <tt>'''/'''</tt> per la ricerca della stringa "cms" nei nomi dei pacchetti.
        gettext -s "postrm called with unknown argument \`$1'" >&2
        exit 1


esac
Ora per� ci viene in mente che un cms non contiene necessariamente la stringa "cms" nel nome, quindi facciamo, con la stessa stringa, una ricerca nelle descrizioni dei pacchetti: digitiamo ancora <tt>'''/'''</tt> e inseriamo "<tt>~dcms</tt>". Aptitude ci mostra il primo risultato della ricerca, per vedere i risultati successivi premiamo <tt>'''n'''</tt>, e per tornare indietro nella lista <tt>'''\'''</tt>.
# dh_installdeb will replace this with shell code automatically
# generated by other debhelper scripts.


# Automatically added by dh_installdebconf
Per '''L'''imitare la lista dei pacchetti visualizzati possiamo usare il comando <tt>'''l'''</tt>, che si usa allo stesso modo di <tt>'''/'''</tt> ma mostra tutti e soli i pacchetti corrispondenti alla ricerca, organizzati ad albero nel modo che abbiamo gi� visto.
if [ "$1" = purge ] && [ -e /usr/share/debconf/confmodule ]; then
        . /usr/share/debconf/confmodule
        db_purge
fi
# End automatically added section


== Personalizzare la visualizzazione dei pacchetti ==


exit 0
Con aptitude � possibile personalizzare sia i campi visualizzati nella lista dei pacchetti, sia il raggruppamento in sezioni e sotto-sezioni.
</pre>
 
=== Personalizzare il raggruppamento in sezioni ===
 
Le sezioni nelle quali sono raggruppati i pacchetti quando si avvia Aptitude (e non solo) sono generate dinamicamente da un insieme di regole separate da virgola. E' possibile vedere e modificare le regole che generano la vista attuale premendo ''''G''''.
 
Le regole vengono elaborate in sequenza dalla prima all'ultima
 
Vediamo alcune regole:


===prerm===
; <tt>filter(missing)</tt> : non visualizza i pacchetti che esistono solo nelle dipendenze di un altro pacchetto.
<pre>
#! /bin/sh
# prerm script for bootsplash-theme-debblue
#
# see: dh_installdeb(1)


set -e
; <tt>status</tt> : Raggruppa i pacchetti in:
. /usr/share/debconf/confmodule
:* Installati
:* Non installati
:* Aggiornamenti della sicurezza
:* Aggiornabili
:* Obsoleti
:* Virtuali


# summary of how this script can be called:
; <tt>section[(''mode''[,passthrough])]</tt> : Raggruppa i pacchetti in base alla loro sezione. ''mode'' pu� assumere uno dei seguenti valori:
#        * <prerm> `remove'
#        * <old-prerm> `upgrade' <new-version>
#        * <new-prerm> `failed-upgrade' <old-version>
#        * <conflictor's-prerm> `remove' `in-favour' <package> <new-version>
#        * <deconfigured's-prerm> `deconfigure' `in-favour'
#          <package-being-installed> <version> `removing'
#          <conflicting-package> <version>
# for details, see http://www.debian.org/doc/debian-policy/ or
# the debian-policy package


case "$1" in
:; <tt>topdir</tt> : Raggruppa un base alla sezione dell'archivio debian (esempio: ''"main", "contrib", "non-free" ...'').  
    remove|upgrade|deconfigure)
:; <tt>subdir</tt> : Raggruppa in base alla sezione logica (esempio: ''"adim", "base", "devel", "gnome", "kde", ecc ...'')
        # I no longer claim this question.
:; <tt>none</tt> : Raggruppa in base delle sezioni formate dalla somma delle  precedenti (esempio: ''"controb/admin", "contrib/devel", "non-free/admin", "non-free/devel").
        db_unregister shared/bootsplash-theme
:; <tt>task</tt> : Crea un albero dei pacchetti raggruppandoli per task.
        # See if the shared question still exists.
        if db_get shared/bootsplash-theme; then
                db_metaget shared/bootsplash-theme owners
                db_subst shared/bootsplash-theme choices $RET
                db_metaget shared/bootsplash-theme value
                if [ "<package>" = "$RET" ] ; then
                        db_fset shared/bootsplash-theme seen false
                        db_input high shared/bootsplash-theme || true
                        db_go || true
                fi
        fi
        ;;


    failed-upgrade)
: Se viene usato il secondo parametro opzionale <tt>passthrough</tt> i pacchetti che per qualche motivo non hanno una sezione vengono passati alla regola successiva senza essere inseriti in categorie.
        ;;
    *)
        gettext -s "prerm called with unknown argument \`$1'" >&2
        exit 1
    ;;
esac


exit 0
All'avvio di aptitude, premendo ''''G'''' si pu� vedere che vengono usate le seguenti regole:
</pre>


=Compilazione=
La compilazione di un pacchetto è semplicissima: nella directory contenente i sorgenti diamo il seguente comando:
<pre>
<pre>
$ dpkg-buildpackage
filter(missing),task,status,section(subdir,passthruough),section(topdir,passthrough)
</pre>
</pre>
se tutto va a buon fine, verrà creato un pacchetto debian nella directory superiore.


=Test del pacchetto=
In base a quanto detto la spiegazione di queste regole � semplice: ''visualizza solo i pacchetti reali, crea l'albero dei task, raggruppa i pacchetti per stato, per ogni stato raggruppa in sezioni logiche e all'interno di ogni sezione logica raggruppa in base alla sezione dell'archivio''.
L'unico modo per testare il pacchetto è installarlo (dpkg -i pacchetto.deb) e riconfigurare il pacchetto bootsplash (dpkg-reconfigure bootsplash)... se tutto è stato fatto correttamente, nella lista apparirà il nuovo tema...
 
== Links ==
 
* [http://www.luv.asn.au/overheads/aptitude/aptitude-intro.html Aptitude Introduction]: ottima introduzione ad Aptitude (in inglese) che tratta (tra le altre cose) molte pi� opzioni della linea di comando rispetto alla presente guida.


=Conclusioni=
[[Categoria:Apt]]
La guida qui riportata è frutto dell'analisi dei pacchetti ''bootsplash-theme-*'' presenti nel repository di http://www.bootsplash.de ;)