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

Da Guide@Debianizzati.Org.
Vai alla navigazione Vai alla ricerca
Nessun oggetto della modifica
(revisionata, corretti alcuni errori, modificata gerarchia titoli)
Riga 1: Riga 1:
=Introduzione=
 
==Introduzione==
Il pacchetto bootsplash per Debian, presente nei repository:
Il pacchetto bootsplash per Debian, presente nei repository:
<pre>
<pre>
Riga 5: Riga 6:
deb-src http://debian.bootsplash.de unstable main
deb-src http://debian.bootsplash.de unstable main
</pre>
</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'' :-) ).
è 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 <code>dpkg-reconfigure bootsplash</code> :-) ).


Vedremo, ora, come creare un pacchetto Debian contenente un tema, e come gestire il template di debconf per aggiornare la lista dei temi.
Vedremo, ora, come creare un pacchetto Debian contenente un tema, e come gestire il template di debconf per aggiornare la lista dei temi.
Riga 11: Riga 12:
{{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|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}}


=Requisiti=
==Requisiti==
Per poter creare un pacchetto Debian dobbiamo installare i seguenti pacchetti:
Per poter creare un pacchetto Debian dobbiamo installare i seguenti pacchetti:
* build-essential
* build-essential
Riga 18: Riga 19:
* debhelper
* debhelper


=Creazione del pacchetto=
==Creazione del pacchetto==
Estraiamo il pacchetto contenente il tema, e rinominiamo la directory contenente il tema in un formato del tipo ''bootsplash-theme-<nometema>-<versione>''.
Estraiamo il pacchetto contenente il tema, e rinominiamo la directory contenente il tema in un formato del tipo <code>bootsplash-theme-<nometema>-<versione></code>.


La directory deve contenere le directory images, ...
La directory deve contenere le directory images, ...
Riga 27: Riga 28:
$ dh_make --copyright GPL
$ dh_make --copyright GPL
</pre>
</pre>
ovviamente dopo aver verificato la licenza del tema...
ovviamente dopo aver verificato la licenza del tema.


Alla domanda:
Alla domanda:
Riga 34: Riga 35:
  [s/m/l/k]</pre> rispondiamo con una ''s''.
  [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.
Controlliamo i dati riportati (per il nome e l'email possiamo usare le variabili d'ambiente <code>$DEBEMAIL</code> e <code>$DEBFULLNAME</code>); se tutto è corretto è possibile andare avanti.


Verrà così creata la directory debian/, contenente tutto il necessario per il nostro pacchetto.
Verrà così creata la directory <code>debian/</code>, contenente tutto il necessario per il nostro pacchetto.


==La directory debian/*==
===La directory <code>debian/*</code>===
===Rimozione dei file non necessari===
====Rimozione dei file non necessari====
La directory debian/ contiene molti file non necessari, che possiamo tranquillamente rimuovere:
La directory <code>debian/</code> contiene molti file non necessari, che possiamo tranquillamente rimuovere:
<pre>
<pre>
$ cd debian
$ cd debian
Riga 46: Riga 47:
</pre>
</pre>


===.templates===
====<code>.templates</code>====
Dobbiamo creare il template utilizzato da debconf. Creiamo, quindi, un file del tipo ''bootsplash-theme-<nometema>.template'' con il seguente contenuto:
Dobbiamo creare il template utilizzato da debconf. Creiamo, quindi, un file del tipo <code>bootsplash-theme-<nometema>.template</code> con il seguente contenuto:
<pre>
<pre>
Template: shared/bootsplash-theme
Template: shared/bootsplash-theme
Riga 64: Riga 65:
  remember to include the proper (vga=???) line in your lilo.conf.
  remember to include the proper (vga=???) line in your lilo.conf.
</pre>
</pre>
Ricordandoci di sostituire a ''<nometema>'' il nome del nostro tema ed eventualmente sistemare i valori delle risoluzioni.
Ricordandoci di sostituire a <code><nometema></code> il nome del nostro tema ed eventualmente sistemare i valori delle risoluzioni.


===rules===
====<code>rules</code>====
Il file ''debian/rules'' necessità di molte modifiche... Conviene, quindi, sostituire il contenuto con questo:
Il file <code>debian/rules</code> necessita di molte modifiche. Conviene, quindi, sostituire il contenuto con questo:
<pre>
<pre>
#!/usr/bin/make -f
#!/usr/bin/make -f
Riga 130: Riga 131:
</pre>
</pre>


ricordando le seguente cose:
ricordando le seguenti cose:
* fare attenzione ad usare la tabulazioni (tasto <tab>) al posto degli spazi per le indentazioni (obbligatorie)!
* fare attenzione ad usare la tabulazioni (tasto <code><tab></code>) 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 <code>THEME_DIRS</code> riportando solo le directory presenti all'interno della directory <code><nometema>-<versione></code> ad eccezione di <code>debian</code>.
* modificare la variabile THEME_SUFFIX con il nome del tema.
* modificare la variabile <code>THEME_SUFFIX</code> con il nome del tema.


===control===
====<code>control</code>====
Il file ''debian/control'' necessita di alcune modifiche:
Il file <code>debian/control</code> necessita di alcune modifiche:
* ''Section'' dovrebbe essere modificata in ''graphics''
* <code>Section</code> dovrebbe essere modificata in <code>graphics</code>
* ''Architecture'' può essere modificato in ''all'', visto che il pacchetto non sarà dipendente dall'architettura
* <code>Architecture</code> può essere modificato in <code>all</code>, visto che il pacchetto non sarà dipendente dall'architettura
* ''Depends'' può essere modificato in ''bootsplash (>= 3.0.0), debconf (>= 0.5) | debconf-2.0''
* <code>Depends</code> può essere modificato in <code>bootsplash (>= 3.0.0), debconf (>= 0.5) | debconf-2.0</code>
* deve essere aggiunta la riga ''Provides: bootsplash-theme''
* deve essere aggiunta la riga <code>Provides: bootsplash-theme</code>
* la descrizione deve essere modificata nel seguente modo (in linea coi pacchetti di http://www.bootsplash.de ):  
* la descrizione deve essere modificata nel seguente modo (in linea coi pacchetti di http://www.bootsplash.de ):  
<pre>Description: The bootsplash theme <nometema>
<pre>Description: The bootsplash theme <nometema>
Riga 148: Riga 149:
  Resolutions: 1280x1024</pre>
  Resolutions: 1280x1024</pre>


===dirs===
====dirs====
Dovrà contenere:
Dovrà contenere:
<pre>
<pre>
Riga 154: Riga 155:
</pre>
</pre>


===docs===
====docs====
Dovrà contenere:
Dovrà contenere:
<pre>
<pre>
Riga 161: Riga 162:
se la directory è presente nei sorgenti del tema (altrimenti si può omettere questo file).
se la directory è presente nei sorgenti del tema (altrimenti si può omettere questo file).


===postinst===
====postinst====
Usiamo direttamente quelli creati per i pacchetti dei temi presenti su http://www.bootsplash.org:
Usiamo direttamente quelli creati per i pacchetti dei temi presenti su http://www.bootsplash.org:
<pre>
<pre>
Riga 207: Riga 208:
exit 0
exit 0
</pre>
</pre>
===postrm===
====postrm====
<pre>
<pre>
#! /bin/sh
#! /bin/sh
Riga 271: Riga 272:
</pre>
</pre>


===prerm===
====prerm====
<pre>
<pre>
#! /bin/sh
#! /bin/sh
Riga 320: Riga 321:
</pre>
</pre>


=Compilazione=
==Compilazione==
La compilazione di un pacchetto è semplicissima: nella directory contenente i sorgenti diamo il seguente comando:
La compilazione di un pacchetto è semplicissima: nella directory contenente i sorgenti diamo il seguente comando:
<pre>
<pre>
Riga 327: Riga 328:
se tutto va a buon fine, verrà creato un pacchetto Debian nella directory superiore.
se tutto va a buon fine, verrà creato un pacchetto Debian nella directory superiore.


=Test del pacchetto=
==Test del pacchetto==
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.
L'unico modo per testare il pacchetto è installarlo (<code>dpkg -i pacchetto.deb</code>) e riconfigurare il pacchetto bootsplash (<code>dpkg-reconfigure bootsplash</code>): se tutto è stato fatto correttamente, nella lista apparirà il nuovo tema.


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


[[Categoria:Apt]]
[[Categoria:Apt]]
[[Categoria:Apt-Dev]]
[[Categoria:Apt-Dev]]

Versione delle 19:19, 30 gen 2010

Introduzione

Il pacchetto bootsplash per Debian, presente nei repository:

deb http://debian.bootsplash.de unstable main
deb-src http://debian.bootsplash.de unstable main

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

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

Info.png Nota Bene:
gli script qui descritti non sono opera mia, ma di Oliver Sorge, che mantiene i temi presenti nel repository sopra riportato


Requisiti

Per poter creare un pacchetto Debian dobbiamo installare i seguenti pacchetti:

  • build-essential
  • dpkg-dev
  • dh-make
  • debhelper

Creazione del pacchetto

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, ...

Una volta completato, lanciamo il comando:

$ dh_make --copyright GPL

ovviamente dopo aver verificato la licenza del tema.

Alla domanda:

Type of package: single binary, multiple binary, library, or kernel module?
 [s/m/l/k]

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.

Verrà così creata la directory debian/, contenente tutto il necessario per il nostro pacchetto.

La directory debian/*

Rimozione dei file non necessari

La directory debian/ contiene molti file non necessari, che possiamo tranquillamente rimuovere:

$ cd debian
$ rm conffiles.ex cron.d.ex emacsen* init.d.ex manpage* matrix* menu.ex watch*

.templates

Dobbiamo creare il template utilizzato da debconf. Creiamo, quindi, un file del tipo bootsplash-theme-<nometema>.template con il seguente contenuto:

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
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.

Ricordandoci di sostituire a <nometema> il nome del nostro tema ed eventualmente sistemare i valori delle risoluzioni.

rules

Il file debian/rules necessita di molte modifiche. Conviene, quindi, sostituire il contenuto con questo:

#!/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.
# export DH_VERBOSE=1

# Edit these lines!!!
THEME_DIRS = images config animations bootloader
THEME_SUFFIX = <nometema>

configure: configure-stamp
configure-stamp:
        dh_testdir
        touch configure-stamp

build: build-stamp

build-stamp: configure-stamp
        dh_testdir
        touch build-stamp

clean:
        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
        # We have nothing to do by default.

# Build architecture-dependent files here.
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
.PHONY: build clean binary-indep binary-arch binary install configure

ricordando le seguenti cose:

  • 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

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 ):
Description: The bootsplash theme <nometema>
 This is another bootsplash theme packaged for the Debian GNU/Linux
 Operating System. 
 .
 Resolutions: 1280x1024

dirs

Dovrà contenere:

etc/bootsplash/themes/<nometema>

docs

Dovrà contenere:

docs/*

se la directory è presente nei sorgenti del tema (altrimenti si può omettere questo file).

postinst

Usiamo direttamente quelli creati per i pacchetti dei temi presenti su http://www.bootsplash.org:

#! /bin/sh
# postinst script for test
#
# see: dh_installdeb(1)

set -e
. /usr/share/debconf/confmodule

THEME_SUFFIX=<nometema>

# summary of how this script can be called:
#        * <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
    configure)
        db_register shared/bootsplash-theme bootsplash-theme-$THEME_SUFFIX
    ;;

    abort-upgrade|abort-remove|abort-deconfigure)
    ;;

    *)
        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#

exit 0

postrm

#! /bin/sh
# postrm script for bootsplash-theme-newtux
#
# see: dh_installdeb(1)

set -e

# summary of how this script can be called:
#        * <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
THEME_SUFFIX=<nometema>


case "$1" in
       remove)

        # This only applies to the remove process.
        # 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)


        ;;

    *)
        gettext -s "postrm called with unknown argument \`$1'" >&2
        exit 1

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

# Automatically added by dh_installdebconf
if [ "$1" = purge ] && [ -e /usr/share/debconf/confmodule ]; then
        . /usr/share/debconf/confmodule
        db_purge
fi
# End automatically added section


exit 0

prerm

#! /bin/sh
# prerm script for bootsplash-theme-debblue
#
# see: dh_installdeb(1)

set -e
. /usr/share/debconf/confmodule

# summary of how this script can be called:
#        * <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
    remove|upgrade|deconfigure)
        # I no longer claim this question.
        db_unregister shared/bootsplash-theme
        # 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)
        ;;
    *)
        gettext -s "prerm called with unknown argument \`$1'" >&2
        exit 1
    ;;
esac

exit 0

Compilazione

La compilazione di un pacchetto è semplicissima: nella directory contenente i sorgenti diamo il seguente comando:

$ dpkg-buildpackage

se tutto va a buon fine, verrà creato un pacchetto Debian nella directory superiore.

Test del pacchetto

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.

Conclusioni

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