User Tools

Site Tools


doc:appunti:linux:sa:debian_binary_package

Make a Debian binary package

Nomi dei pacchetti .deb

Il nome di un file .deb è costituito da:

apache-ssl_1.3.26.1+1.48-0woody3_i386.deb
\--------/ \-----------/ \-----/ \--/ \-/
 |          |             |       |    |
 |          |             |       |    \-- Estensione
 |          |             |       \------- Architettura
 |          |             \--------------- Revisione Debian
 |          \----------------------------- Versione upstream
 \---------------------------------------- Nome pacchetto

Quando si crea un pacchetto Debian si deve creare il file DEBIAN/control, gli attributi più importanti in esso contenuti sono Package (nome del pacchetto) e Version (versione upstream e versione Debian). La versione è fondamentale per decidere quale pacchetto deve sostituire un altro durante un upgrade.

File di controllo di un pacchetto Debian

Quella che segue è una panoramica semplificata, in alternativa c'è questo approfondimento sui file di controllo Debian.

Ogni pacchetto Debian include alcuni file di controllo che gestiscono l'installazione, la configurazione e la rimozione di un pacchetto. Sono raggruppati nella sottodirectory DEBIAN. Documentazione dovrebbe trovarsi in /usr/doc/packaging-manual/. Consultare gli script di apache-ssl che sembrano ben commentati.

/DEBIAN/preinst

Viene eseguito prima dell'installazione o dell'upgrade del pacchetto. Non deve generare errore (segnalato da un exit code diverso da zero), altrimenti l'installazione viene considerata fallita. Qusti sono gli argomenti con i quali puo' essere chiamato lo script:

  • new-preinst install
    Il pacchetto era assolutamente assente (purged).
  • new-preinst install old-version
    Esistevano alcuni vecchi file di configurazione (il pacchetto era removed ma non purged).
  • new-preinst upgrade old-version
    Il pacchetto era gia' installato, si sta facendo l'upgrade.
  • old-preinst abort-upgrade new-version

/DEBIAN/postinst

Viene eseguito dopo che il contenuto del pacchetto e' stato scompattato. Qusti sono gli argomenti con i quali puo' essere chiamato lo script:

  • postinst configure most-recently-configured-version
    E' lo script piu' importante, eseguito in seguito a un dpkg –install o un dpkg –configure, provvede alla configurazione del pacchetto appena scompattato. Viene quindi eseguito anche durante l'upgrade.
  • 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

/DEBIAN/postrm

Eseguito dopo la rimozione del pacchetto. Quando un pacchetto viene aggiornato viene eseguito il postrm della precedente versione con il parametro <i>upgrade</i>.

  • postrm remove
    In seguito a un dpkg –remove, il pacchetto viene disinstallato, ma i file di configurazione rimangono.
  • postrm purge
    In seguito a un dpkg –purge, il pacchetto viene disinstallato e i file di configurazione eliminati.
  • old-postrm upgrade new-version

/DEBIAN/config

Eseguibile, normalmente usato per eseguire le dialogbox di configurazione se il pacchetto usa il motore debconf.

/DEBIAN/templates

Informazioni sulle dialogbox presentate durante l'installazione dal sistema debconf. Se un pacchetto usa debconf per l'installazione invece di essere interattivo durante gli script (postinst, ecc), fa tutte le domande all'inizio e poi va avanti da solo.

Modificare un pacchetto .deb esistente

Queste istruzioni riguardano la modifica di un pacchetto binario Debian. La modifica a partire dai sorgenti originali o da quelli Debian e' una procedura piu' complessa.

Scompattare i file

Non utilizzare Midnight Commander per scompattare un .deb! Prima di tutto non ripristina il timestamp dei file, ma ancora piu' grave non ricrea le directory vuote!

Creare una directory col nome del pacchetto e una sottodirectory di nome DEBIAN. Estrarre il contenuto del file .deb nella directory e i file di controllo nella sottodirectory DEBIAN:

mkdir apache-ssl
mkdir apache-ssl/DEBIAN
dpkg --extract apache-ssl_1.3.26.1+1.48-0woody3_i386.deb apache-ssl
dpkg --control apache-ssl_1.3.26.1+1.48-0woody3_i386.deb apache-ssl/DEBIAN

Un file .deb e' in realta' un file di tipo archive, compresso con gzip. Per estrarne il contenuto si puo' usare il comando ar xvf archive.deb e poi scompattare normalmente i due file data.tar.gz e control.tar.gz.

Modificare il contenuto

Aggiornare il numero di versione in /DEBIAN/control in modo che il pacchetto IPBOX sia preferito all'originale Debian. Aggiungere directory e file come necessario (ad esempio i template di configurazione).

Le variazioni rispetto al pacchetto Debian dovrebbero essere documentate in /usr/share/doc/<package>/changelog.IPBOX. Il formato del changelog e' descritto nel Debian Policy Manual, un esempio:

phpmyadmin (2.2.3-2ipbox3) woody; urgency=high

  * Removed all debconf stuff from control files
  * Added code to update /etc/apache-ssl/httpd.conf.include

 -- Niccolo Rigacci <niccolo@rigacci.org>  Thu, 25 Sep 2003 10:24:00 +0200
doc/appunti/linux/sa/debian_binary_package.txt · Last modified: 2005/11/07 15:49 by 127.0.0.1