dh_make à lancer une seule fois

Cette commande nous permettra de générer le répertoire nommé debian ainsi qu'un lot de fichiers d'exemples à l'intérieur de ce répertoire.

Lancement de la commande

ludo@idefix:~/s2a-0.0.1 % cp /ddn/common/s2a/api_tools/s2a_bin/s2a-0.0.1b16_27M.tar.gz ..                                                                    
ludo@idefix:~/s2a-0.0.1 % dh_make -e lfrancois@datadirectnet.com -f ../s2a-0.0.1b16_27M.tar.gz                                                               
ldap_sasl_interactive_bind_s: Can't contact LDAP server (-1)

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

Maintainer name : Ludovic Francois
Email-Address   : lfrancois@datadirectnet.com
Date            : Fri, 23 Jun 2006 11:39:13 +0200
Package Name    : s2a
Version         : 0.0.1
License         : blank
Type of Package : Single
Hit <enter> to confirm:
Done. Please edit the files in the debian/ subdirectory now. s2a
uses a configure script, so you probably don't have to edit the Makefiles.
ludo@idefix:~/s2a-0.0.1 %

Liste des fichiers générés

ludo@idefix:~/s2a-0.0.1/debian % ls -l
total 104
-rw--- 1 ludo ludo  197 2006-06-23 11:39 changelog
-rw--- 1 ludo ludo    2 2006-06-23 11:39 compat
-rw--- 1 ludo ludo  353 2006-06-23 11:39 control
-rw--- 1 ludo ludo  651 2006-06-23 11:39 copyright
-rw--- 1 ludo ludo   75 2006-06-23 11:39 cron.d.ex
-rw--- 1 ludo ludo   17 2006-06-23 11:39 dirs
-rw--- 1 ludo ludo   17 2006-06-23 11:39 docs
-rw--- 1 ludo ludo 1222 2006-06-23 11:39 emacsen-install.ex
-rw--- 1 ludo ludo  453 2006-06-23 11:39 emacsen-remove.ex                                                                                               
-rw--- 1 ludo ludo 1101 2006-06-23 11:39 emacsen-startup.ex
-rw--- 1 ludo ludo 1854 2006-06-23 11:39 init.d.ex
-rw--- 1 ludo ludo 1736 2006-06-23 11:39 manpage.1.ex
-rw--- 1 ludo ludo 4649 2006-06-23 11:39 manpage.sgml.ex
-rw--- 1 ludo ludo 4606 2006-06-23 11:39 manpage.xml.ex
-rw--- 1 ludo ludo  106 2006-06-23 11:39 menu.ex
-rw--- 1 ludo ludo  921 2006-06-23 11:39 postinst.ex
-rw--- 1 ludo ludo  913 2006-06-23 11:39 postrm.ex
-rw--- 1 ludo ludo  690 2006-06-23 11:39 preinst.ex
-rw--- 1 ludo ludo  881 2006-06-23 11:39 prerm.ex
-rw--- 1 ludo ludo  184 2006-06-23 11:39 README.Debian
-rwxr-xr-x 1 ludo ludo 2511 2006-06-23 11:39 rules
-rw--- 1 ludo ludo  223 2006-06-23 11:39 s2a-default.ex
-rw--- 1 ludo ludo  475 2006-06-23 11:39 s2a.doc-base.EX
-rw--- 1 ludo ludo  654 2006-06-23 11:39 watch.ex
ludo@idefix:~/s2a-0.0.1/debian %

Édition des fichiers

Fichier debian/control

Éditer le fichier control pour finaliser le travail de dh_make sur les propriétés de votre package.

Source: s2a
Section: admin
Priority: optional
Maintainer: Ludovic Francois <lfrancois@datadirectnet.com>
Build-Depends: debhelper (>= 5), autotools-dev
Standards-Version: 3.7.2

Package: s2a
Architecture: i386
Depends: ${shlibs:Depends}
Description: Monitoring and administration tools for DataDirect Networks s2a
 Monitoring and administration tools for DataDirect Networks s2a appliances.
 This tools supports:
  - s2a6000
  - s2a3000
  - s2a8500
  - s2a9500
 You will find  the main binary named s2a, with  this binary you could
 get a remote access on the storage system and make all cli monitoring
 and administration tasks from your unix command line.

Fichier debian/rules

Ce makefile nous donne des information sur la manière dont seront installés nos fichiers. Dans notre cas, c'est assez simple vu que nous utilisons les autotools, nous aurons juste besoin de passer quelques arguments au script ./configure.

Dans le cas présent, j'ai juste eu besoin de paraméter les fichiers configure.in et Makefile.am. Maintenant le "make install" copiera les man au bon endroit grâce à la directive man_MANS, les fichiers de /etc grâce à la directive sysconfdir et les scripts avec bin_SCRIPTS.

dch

Nous avons aussi besoin d'éditer le fichier de changelog qui permet de suivre les modifications qui seront faites sur le paquet debian.

Pour faire ça, il faut lancer la commande dch, la première fois, ca nous aidera à écrire une courte notice à propos de notre première release.

Mais la chose très intéressante avec cet outil est que ça devient très simple d'incrémenter la version du paquet et d'ajouter un commentaire à propos de cette mise à jour :

$ dch -i "cleaning update for integration in directMONITOR"

dpkg-buildpackage -rfakeroot

vérification du paquet

$ lintian -i s2a_0.0.1-1_i386.changes
$ lintian -i s2a_0.0.1-1_i386.changes

Comment fabriquer son propre dépot de paquets (dupload)

Côté serveur

La première fois :

# mkdir /var/www/apt

Après chaque dupload:

ludo@obelix:/var/www/apt % apt-ftparchive release . > Release
ludo@obelix:/var/www/apt % gpg -abs -o Release.gpg Release

Côté client (mainteneur debian)

# aptitude install dupload
/etc/dupload.conf
$default_host = "zoxx";
$cfg{'zoxx'} = {
        fqdn => "obelix.zoxx.net",
        method => "scpb",
        incoming => "/var/www/apt/",
        dinstall_runs => 1,
};
$cfg{'zoxx'}{postupload}{'changes'} = "
             echo 'cd /var/www/apt ;
             dpkg-scanpackages . /dev/null >Packages || true ;
             dpkg-scansources . /dev/null >Sources || true ;
             gzip -c Packages >Packages.gz ;
             gzip -c Sources >Sources.gz' | ssh obelix.zoxx.net  2>/dev/null ;
             echo 'Package archive created!'";
dupload
ludo@idefix:~ % dupload s2a_0.0.1-1_i386.changes
dupload note: no announcement will be sent.
Uploading (scpb) to obelix.zoxx.net:/var/www/apt/
[ job s2a_0.0.1-1_i386 from s2a_0.0.1-1_i386.changes                                                                                                         
 s2a_0.0.1-1_i386.deb, md5sum ok
 s2a_0.0.1-1.diff.gz, md5sum ok
 s2a_0.0.1.orig.tar.gz, md5sum ok
 s2a_0.0.1-1.dsc, md5sum ok     
 s2a_0.0.1-1_i386.changes ok ]
Uploading (scp) to zoxx (obelix.zoxx.net)
[ Uploading job s2a_0.0.1-1_i386
 s2a_0.0.1-1_i386.deb 16.6 kB, ok
 s2a_0.0.1-1.diff.gz 7.5 kB, ok
 s2a_0.0.1.orig.tar.gz 116.2 kB, ok
 s2a_0.0.1-1.dsc 0.3 kB, ok
 s2a_0.0.1-1_i386.changes 0.7 kB, ok
s2a_0.0.1-1_i386.deb                                                                                                                   100%   17KB  16.6KB/s   00:00
s2a_0.0.1-1.diff.gz                                                                                                                    100% 7730     7.6KB/s   00:00
s2a_0.0.1.orig.tar.gz                                                                                                                  100%  116KB 116.2KB/s   00:00
s2a_0.0.1-1.dsc                                                                                                                        100%  333     0.3KB/s   00:00
s2a_0.0.1-1_i386.changes                                                                                                               100%  711     0.7KB/s   00:00
 ]
Package archive created!
ludo@idefix:~ %

Côté client (utilisateur debian)

# echo "deb http://www.zoxx.net/apt ./" >> /etc/apt/sources.list
# GET http://www.zoxx.net/ludo_gpg.asc | apt-key add -
OK
# aptitude update
# aptitude show s2a
Package: s2a
New: yes
State: installed
Automatically installed: no
Version: 0.0.1-2
Priority: optional
Section: admin
Maintainer: Ludovic Francois <lfrancois@datadirectnet.com>
Uncompressed Size: 442k
Depends: libc6 (>= 2.3.6-6)
Description: Monitoring and administration tools for DataDirect Networks s2a
 Monitoring and administration tools for DataDirect Networks s2a appliances.
This tools supports:
 * s2a6000
 * s2a3000
 * s2a8500
 * s2a9500
 You will find  the main binary named s2a, with  this binary you could get a
remote access on the storage system and make all cli monitoring and
administration tasks
 from your unix command line.
# aptitude install s2a