Les paquets d'installation des logiciels pour les systèmes d'exploitation linux permettent de sécuriser les systèmes grâce à des clés numériques. Ils permettent aussi de faciliter l'installation des applications.
Un paquet "original" est le premier paquet d'une série. Le paquet "natif " 131215 a été créé pour un nouveau dépôt ppa (Personnal packages) personnalisé par l'équipe de maintenance de l'EELL (Éditeurs européens de logiciels libres)
Créer la hiérarchie des fichiers et répertoires de travail.
./mkd-0~131215/src/find.inc.c
./mkd-0~131215/src/shell.c
./mkd-0~131215/src/asm.c
./mkd-0~131215/src/cpp.h
./mkd-0~131215/src/version.h
./mkd-0~131215/src/internationalisation.h
./mkd-0~131215/src/basic.h
./mkd-0~131215/src/tri.c
./mkd-0~131215/src/cpp.c
./mkd-0~131215/src/basic.c
./mkd-0~131215/src/fortran.h
./mkd-0~131215/src/fortran.c
./mkd-0~131215/src/mkd.h
./mkd-0~131215/src/shell.h
./mkd-0~131215/src/pascal.h
./mkd-0~131215/src/find.inc.h
./mkd-0~131215/src/mkd.c
./mkd-0~131215/src/asm.h
./mkd-0~131215/src/tri.h
./mkd-0~131215/src/pascal.c
./mkd-0~131215/usr/share/mime/packages/mkd.xml
./mkd-0~131215/usr/share/doc
./mkd-0~131215/usr/share/man/fr.UTF-8/man1/mkd.1.gz
./mkd-0~131215/usr/share/man/fr
./mkd-0~131215/usr/share/man/de/man1/mkd.1.gz
./mkd-0~131215/usr/share/man/man1/mkd.1.gz
./mkd-0~131215/usr/share/icons/hicolor/256x256/apps/mkd.pngps
./mkd-0~131215/usr/share/icons/hicolor/16x16/apps/mkd.png
./mkd-0~131215/usr/share/icons/hicolor/32x32/apps/mkd.png
./mkd-0~131215/usr/share/icons/hicolor/48x48/apps/mkd.png
./mkd-0~131215/usr/share/locale/fr/LC_MESSAGES/mkd.mo
./mkd-0~131215/usr/share/locale/en/LC_MESSAGES/mkd.mo
./mkd-0~131215/usr/share/locale/de/LC_MESSAGES/mkd.mo
./mkd-0~131215/usr/bin
Notez que :
Création du sous répertoire debian.
Le répertoire ./mkd-0~131215/debian est créé à l'aide du fichier de commande 'Make-new-ppa' que nous avons placé au dessus du répertoire "origine" pour simplifier la création des divers paquets.
tar cvzf mkd-0~131215.tar.gz mkd-0~131215
cd mkd-0~131215
dh_make -c GPL -e edeulo@free.fr -s -n -f mkd-0~131215.tar.gz -r CDBS 
echo "Lorsque le répertoire debian a été créé, mettre les fichiers à jour:"
echo "Fichiers à mettre à jour:"
echo "changelog remplacer unstable par la version (precise ou saucy)"
echo "control, copyright, rules, watch"
echo "Il faudra ensuite lancer Build-all"
Fichiers nécessitant une explication.
debian/changelog.
mkd (0~131215) saucy; urgency=low
 * Initial Release.
 -- Clara <email@mailserver> Thu, 19 Dec 2013 17:44:21 +0100
Notez que :
debian/control.
Source: mkd
Section: unknown
Priority: extra
Maintainer: Clara <email@emailserver>
Build-Depends: cdbs, debhelper (>= 8.0.0)
Standards-Version: 3.9.4
Homepage: <insert the upstream URL, if relevant>
Package: mkd
Architecture: any
Description: Application for software maintenance.
 mkd (commande unix), extracteur de documents.
 mkd extrait la documenation logicielle incluse dans les fichiers sources.
 mkd extract comments in source files and product maintainers documentation.
Notez que :
debian/copyright.
Format: http://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
Upstream-Name: mkd
Source: <http://edeulo.free.fr>
Files: *
Copyright: 1989-2001 Centre d'électronique de Montpellier <jpl@cem2.univ-montp2.fr>
 1989-2013 Jean-Paul Louyot <emailjpl@mailserver>
License: GPL-3.0+
Files: debian/*
Copyright: 2013 Clara <emailclara@mailserver>
License: GPL-3.0+
License: GPL-3.0+
 This program is free software: you can redistribute it and/or modify
 it under the terms of the GNU General Public License as published by
 the Free Software Foundation, either version 3 of the License, or
 (at your option) any later version.
 This package is distributed in the hope that it will be useful,
 but WITHOUT ANY WARRANTY; without even the implied warranty of
 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
 GNU General Public License for more details.
 You should have received a copy of the GNU General Public License
 along with this program. If not, see <http://www.gnu.org/licenses/>.
 On Debian systems, the complete text of the GNU General
 Public License version 3 can be found in "/usr/share/common-licenses/GPL-3".
Notez que :
debian/rules.
include /usr/share/cdbs/1/rules/debhelper.mk
include /usr/share/cdbs/1/class/makefile.mk
DEB_MAKE_CLEAN_TARGET:= mrproper
DEB_MAKE_BUILD_TARGET:= mkd
DEB_MAKE_INSTALL_TARGET:= install
Notez que :
A titre indicatif, il est possible d'utiliser une variante install DESTDIR=debian/mkd à condition de le prévoir; cette solution permet de créer un fichier temporaire de test avec install DESTDIR=debian/tmp/ (Pas vraiment utile !)
debian/doc.
NEWS
README
AUTHORS
COPYING
HISTORY
INSTALL
les fichiers NEWS à INSTALL seront copiés dans le répertoire ./mkd-0~131215/debian/mkd/usr/share/doc/mkd/ avant d'être recopié dans /usr/share/doc/mkd/. à l'installation du paquet.
./mkd-0~131215/debian/mkd/usr/share/doc/mkd/HISTORY
./mkd-0~131215/debian/mkd/usr/share/doc/mkd/NEWS.gz
./mkd-0~131215/debian/mkd/usr/share/doc/mkd/INSTALL
./mkd-0~131215/debian/mkd/usr/share/doc/mkd/AUTHORS
./mkd-0~131215/debian/mkd/usr/share/doc/mkd/changelog.gz
./mkd-0~131215/debian/mkd/usr/share/doc/mkd/COPYING
./mkd-0~131215/debian/mkd/usr/share/doc/mkd/copyright
./mkd-0~131215/debian/mkd/usr/share/doc/mkd/README
Notez que :
Vous pouvez ajouter :
On peut ajouter d'autres fichiers tels que :
debian/postinst.
Ce fichier sera exécuté après l'installation du paquet et doit mettre les bases de données à jour.
echo " postinst : update icon cache "
 gtk-update-icon-cache -t /usr/share/icons/hicolor
echo " postinst : install and update MIME database "
 update-mime-database /usr/share/mime
 # OPTIONS :
 # update catman only if selected manuals exist in manpath :
 # if [ -e $(MAN)"/man1/mkd.1.gz" ]; then catman -M $(MAN) 1 3; fi ;
 # if [ -e $(MAN)"/de.UTF-8/man1/mkd.1.gz" ]; then catman -M $(MAN)/de.UTF-8 1; fi ;
 # if [ -e $(MAN)"/de/man1/mkd.1.gz" ]; then catman -M $(MAN)/de 1 ; fi ;
 # if [ -e $(MAN)"/fr.UTF-8/man1/mkd.1.gz" ]; then catman -M $(MAN)/fr.UTF-8 1; fi ;
 # if [ -e $(MAN)"/fr/man1/mkd.1.gz" ]; then catman -M $(MAN)/fr 1 ; fi ;
 # END POST INSTALL
Notez que :
debian/postrm.
Ce fichier sera exécuté après la désinstallation de l'application pour mettre les bases de données à jour.
echo " postrm : update icon cache "
 gtk-update-icon-cache -t /usr/share/icons/hicolor
echo " postrm : update MIME database "
 update-mime-database /usr/share/mime
Makefile d'empaquetage.
 ### UBUNTU version for mkd_R_13.12 debian package ###
PGM = mkd
SRC = src
BINDIR = usr/bin
BINMODE = 755
SRCS = $(SRC)/mkd.c $(SRC)/asm.c $(SRC)/basic.c $(SRC)/cpp.c $(SRC)/fortran.c $(SRC)/pascal.c $(SRC)/shell.c $(SRC)/tri.c
HDRS = $(SRC)/version.h $(SRC)/mkd.h $(SRC)/asm.h $(SRC)/basic.h $(SRC)/cpp.h $(SRC)/fortran.h $(SRC)/pascal.h $(SRC)/shell.c $(SRC)/find.inc.c $(SRC)/find.inc.h $(SRC)/tri.h
OBJS = mkd.o asm.o basic.o cpp.o fortran.o pascal.o shell.o tri.o
LIBS =
CFLAGS = -O
LDFLAGS =
SPLINTFLAG = -weak
$(PGM): $(SRCS) $(HDRS)
 -@echo "*********** update $(PGM) ***********"
 $(CC) $(CFLAGS) -o $(PGM) $(SRCS)
 @#$(CC) $(LDFLAGS) -o $(PGM) $(OBJS) $(LIBS)
 -@echo " -- update $(BINDIR)/$(PGM):"
 -@if [ -d $(BINDIR) ]; then \
 mv -f $(PGM) $(BINDIR)/$(PGM);\
 chmod $(BINMODE) $(BINDIR)/$(PGM);\
 else \
 echo "couldn't find $(BINDIR)";\
 fi
install:
 mkdir -p debian/mkd/usr/bin
 cp -rf usr debian/mkd/.
mrproper:
 rm -rf *~
 rm -f $(PGM) $(BINDIR)/$(PGM)
 rm -f $(OBJS)
L'ordre d'exécution du Makefile est défini lors de la création du paquet, notamment par le fichier 'rules" que nous verrons ci_après. 1. nettoyage mrpropper 2. création de l'exécutable mkd 3. transfert des données et du binaire dans le répertoire debian/mkd/usr - Les lettres majuscules définissent les macros habituelles dans les Makefiles - La première directive $(PGM): $(SRCS) $(HDRS) va recompiler le binaire 'mkd' en fonction des processeurs : i386, amd64, etc. puis déplacer cet exécutable du répertoire courant vers le répertoire usr/bin - La seconde directive va copier toute la hiérarchie du répertoire courant usr vers le répertoire debian/mkd/ - La troisième directive sert au nettoyage avant la création du paquet.
Création du paquet (debuild).
echo " compilation "
cd mkd-0~131215
debuild -S -sa -k49E6B949
cd ..
echo " put to distri server "
dput ppa:jean-paul-louyot/mkd mkd_0~131215-1_source.changes
echo " Attendre le résultat envoyé par courrier électronique ... "
echo " make local debian package "
cd mkd-0~131215
debuild -i -us -uc -b
cd ..
Notez que :
Échecs et mise à jour de paquets.
Créer et administrer un dépôt sur launchpad
Éviter les échecs.
ATTENTION : Le dépôt va utiliser l' "archive d'origine" dans toute la suite des procédures de mises à jour. Si vous avez modifié le Makefile par exemple, il est nécessaire de tout reprendre ou de faire un "patch", car larchive d'origine" du dépôt ne va pas contenir le même Makefile, donc pas la même somme de contrôle"'. Il est aussi possible de conserver, dans une "archive native", le "répertoire d'origine" avec son "sous répertoire debian"; cela permet de conserver une mémoire des mises à jour .
Pour faire les essais il est préférable de lancer la commande 'Rebuild-all' "(Clara pour le chiffrage du transfert)"
echo " rm old files "
rm -f *.dsc
rm -f *.changes
rm -f *.build
rm -f *.upload
rm -f *.deb
rm -f mkd-0~131215/debian/*.ex
rm -f mkd-0~131215/debian/*.EX
echo " sauvegarde du répertoire debian"
echo " note d'option -n : les fichiers ne sont pas recopiés si ils existent"
cp -rn mkd-0~131215/debian .
echo " re-créer le fichier natif .tar.gz pour tenir compte des modifications "
tar cvzf mkd-0~131215.tar.gz mkd-0~131215
echo " dh_make va créer le répertoire debian avec de nouveaux fichiers si il a été supprimé "
echo " il ne sera pas recréé avec de nouveaux fichiers si il existe "
cd mkd-0~131215
dh_make -c GPL -e edeulo@free.fr -s -n -f mkd-0~131215.tar.gz -r CDBS 
echo " re-debuild -S -sa -k49E6B949 (Clara) " 
debuild -S -sa -k49E6B949
echo " re-debuild -i -us -uc -b création du paquet local "
debuild -i -us -uc -b
cd ..
echo " Si tout s'est bien passé on peut envisager le dépôt "
echo " Entrer la commande 'Buid-all-clara' "
Échecs.
Le transfert au dépôt ne se passe pas toujours très bien, il est rejeté. Il est nécessaire de corriger la construction du paquet.
Les rejets sont souvent dus aux commandes incluses dans le fichier "Makefile". 
Évitez d'utiliser des commandes susceptibles de renvoyer une valeur différente de zéro.
Launchpad renvoie des informations à l'auteur du transfert (Erreurs communes, la raison de l'échec, etc.)
Si vous renvoyez le fichier tel quel avec la correction, il sera refusé si le fichier ".upload" se trouve dans votre répertoire:
Résumé en cas d'échec :