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.
La description qui suit ne conduit pas à la construction d'un paquet sécurisé
Créer un paquet debian.
La lecture de la documentation sur le sujet est si obscure qu'il est bien difficile de créer son premier paquet. L'objet de cet article est de voir, au travers d'un exemple simple, comment sortir de l'obscurité.
Le paquet debian que nous allons créer ne sera pas sécurisé et ne pourra pas être installé par le gestionnaire de la logithèque. Il sera simplement installé et désinstallé par des commandes shell.
Le paquet.
Choix de l'exécutable.
Le plus simple est de créer une commande shell bash↑, facile à maîtriser et inspirée par "myecho" cité dans les références.
Structure de l'archive projet-mkmaintainerdocu.tar.gz.
"./" est le répertoire conteneur que nous pouvons appeler projet-mkmaintainerdocu Il contient nos utilitaires et les fichiers d'installation.
"./mkmaintainerdocu" est le répertoire racine de notre paquet. Ce qui nous intéresse se trouve DANS ce répertoire.
 Créer le contenu de l'archive. Les fichiers à créer sont décrits ci-après :
 ./mkmaintainerdocu/usr 
 ./mkmaintainerdocu/usr/share 
 ./mkmaintainerdocu/usr/share/doc 
 ./mkmaintainerdocu/usr/share/doc/changelog.debian - 
 ./mkmaintainerdocu/usr/share/doc/copyright - 
 ./mkmaintainerdocu/usr/share/doc/changelog - 
 ./mkmaintainerdocu/usr/share/doc/README - 
 ./mkmaintainerdocu/usr/local 
 ./mkmaintainerdocu/usr/local/bin 
 ./mkmaintainerdocu/usr/local/bin/mkmaintainerdocu - 
 ./mkmaintainerdocu/DEBIAN 
 ./mkmaintainerdocu/DEBIAN/postrm - 
 ./mkmaintainerdocu/DEBIAN/control - 
 ./mkmaintainerdocu/DEBIAN/postinst - 
 On y ajoutera les utilitaires décrits ci-après :
 ./empaqueter - pour créer le paquet - 
 ./installer - pour installer l'application - 
 ./desinstaller - pour désinstaller le paquet - 
 ./KONSOLE - utilitaire pour créer une console locale - 
 Fichiers qui seront créés à l'empaquetage :
 ./mkmaintainerdocu.deb
changelog.debian.
 First version : 1.0 (2013-12-15)
copyright.
 First version : 1.0 (2013-12-15) (c) Demo <demo@demo.com>
changelog.
 First version : 1.0 (2013-12-15)
README.
 This demo command is writed to create a self debian package.
mkmaintainerdocu.
rm *.c~ # ATTENTION !
ls -1 *.c > project-prj
install -d ./maintainer-documentation
echo " make header file './maintainer-documentation/project.h' "
mkd -Cjwt H project-prj ./maintainer-documentation/project.h
echo " make fuctions documentation './maintainer-documentation/project-functions-documentation.txt' "
mkd -Cjwt D project-prj ./maintainer-documentation/project-functions-documentation.txt
echo " make tests document, directives for all functions './maintainer-documentation/\
project-functions-directives.txt' "
mkd -Cjwnt T project-prj ./maintainer-documentation/project-functions-directives.txt
echo " make functions maintainers documentation '/maintainer-documentation/\
project-functions-maintainers-doc.txt' "
mkd -Cjwnt P project-prj ./maintainer-documentation/project-functions-maintainers-doc.txt
echo " make list of strings for tranlations"
mkd -pnjs '**' project-prj ./maintainer-documentation/strings.txt | grep gettext > ./maintainer-documentation/strings-for-translations.txt 
echo " Make mkd tests : "
echo " See in working directory. "
postrm.
echo " If this message appears then 'mkmaintainerdocu' is now removed "
control.
Version: 1.0
Section: devel
Priority: optional
architecture: all
Depends: bash, mkd
Maintainer: Demo <demo@demo.com>
Description: Make maintainer documentation for C files. See mkd manual.
Suggests: mkdcppw
Recommends: mkd
postinst.
echo " Use 'mkmaintainerdocu' in your working directory "
echo " Then type 'mkmaintainerdocu' in your terminal or konsole "
echo " See manual man1 'mkd' and, or, 'mkmaintainerdocu' "
utilitaires.
empaqueter.
fakeroot chmod 755 mkmaintainerdocu/usr/local/bin/mkmaintainerdocu
fakeroot chmod 755 mkmaintainerdocu/DEBIAN/post*
fakeroot chmod 755 mkmaintainerdocu/DEBIAN/pre*
fakeroot rm *.deb
fakeroot dpkg-deb --build mkmaintainerdocu
installer.
sudo dpkg -i mkmaintainerdocu.deb
desinstaller.
sudo dpkg --remove mkmaintainerdocu
ou :
KONSOLE.
Cet utilitaire facilite l'ouverture d'une console dans le répertoire courant.
echo -e '\E['32';'01'm'"click on New Line to 'start' the Konsole"
echo -e '\E['32';'01'm'"click on Ctrl-C to exit"
tput sgr0 # Reset text attributes to normal without clear
read pwd
pwd
echo $pwd
tput sgr0 # Reset text attributes to normal without clear
/usr/bin/konsole background-mode --workdir pwd dir
read
Contenu extrait du paquet.
./mkmaintainerdocu
./mkmaintainerdocu/usr
./mkmaintainerdocu/usr/share
./mkmaintainerdocu/usr/share/doc
./mkmaintainerdocu/usr/share/doc/changelog.debian
./mkmaintainerdocu/usr/share/doc/copyright
./mkmaintainerdocu/usr/share/doc/changelog
./mkmaintainerdocu/usr/share/doc/README
./mkmaintainerdocu/usr/local
./mkmaintainerdocu/usr/local/bin
./mkmaintainerdocu/usr/local/bin/mkmaintainerdocu
./mkmaintainerdocu/DEBIAN
./mkmaintainerdocu/DEBIAN/postrm
./mkmaintainerdocu/DEBIAN/control
./mkmaintainerdocu/DEBIAN/postinst
Tests.
Fichiers pour les tests.
main.c.
/*P
 FILE NAME : main.c
 PROJECT : myproject
 UPDATES :
 2013-12-15 Created by me <myemail@emailserver.com>
 ...-..-.. Updated by ... for ...
/*T
 FILE NAME : main.c
 UNIT TESTS DIRECTIVES : Blablabla0 ...
/*D
 FILE NAME : main.c
 FUNCTION NAME : Main project ; <myproject>
 SYNOPSYS, SYNTAX :
 #include myproject.h
 void main (void);
 int function0(char* string0);
 char* string0 : <description>
 ACTION, DESCRIPTION ...
 CONFORMING TO : gcc, UTF-8
 PORTABILITY : ...
 RETURN VALUE :
 COPYRIGHT :
 AUTHORS :
 RESSOURCES :
 NOTES :
 BUGS : email <email@mailer>
 SEE ALSO MANUAL : man 1 myprojetc
/*H
 // FILE NAME : main.c
 // function0 (included in main.c)
 int function0(char*);
 int function0(char* string0){
 void main(void) {
fonction1.c.
/*P
 FILE NAME : function1.c
 PROJECT : myproject
 UPDATES :
 2013-12-15 Created by me <myemail@emailserver.com>
 ...-..-.. Updated by ... for ...
/*T
 FILE NAME : function1.c
 UNIT TESTS DIRECTIVES : Blablabla1 ...
/*D
 FILE NAME : function1.c
 FUNCTION NAME :
 SYNOPSYS, SYNTAX :
 #include myproject.h
/*H
 // FILE NAME : function1.c
 int funtion1(char*);
 int function1(char* string1) {
fonction2.c.
/*P
 FILE NAME : function2.c
 PROJECT : myproject
 UPDATES :
 2013-12-15 Created by me <myemail@emailserver.com>
 ...-..-.. Updated by ... for ...
/*T
 FILE NAME : function2.c
 UNIT TESTS DIRECTIVES : Blablabla2 ...
/*D
 FILE NAME : function2.c
 FUNCTION NAME :
 SYNOPSYS, SYNTAX :
 #include myproject.h
/*H
 // FILE NAME : function2.c
 int function2(char*, int);
 int function2(char* string2, int num) {
Résultat des tests.
Liste de l'archive myproject.tar.gz.
./myproject/
./myproject/main.c
./myproject/project-prj
./myproject/fonction2.c
./myproject/fonction1.c
./myproject/maintainer-documentation
./myproject/maintainer-documentation/project-functions-documentation.txt
./myproject/maintainer-documentation/project-functions-directives.txt
./myproject/maintainer-documentation/project.h
./myproject/maintainer-documentation/project-functions-documentation.txt~
./myproject/maintainer-documentation/project-functions-maintainers-doc.txt
Fichier project.prj.
fonction1.c
fonction2.c
main.c
Fichier d'entête (header).
project.h:
 // FILE NAME : function1.c
 int funtion1(char*);

// FILE NAME : function2.c
 int funtion2(char*, int);