Les paquets

De Wiki EELL.

(Différences entre les versions)
m (Sauvegarde)
m (OK après modif du bandeau)
 
(32 versions intermédiaires masquées)
Ligne 1 : Ligne 1 :
-
<center><big>'''EN COURS D'ECRITURE'''</big></center>
+
<!--<center><big>'''EN COURS D'ECRITURE'''</big></center>
 +
[[Fichier:Mkd-256x256.png|thumb|80px|left|''Make documents'']]--><div class="site-header noprint">
 +
{{Méta-bandeau|border-left=green|titre=&nbsp;'''Exercice de construction d'un paquet debian.'''|Cet exercice a pour but de se familiariser avec la construction d'un paquet debian.<br />Ce paquet est construit à titre d"essai<br />[https://fr.wikibooks.org/wiki/Mkd_(Extracteur_de_documents)/D%C3%A9p%C3%B4t_parrain%C3%A9_du_paquet_%27%27original%27%27_mkd-13121 Voyez la construction d'un paquet mkd officiel (version 131215)]
-
<!--[[Fichier:Mkd-256x256.png|thumb|80px|left|''Make documents'']]-->
+
Cette page a été optimisée pour la "{{bleu|Version imprimable}}". Si vous désirez imprimer cette page {{rouge|assurez-vous que les textes déroulants ne sont pas masqués.}} }}</div>
-
 
+
-
{{Méta-bandeau|couleur=rouge|titre=Exercice de construction d'un paquet debian.|Cet exercice a pour but de se familiariser avec la construction d'un paquet debian.<br />Ce paquet est construit à titre d"essai<br />[https://fr.wikibooks.org/wiki/Mkd_(Extracteur_de_documents)/D%C3%A9p%C3%B4t_parrain%C3%A9_du_paquet_%27%27original%27%27_mkd-13121 Voyez la construction d'un paquet mkd officiel (version 131215)]
+
-
 
+
-
Cette page a été optimisée pour "{{bleu|Version imprimable}}". Si vous désirez imprimer cette page assurez-vous que les textes déroulants ne sont pas masqués.}}
+
<!--{{Cadre/source}}-->
<!--{{Cadre/source}}-->
Les [[wikipedia:fr:Paquet_(logiciel)|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.
Les [[wikipedia:fr:Paquet_(logiciel)|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é
La description qui suit ne conduit pas à la construction d'un paquet sécurisé
-
 
== Créer un paquet debian ==
== Créer un paquet debian ==
Ligne 40 : Ligne 37 :
'''"./"''' est le '''répertoire conteneur''' que nous pouvons appeler '''projet-mkmaintainerdocu''' Il contient nos utilitaires et les fichiers d'installation.
'''"./"''' 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
+
'''"./mkmaintainerdocu"''' est le '''répertoire racine''' de notre paquet. Ce qui nous intéresse se trouve DANS ce répertoire.
-
<source lang=text>./mkmaintainerdocu/usr  
+
<div style="color: darkblue; background-color:#FFFFD0;font-size: 8pt">
-
./mkmaintainerdocu/usr/share  
+
&nbsp;'''Créer le contenu de l'archive.''' Les fichiers à créer sont décrits ci-après : <br />
-
./mkmaintainerdocu/usr/share/doc  
+
&nbsp;./mkmaintainerdocu/usr <br />
-
./mkmaintainerdocu/usr/share/doc/changelog.debian - fichier à créer  
+
&nbsp;./mkmaintainerdocu/usr/share <br />
-
./mkmaintainerdocu/usr/share/doc/copyright - fichier à créer
+
&nbsp;./mkmaintainerdocu/usr/share/doc <br />
-
./mkmaintainerdocu/usr/share/doc/changelog - fichier à créer  
+
&nbsp;./mkmaintainerdocu/usr/share/doc/changelog.debian - {{rouge|fichier à créer}} <br />
-
./mkmaintainerdocu/usr/share/doc/README - fichier à créer  
+
&nbsp;./mkmaintainerdocu/usr/share/doc/copyright - {{rouge|fichier à créer}} <br />
-
./mkmaintainerdocu/usr/local  
+
&nbsp;./mkmaintainerdocu/usr/share/doc/changelog - {{rouge|fichier à créer}} <br />
-
./mkmaintainerdocu/usr/local/bin  
+
&nbsp;./mkmaintainerdocu/usr/share/doc/README - {{rouge|fichier à créer}} <br />
-
./mkmaintainerdocu/usr/local/bin/mkmaintainerdocu - fichier à créer
+
&nbsp;./mkmaintainerdocu/usr/local <br />
-
./mkmaintainerdocu/DEBIAN  
+
&nbsp;./mkmaintainerdocu/usr/local/bin <br />
-
./mkmaintainerdocu/DEBIAN/postrm - fichier à créer
+
&nbsp;./mkmaintainerdocu/usr/local/bin/mkmaintainerdocu - {{rouge|fichier à créer}} <br />
-
./mkmaintainerdocu/DEBIAN/control - fichier à créer
+
&nbsp;./mkmaintainerdocu/DEBIAN <br />
-
./mkmaintainerdocu/DEBIAN/postinst - fichier à créer
+
&nbsp;./mkmaintainerdocu/DEBIAN/postrm - {{rouge|fichier à créer}} <br />
-
 
+
&nbsp;./mkmaintainerdocu/DEBIAN/control - {{rouge|fichier à créer}} <br />
-
* On y ajoutera les utilitaires :
+
&nbsp;./mkmaintainerdocu/DEBIAN/postinst - {{rouge|fichier à créer}} <br />
-
./empaqueter - pour créer le paquet
+
&nbsp;'''On y ajoutera les utilitaires décrits ci-après :''' <br />
-
./installer - pour installer l'application
+
&nbsp;./empaqueter - pour créer le paquet - {{rouge|fichier à créer}} <br />
-
./desinstaller - pour désinstaller le paquet
+
&nbsp;./installer - pour installer l'application - {{rouge|fichier à créer}} <br />
-
./KONSOLE - utilitaire pour créer une console locale
+
&nbsp;./desinstaller - pour désinstaller le paquet - {{rouge|fichier à créer}} <br />
-
 
+
&nbsp;./KONSOLE - utilitaire pour créer une console locale - {{rouge|fichier à créer}} <br />
-
* Fichiers créés à l'empaquetage :
+
&nbsp;'''Fichiers qui seront créés à l'empaquetage :''' <br />
-
./mkmaintainerdocu.deb
+
&nbsp;./mkmaintainerdocu.deb
-
 
+
</div>
-
* Remarques sur l'utilitaire de la logithèque :
+
-
./remarques</source>
+
-
 
+
==== changelog.debian ====
==== changelog.debian ====
-
* fichier nécessaire à la création du paquet, peut être vide.
+
<pre style="color:darkblue; background-color:#FFFFD0;">* fichier nécessaire à la création du paquet, peut être vide.
-
  First version : 1.0 (2013-12-15)
+
  First version : 1.0 (2013-12-15)</pre>
-
 
+
==== copyright ====
==== copyright ====
-
* fichier nécessaire à la création du paquet, peut être vide.
+
<pre style="color:darkblue; background-color:#FFFFD0;">* fichier nécessaire à la création du paquet, peut être vide.
-
  First version : 1.0 (2013-12-15) (c) Demo <demo@demo.com>
+
  First version : 1.0 (2013-12-15) (c) Demo <demo@demo.com></pre>
{{nouvelle page imprimée}}
{{nouvelle page imprimée}}
 +
==== changelog ====
==== changelog ====
-
* fichier nécessaire à la création du paquet, peut être vide.
+
<pre style="color:darkblue; background-color:#FFFFD0;">* fichier nécessaire à la création du paquet, peut être vide.
-
  First version : 1.0 (2013-12-15)
+
  First version : 1.0 (2013-12-15)</pre>
==== README ====
==== README ====
-
* fichier utile à la construction du paquet
+
<pre style="color:darkblue; background-color:#FFFFD0;">* fichier utile à la construction du paquet
-
  This demo command is writed to create a self debian package.
+
  This demo command is writed to create a self debian package.</pre>
==== mkmaintainerdocu ====
==== mkmaintainerdocu ====
* notre fichier shell qui va exécuter nos commandes de création des documents
* notre fichier shell qui va exécuter nos commandes de création des documents
-
<source lang="bash">#!/bin/bash
+
<pre style="color:darkblue; background-color:#FFFFD0;">#!/bin/bash
# File mkmaintainerdocu writed by Clara Jimenez 2013-12-15
# File mkmaintainerdocu writed by Clara Jimenez 2013-12-15
# Demo : Create any simple debian package for mkd and C programming language
# Demo : Create any simple debian package for mkd and C programming language
Ligne 120 : Ligne 114 :
project-functions-maintainers-doc.txt' "
project-functions-maintainers-doc.txt' "
mkd -Cjwnt P project-prj ./maintainer-documentation/project-functions-maintainers-doc.txt
mkd -Cjwnt P project-prj ./maintainer-documentation/project-functions-maintainers-doc.txt
 +
 +
# Get all strings and select strings for translations (add 2012-02-13)
 +
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 " Make mkd tests : "
-
echo "  See in working directory. "</source>
+
echo "  See in working directory. "</pre>
{{nouvelle page imprimée}}
{{nouvelle page imprimée}}
 +
==== postrm ====
==== postrm ====
* shell exécuté après la suppression du paquet (si nécessaire)
* shell exécuté après la suppression du paquet (si nécessaire)
* cet exécutable peut exécuter des mises à jour comme 'cat', 'whatis', et d'autres ...
* cet exécutable peut exécuter des mises à jour comme 'cat', 'whatis', et d'autres ...
-
<source lang="bash">#!/bin/bash
+
<pre style="color:darkblue; background-color:#FFFFD0;">#!/bin/bash
-
echo " If this message appears then 'mkmaintainerdocu' is now removed "</source>
+
echo " If this message appears then 'mkmaintainerdocu' is now removed "</pre>
==== control ====
==== control ====
* fichier nécessaire à la construction du paquet
* fichier nécessaire à la construction du paquet
-
<source lang="text">Version: 1.0
+
<pre style="color:darkblue; background-color:#FFFFD0;">Version: 1.0
Section: devel
Section: devel
Priority: optional
Priority: optional
Ligne 143 : Ligne 142 :
Description: Make maintainer documentation for C files. See mkd manual.
Description: Make maintainer documentation for C files. See mkd manual.
Suggests: mkdcppw
Suggests: mkdcppw
-
Recommends: mkd</source>
+
Recommends: mkd</pre>
* Le classement des paquets doit être choisi dans une des sections : <br />admin, devel, doc, graphics, libs, misc, net, otherofs, pyton, shells, sound, text, utils, x11.
* Le classement des paquets doit être choisi dans une des sections : <br />admin, devel, doc, graphics, libs, misc, net, otherofs, pyton, shells, sound, text, utils, x11.
Ligne 150 : Ligne 149 :
* shell exécuté après la création du paquet (si nécessaire)
* shell exécuté après la création du paquet (si nécessaire)
* cet exécutable peut exécuter des mises à jour comme 'cat', 'whatis', et d'autres ...
* cet exécutable peut exécuter des mises à jour comme 'cat', 'whatis', et d'autres ...
-
<source lang="bash">#!/bin/bash
+
<pre style="color:darkblue; background-color:#FFFFD0;">#!/bin/bash
echo " Use 'mkmaintainerdocu' in your working directory "
echo " Use 'mkmaintainerdocu' in your working directory "
echo "  Then type 'mkmaintainerdocu' in your terminal or konsole "
echo "  Then type 'mkmaintainerdocu' in your terminal or konsole "
-
echo "  See manual man1 'mkd' and, or, 'mkmaintainerdocu' "</source>
+
echo "  See manual man1 'mkd' and, or, 'mkmaintainerdocu' "</pre>
{{Nouvelle page imprimée}}
{{Nouvelle page imprimée}}
Ligne 161 : Ligne 160 :
==== empaqueter ====
==== empaqueter ====
-
<source lang="bash">
+
<pre style="color:darkblue; background-color:#FFFFD0;">#!/bin/bash
-
#!/bin/bash
+
fakeroot chmod 755 mkmaintainerdocu/usr/local/bin/mkmaintainerdocu
fakeroot chmod 755 mkmaintainerdocu/usr/local/bin/mkmaintainerdocu
fakeroot chmod 755 mkmaintainerdocu/DEBIAN/post*
fakeroot chmod 755 mkmaintainerdocu/DEBIAN/post*
fakeroot chmod 755 mkmaintainerdocu/DEBIAN/pre*
fakeroot chmod 755 mkmaintainerdocu/DEBIAN/pre*
fakeroot rm *.deb
fakeroot rm *.deb
-
fakeroot dpkg-deb --build mkmaintainerdocu
+
fakeroot dpkg-deb --build mkmaintainerdocu</pre>
-
</source>
+
==== installer ====
==== installer ====
-
<source lang="bash">
+
<pre style="color:darkblue; background-color:#FFFFD0;">#!/bin/bash
-
#!/bin/bash
+
sudo dpkg -i mkmaintainerdocu.deb</pre>
-
sudo dpkg -i mkmaintainerdocu.deb
+
-
</source>
+
==== desinstaller ====
==== desinstaller ====
-
<source lang="bash">
+
<pre style="color:darkblue; background-color:#FFFFD0;">#!/bin/bash
-
#!/bin/bash
+
sudo dpkg --remove mkmaintainerdocu
sudo dpkg --remove mkmaintainerdocu
ou :
ou :
-
# sudo dpkg --purge mkmaintainerdocu
+
# sudo dpkg --purge mkmaintainerdocu</pre>
-
</source>
+
==== KONSOLE ====
==== KONSOLE ====
-
<source lang="bash">
+
<pre style="color:darkblue; background-color:#FFFFD0;">#!/bin/bash
-
#!/bin/bash
+
echo -e '\E['32';'01'm'"click on New Line to 'start' the Konsole"
echo -e '\E['32';'01'm'"click on New Line to 'start' the Konsole"
# echo -e '\E['31';'01'm' "not 'start in a terminal'"
# echo -e '\E['31';'01'm' "not 'start in a terminal'"
Ligne 199 : Ligne 191 :
tput sgr0 # Reset text attributes to normal without clear
tput sgr0 # Reset text attributes to normal without clear
/usr/bin/konsole background-mode --workdir pwd dir
/usr/bin/konsole background-mode --workdir pwd dir
-
read
+
read</pre>
-
</source>
+
{{nouvelle page imprimée}}
{{nouvelle page imprimée}}
 +
=== Contenu extrait du paquet ===
=== Contenu extrait du paquet ===
* L'extraction recrée les répertoires avec la même structure.
* L'extraction recrée les répertoires avec la même structure.
-
<source lang="text">./mkmaintainerdocu
+
<pre style="color:white; background-color:#554455;">./mkmaintainerdocu
./mkmaintainerdocu/usr
./mkmaintainerdocu/usr
./mkmaintainerdocu/usr/share
./mkmaintainerdocu/usr/share
Ligne 220 : Ligne 212 :
./mkmaintainerdocu/DEBIAN/postrm
./mkmaintainerdocu/DEBIAN/postrm
./mkmaintainerdocu/DEBIAN/control
./mkmaintainerdocu/DEBIAN/control
-
./mkmaintainerdocu/DEBIAN/postinst</source>
+
./mkmaintainerdocu/DEBIAN/postinst</pre>
{{Nouvelle page imprimée}}
{{Nouvelle page imprimée}}
Ligne 234 : Ligne 226 :
==== main.c ====
==== main.c ====
-
<source lang=cpp>
+
<pre style="color:darkblue; background-color:#FFFFD0;">/*P
-
/*P
+
     FILE NAME : main.c
     FILE NAME : main.c
     PROJECT  : myproject
     PROJECT  : myproject
Ligne 281 : Ligne 272 :
     void main(void) {
     void main(void) {
     }
     }
-
</source>
+
</pre>
{{nouvelle page imprimée}}
{{nouvelle page imprimée}}
==== fonction1.c ====
==== fonction1.c ====
-
<source lang=cpp>/*P
+
<pre style="color:darkblue; background-color:#FFFFD0;">/*P
     FILE NAME : function1.c
     FILE NAME : function1.c
     PROJECT  : myproject
     PROJECT  : myproject
Ligne 315 : Ligne 306 :
     int function1(char* string1) {
     int function1(char* string1) {
     .....
     .....
-
     }</source>
+
     }</pre>
{{nouvelle page imprimée}}
{{nouvelle page imprimée}}
==== fonction2.c ====
==== fonction2.c ====
-
<source lang=cpp>/*P
+
<pre style="color:darkblue; background-color:#FFFFD0;">/*P
     FILE NAME : function2.c
     FILE NAME : function2.c
     PROJECT  : myproject
     PROJECT  : myproject
Ligne 349 : Ligne 340 :
     int function2(char* string2, int num) {
     int function2(char* string2, int num) {
     .....
     .....
-
     }</source>
+
     }</pre>
{{nouvelle page imprimée}}
{{nouvelle page imprimée}}
Ligne 357 : Ligne 348 :
==== Liste de l'archive myproject.tar.gz ====
==== Liste de l'archive myproject.tar.gz ====
-
<source lang="text">./myproject/
+
<pre style="color:white; background-color:#554455;">./myproject/
./myproject/main.c
./myproject/main.c
./myproject/project-prj
./myproject/project-prj
Ligne 367 : Ligne 358 :
./myproject/maintainer-documentation/project.h
./myproject/maintainer-documentation/project.h
./myproject/maintainer-documentation/project-functions-documentation.txt~
./myproject/maintainer-documentation/project-functions-documentation.txt~
-
./myproject/maintainer-documentation/project-functions-maintainers-doc.txt</source>
+
./myproject/maintainer-documentation/project-functions-maintainers-doc.txt</pre>
==== Fichier project.prj ====
==== Fichier project.prj ====
-
 
+
<pre style="color:white; background-color:#554455;">fonction1.c
-
<source lang="text">fonction1.c
+
fonction2.c
fonction2.c
-
main.c</source>
+
main.c</pre>
==== Fichier d'entête (header) ====
==== Fichier d'entête (header) ====
project.h:
project.h:
-
<source lang=cpp>
+
<pre style="color:white; background-color:#554455;">  
-
 
+
     // FILE NAME : function1.c
     // FILE NAME : function1.c
     int funtion1(char*);
     int funtion1(char*);
Ligne 389 : Ligne 378 :
     // FILE NAME : main.c
     // FILE NAME : main.c
     // function0 (included in main.c)
     // function0 (included in main.c)
-
     int function0(char*);
+
     int function0(char*);</pre>
-
</source>
+
{{nouvelle page imprimée}}
{{nouvelle page imprimée}}
 +
==== Directives de programmation et de tests ====
==== Directives de programmation et de tests ====
* project-functios-directives.txt
* project-functios-directives.txt
-
<source lang="text">
+
<pre style="color:white; background-color:#554455;">
     9     
     9     
   10      FILE NAME : function.c
   10      FILE NAME : function.c
Ligne 412 : Ligne 401 :
   11      UNIT TESTS DIRECTIVES : Blablabla0 ...
   11      UNIT TESTS DIRECTIVES : Blablabla0 ...
   12   
   12   
-
</source>
+
</pre>
==== Manuel des fonctions ====
==== Manuel des fonctions ====
* project-functions-documentation
* project-functions-documentation
-
<source lang=cpp>
+
<pre style="color:white; background-color:#554455;">
     FILE NAME : function1.c
     FILE NAME : function1.c
     FUNCTION NAME :
     FUNCTION NAME :
Ligne 449 : Ligne 438 :
     BUGS : email <email@mailer>
     BUGS : email <email@mailer>
     SEE ALSO MANUAL : man 1 myprojetc
     SEE ALSO MANUAL : man 1 myprojetc
-
</source>
+
</pre>
Ligne 455 : Ligne 444 :
==== Document à l'usage des mainteneurs ====
==== Document à l'usage des mainteneurs ====
-
<source lang="text">
+
<pre style="color:white; background-color:#554455;">
     1     
     1     
     2      FILE NAME : function1.c
     2      FILE NAME : function1.c
Ligne 479 : Ligne 468 :
     6      ....-..-.. Updated by ..... for ......
     6      ....-..-.. Updated by ..... for ......
     7   
     7   
-
</source>
+
</pre>
{{Boîte déroulante fin}}
{{Boîte déroulante fin}}
Ligne 497 : Ligne 486 :
Make-new-ppa : Pour créer un dépôt ppa.
Make-new-ppa : Pour créer un dépôt ppa.
-
<source lang = bash>#!/bin/bash
+
<pre style="color:darkblue; background-color:#FFFFD0;">#!/bin/bash
# File : Make-new-ppa
# File : Make-new-ppa
# Notes:  
# Notes:  
Ligne 541 : Ligne 530 :
echo "  changelog : remplacer unstable par votre version ubuntu (precise, saucy, etc.) "
echo "  changelog : remplacer unstable par votre version ubuntu (precise, saucy, etc.) "
echo "  control, copyright, rules, watch "
echo "  control, copyright, rules, watch "
-
echo " Il faudra ensuite exécuter la commande 'build-all-<me>' "</source>
+
echo " Il faudra ensuite exécuter la commande 'build-all-<me>' "</pre>
Il faut noter que toutes les options citées pour l'exécution de dh_make ne sont pas nécessaires. On peut supprimer la plupart des fichiers créés dans debian si on utilise une compilation simple de l'exécutable avec 'make'. Cependant, pour la portabilité sur d'autres machines avec des processeurs différents x86, amd64 etc. il est nécessaire de re-compiler l'exécutable; c'est le fichier exécutable 'rules' qui devra prendre en charge les différentes versions.
Il faut noter que toutes les options citées pour l'exécution de dh_make ne sont pas nécessaires. On peut supprimer la plupart des fichiers créés dans debian si on utilise une compilation simple de l'exécutable avec 'make'. Cependant, pour la portabilité sur d'autres machines avec des processeurs différents x86, amd64 etc. il est nécessaire de re-compiler l'exécutable; c'est le fichier exécutable 'rules' qui devra prendre en charge les différentes versions.
Ligne 548 : Ligne 537 :
* Build-and-put-to-ppa
* Build-and-put-to-ppa
-
<source lang = "bash">#!/bin/bash
+
<pre style="color:darkblue; background-color:#FFFFD0;">#!/bin/bash
# Création du fichier .changes où <clé> est votre clé publique PGP qui permet le cryptage et  
# Création du fichier .changes où <clé> est votre clé publique PGP qui permet le cryptage et  
Ligne 567 : Ligne 556 :
cd <répertoire-origine>
cd <répertoire-origine>
debuild -i -us -uc -b
debuild -i -us -uc -b
-
cd ..</source>
+
cd ..</pre>
{{Boîte déroulante fin}}
{{Boîte déroulante fin}}
{{Nouvelle page imprimée}}
{{Nouvelle page imprimée}}
 +
== Suggestions ==
 +
 +
* Si vous utilisez souvent les mêmes codes d'extraction, vous pouvez créer un shell pour la maintenance dans le répertoire /usr/local/bin, sans pour cela créer un paquet ....
 +
* Les paquets sont réellement utiles lorsque l'installation est complexe ou pour une meilleure sécurité par un dépôt officiel (Voir [https://launchpad.net/~jean-paul-louyot/+archive/exercises Launchpad])
 +
== Liens utiles ==
== Liens utiles ==
Ligne 577 : Ligne 571 :
[http://doc.ubuntu-fr.org/paquet  Liste 'complète' ? des pages décrivant l'utilisation des paquets sous Ubuntu]
[http://doc.ubuntu-fr.org/paquet  Liste 'complète' ? des pages décrivant l'utilisation des paquets sous Ubuntu]
-
 
-
== Suggestions ==
 
-
 
-
* Si vous utilisez souvent les mêmes codes d'extraction, vous pouvez créer un shell pour la maintenance dans le répertoire /usr/local/bin
 
-
* Pour enregistrer la liste complète des chaînes de caractères ou/et la liste des messages à traduire Ajoutez la ligne suivante :
 
-
<source lang=bash># Get all strings and select strings for translations
 
-
mkd -pnjs '**' project-prj ./maintainer-documentation/strings.txt | grep gettext > ./maintainer-documentation/strings-for-translations.txt </source>
 
== Références ==
== Références ==

Version actuelle en date du 19 février 2014 à 16:35

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é

Sommaire

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

  1. L'idée de la démonstration est de créer un utilitaire très simple à l'usage des programmeurs avec l'aide de la commande mkd.
  2. Nous nous sommes inspirés de l'article myecho[1] pour vous proposer cette commande que nous appellerons mkmaintainerdocu (Make maintainer documentation)
  3. Cette commande n'a pas pour ambition de persister dans les répertoires des commandes binaires (/bin, /usr/bin, etc.)

Que doit-il faire ?

  1. créer un fichier de projet pour une application écrite en langage C
  2. générer le fichier d'entête de l'application "<projet>.h
  3. générer la documentation des fonctions
  4. générer la documentation destinée aux programmeurs
  5. Si possible afficher les fichier à la fin de leur création ou modification.

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 - fichier à créer
 ./mkmaintainerdocu/usr/share/doc/copyright - fichier à créer
 ./mkmaintainerdocu/usr/share/doc/changelog - fichier à créer
 ./mkmaintainerdocu/usr/share/doc/README - fichier à créer
 ./mkmaintainerdocu/usr/local
 ./mkmaintainerdocu/usr/local/bin
 ./mkmaintainerdocu/usr/local/bin/mkmaintainerdocu - fichier à créer
 ./mkmaintainerdocu/DEBIAN
 ./mkmaintainerdocu/DEBIAN/postrm - fichier à créer
 ./mkmaintainerdocu/DEBIAN/control - fichier à créer
 ./mkmaintainerdocu/DEBIAN/postinst - fichier à créer
 On y ajoutera les utilitaires décrits ci-après :
 ./empaqueter - pour créer le paquet - fichier à créer
 ./installer - pour installer l'application - fichier à créer
 ./desinstaller - pour désinstaller le paquet - fichier à créer
 ./KONSOLE - utilitaire pour créer une console locale - fichier à créer
 Fichiers qui seront créés à l'empaquetage :
 ./mkmaintainerdocu.deb

changelog.debian

* fichier nécessaire à la création du paquet, peut être vide.
 First version : 1.0 (2013-12-15)

copyright

* fichier nécessaire à la création du paquet, peut être vide.
 First version : 1.0 (2013-12-15) (c) Demo <demo@demo.com>

changelog

* fichier nécessaire à la création du paquet, peut être vide.
 First version : 1.0 (2013-12-15)

README

* fichier utile à la construction du paquet
 This demo command is writed to create a self debian package.

mkmaintainerdocu

  • notre fichier shell qui va exécuter nos commandes de création des documents
#!/bin/bash
# File mkmaintainerdocu writed by Clara Jimenez 2013-12-15
# Demo : Create any simple debian package for mkd and C programming language

# remove old files :
rm *.c~ # ATTENTION !
# create project file only with C files :
ls -1 *.c > project-prj
# create ./maintainer-documentation directory if not exist :
install -d ./maintainer-documentation

# Make header file project.h and header document; style C, overwrite, text only
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

# Make individuals tests directives document; style C, overwrite, add line number, text only
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

# Make functions updates documentation; style C, overwrite, add line number, text only
echo " make functions maintainers documentation '/maintainer-documentation/\
project-functions-maintainers-doc.txt' "
mkd -Cjwnt P project-prj ./maintainer-documentation/project-functions-maintainers-doc.txt

# Get all strings and select strings for translations (add 2012-02-13)
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

  • shell exécuté après la suppression du paquet (si nécessaire)
  • cet exécutable peut exécuter des mises à jour comme 'cat', 'whatis', et d'autres ...
#!/bin/bash
echo " If this message appears then 'mkmaintainerdocu' is now removed "

control

  • fichier nécessaire à la construction du paquet
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
  • Le classement des paquets doit être choisi dans une des sections :
    admin, devel, doc, graphics, libs, misc, net, otherofs, pyton, shells, sound, text, utils, x11.

postinst

  • shell exécuté après la création du paquet (si nécessaire)
  • cet exécutable peut exécuter des mises à jour comme 'cat', 'whatis', et d'autres ...
#!/bin/bash
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

#!/bin/bash
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

#!/bin/bash
sudo dpkg -i mkmaintainerdocu.deb

desinstaller

#!/bin/bash
sudo dpkg --remove mkmaintainerdocu
ou :
# sudo dpkg --purge mkmaintainerdocu

KONSOLE

#!/bin/bash
echo -e '\E['32';'01'm'"click on New Line to 'start' the Konsole"
# echo -e '\E['31';'01'm' "not 'start in a terminal'"
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

  • L'extraction recrée les répertoires avec la même structure.
./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

Sécurisation des paquets

Les paquets non sécurisés sont à proscrire.



Suggestions

  • Si vous utilisez souvent les mêmes codes d'extraction, vous pouvez créer un shell pour la maintenance dans le répertoire /usr/local/bin, sans pour cela créer un paquet ....
  • Les paquets sont réellement utiles lorsque l'installation est complexe ou pour une meilleure sécurité par un dépôt officiel (Voir Launchpad)

Liens utiles

Créer un paquet ubuntu

Liste 'complète' ? des pages décrivant l'utilisation des paquets sous Ubuntu

Références

  1. http://alp.developpez.com/tutoriels/debian/creer-paquet/
Outils personnels