Les paquets
De Wiki EELL.
m (Sauvegarde) |
m (Retouches) |
||
Ligne 3 : | Ligne 3 : | ||
<!--[[Fichier:Mkd-256x256.png|thumb|80px|left|''Make documents'']]--> | <!--[[Fichier:Mkd-256x256.png|thumb|80px|left|''Make documents'']]--> | ||
- | {{Méta-bandeau|couleur= | + | {{Méta-bandeau|couleur=#FF0000|largeur=grande|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.}} | 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.}} | ||
Ligne 41 : | Ligne 41 : | ||
'''"./"''' 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 | ||
- | < | + | <pre>./mkmaintainerdocu/usr |
./mkmaintainerdocu/usr/share | ./mkmaintainerdocu/usr/share | ||
./mkmaintainerdocu/usr/share/doc | ./mkmaintainerdocu/usr/share/doc | ||
Ligne 66 : | Ligne 66 : | ||
* Remarques sur l'utilitaire de la logithèque : | * Remarques sur l'utilitaire de la logithèque : | ||
- | ./remarques</ | + | ./remarques</pre> |
Ligne 135 : | Ligne 135 : | ||
* fichier nécessaire à la construction du paquet | * fichier nécessaire à la construction du paquet | ||
- | < | + | <pre>Version: 1.0 |
Section: devel | Section: devel | ||
Priority: optional | Priority: optional | ||
Ligne 143 : | Ligne 143 : | ||
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</ | + | 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 150 : | ||
* 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 ... | ||
- | < | + | <pre>#!/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' "</ | + | echo " See manual man1 'mkd' and, or, 'mkmaintainerdocu' "</pre> |
{{Nouvelle page imprimée}} | {{Nouvelle page imprimée}} | ||
Ligne 161 : | Ligne 161 : | ||
==== empaqueter ==== | ==== empaqueter ==== | ||
- | < | + | <pre> |
#!/bin/bash | #!/bin/bash | ||
fakeroot chmod 755 mkmaintainerdocu/usr/local/bin/mkmaintainerdocu | fakeroot chmod 755 mkmaintainerdocu/usr/local/bin/mkmaintainerdocu | ||
Ligne 168 : | Ligne 168 : | ||
fakeroot rm *.deb | fakeroot rm *.deb | ||
fakeroot dpkg-deb --build mkmaintainerdocu | fakeroot dpkg-deb --build mkmaintainerdocu | ||
- | </ | + | </pre> |
==== installer ==== | ==== installer ==== | ||
- | < | + | <pre> |
#!/bin/bash | #!/bin/bash | ||
sudo dpkg -i mkmaintainerdocu.deb | sudo dpkg -i mkmaintainerdocu.deb | ||
- | </ | + | </pre> |
==== desinstaller ==== | ==== desinstaller ==== | ||
- | < | + | <pre> |
#!/bin/bash | #!/bin/bash | ||
sudo dpkg --remove mkmaintainerdocu | sudo dpkg --remove mkmaintainerdocu | ||
ou : | ou : | ||
# sudo dpkg --purge mkmaintainerdocu | # sudo dpkg --purge mkmaintainerdocu | ||
- | </ | + | </pre> |
==== KONSOLE ==== | ==== KONSOLE ==== | ||
- | < | + | <pre> |
#!/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" | ||
Ligne 200 : | Ligne 200 : | ||
/usr/bin/konsole background-mode --workdir pwd dir | /usr/bin/konsole background-mode --workdir pwd dir | ||
read | read | ||
- | </ | + | </pre> |
{{nouvelle page imprimée}} | {{nouvelle page imprimée}} | ||
Ligne 206 : | Ligne 206 : | ||
* L'extraction recrée les répertoires avec la même structure. | * L'extraction recrée les répertoires avec la même structure. | ||
- | < | + | <pre>./mkmaintainerdocu |
./mkmaintainerdocu/usr | ./mkmaintainerdocu/usr | ||
./mkmaintainerdocu/usr/share | ./mkmaintainerdocu/usr/share | ||
Ligne 220 : | Ligne 220 : | ||
./mkmaintainerdocu/DEBIAN/postrm | ./mkmaintainerdocu/DEBIAN/postrm | ||
./mkmaintainerdocu/DEBIAN/control | ./mkmaintainerdocu/DEBIAN/control | ||
- | ./mkmaintainerdocu/DEBIAN/postinst</ | + | ./mkmaintainerdocu/DEBIAN/postinst</pre> |
{{Nouvelle page imprimée}} | {{Nouvelle page imprimée}} | ||
Ligne 234 : | Ligne 234 : | ||
==== main.c ==== | ==== main.c ==== | ||
- | < | + | <pre> |
/*P | /*P | ||
FILE NAME : main.c | FILE NAME : main.c | ||
Ligne 281 : | Ligne 281 : | ||
void main(void) { | void main(void) { | ||
} | } | ||
- | </ | + | </pre> |
{{nouvelle page imprimée}} | {{nouvelle page imprimée}} | ||
==== fonction1.c ==== | ==== fonction1.c ==== | ||
- | < | + | <pre>/*P |
FILE NAME : function1.c | FILE NAME : function1.c | ||
PROJECT : myproject | PROJECT : myproject | ||
Ligne 315 : | Ligne 315 : | ||
int function1(char* string1) { | int function1(char* string1) { | ||
..... | ..... | ||
- | }</ | + | }</pre> |
{{nouvelle page imprimée}} | {{nouvelle page imprimée}} | ||
==== fonction2.c ==== | ==== fonction2.c ==== | ||
- | < | + | <pre>/*P |
FILE NAME : function2.c | FILE NAME : function2.c | ||
PROJECT : myproject | PROJECT : myproject | ||
Ligne 349 : | Ligne 349 : | ||
int function2(char* string2, int num) { | int function2(char* string2, int num) { | ||
..... | ..... | ||
- | }</ | + | }</pre> |
{{nouvelle page imprimée}} | {{nouvelle page imprimée}} | ||
Ligne 357 : | Ligne 357 : | ||
==== Liste de l'archive myproject.tar.gz ==== | ==== Liste de l'archive myproject.tar.gz ==== | ||
- | < | + | <pre>./myproject/ |
./myproject/main.c | ./myproject/main.c | ||
./myproject/project-prj | ./myproject/project-prj | ||
Ligne 367 : | Ligne 367 : | ||
./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</ | + | ./myproject/maintainer-documentation/project-functions-maintainers-doc.txt</pre> |
==== Fichier project.prj ==== | ==== Fichier project.prj ==== | ||
- | < | + | <pre>fonction1.c |
fonction2.c | fonction2.c | ||
- | main.c</ | + | main.c</pre> |
==== Fichier d'entête (header) ==== | ==== Fichier d'entête (header) ==== | ||
project.h: | project.h: | ||
- | < | + | <pre> |
// FILE NAME : function1.c | // FILE NAME : function1.c | ||
Ligne 390 : | Ligne 390 : | ||
// function0 (included in main.c) | // function0 (included in main.c) | ||
int function0(char*); | int function0(char*); | ||
- | </ | + | </pre> |
Ligne 397 : | Ligne 397 : | ||
* project-functios-directives.txt | * project-functios-directives.txt | ||
- | < | + | <pre> |
9 | 9 | ||
10 FILE NAME : function.c | 10 FILE NAME : function.c | ||
Ligne 412 : | Ligne 412 : | ||
11 UNIT TESTS DIRECTIVES : Blablabla0 ... | 11 UNIT TESTS DIRECTIVES : Blablabla0 ... | ||
12 | 12 | ||
- | </ | + | </pre> |
==== Manuel des fonctions ==== | ==== Manuel des fonctions ==== | ||
* project-functions-documentation | * project-functions-documentation | ||
- | < | + | <pre> |
FILE NAME : function1.c | FILE NAME : function1.c | ||
FUNCTION NAME : | FUNCTION NAME : | ||
Ligne 449 : | Ligne 449 : | ||
BUGS : email <email@mailer> | BUGS : email <email@mailer> | ||
SEE ALSO MANUAL : man 1 myprojetc | SEE ALSO MANUAL : man 1 myprojetc | ||
- | </ | + | </pre> |
Ligne 455 : | Ligne 455 : | ||
==== Document à l'usage des mainteneurs ==== | ==== Document à l'usage des mainteneurs ==== | ||
- | < | + | <pre> |
1 | 1 | ||
2 FILE NAME : function1.c | 2 FILE NAME : function1.c | ||
Ligne 479 : | Ligne 479 : | ||
6 ....-..-.. Updated by ..... for ...... | 6 ....-..-.. Updated by ..... for ...... | ||
7 | 7 | ||
- | </ | + | </pre> |
{{Boîte déroulante fin}} | {{Boîte déroulante fin}} | ||
Ligne 497 : | Ligne 497 : | ||
Make-new-ppa : Pour créer un dépôt ppa. | Make-new-ppa : Pour créer un dépôt ppa. | ||
- | < | + | <pre>#!/bin/bash |
# File : Make-new-ppa | # File : Make-new-ppa | ||
# Notes: | # Notes: | ||
Ligne 541 : | Ligne 541 : | ||
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>' "</ | + | 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 548 : | ||
* Build-and-put-to-ppa | * Build-and-put-to-ppa | ||
- | < | + | <pre>#!/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 567 : | ||
cd <répertoire-origine> | cd <répertoire-origine> | ||
debuild -i -us -uc -b | debuild -i -us -uc -b | ||
- | cd ..</ | + | cd ..</pre> |
{{Boîte déroulante fin}} | {{Boîte déroulante fin}} | ||
Version du 11 février 2014 à 10:52
Cet exercice a pour but de se familiariser avec la construction d'un paquet debian.
Ce paquet est construit à titre d"essai
Voyez la construction d'un paquet mkd officiel (version 131215)
Cette page a été optimisée pour "Version imprimable". Si vous désirez imprimer cette page assurez-vous que les textes déroulants ne sont pas masqués.
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
- 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.
- Nous nous sommes inspirés de l'article myecho[1] pour vous proposer cette commande que nous appellerons mkmaintainerdocu (Make maintainer documentation)
- Cette commande n'a pas pour ambition de persister dans les répertoires des commandes binaires (/bin, /usr/bin, etc.)
Que doit-il faire ?
- créer un fichier de projet pour une application écrite en langage C
- générer le fichier d'entête de l'application "<projet>.h
- générer la documentation des fonctions
- générer la documentation destinée aux programmeurs
- 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
./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 : ./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 créés à l'empaquetage : ./mkmaintainerdocu.deb * Remarques sur l'utilitaire de la logithèque : ./remarques
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
<source lang="bash">#!/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
echo " Make mkd tests : " echo " See in working directory. "</source>
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 ...
<source lang="bash">#!/bin/bash echo " If this message appears then 'mkmaintainerdocu' is now removed "</source>
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
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); // FILE NAME : main.c // function0 (included in main.c) int function0(char*);
Directives de programmation et de tests
- project-functios-directives.txt
9 10 FILE NAME : function.c 11 UNIT TESTS DIRECTIVES : Blablabla1 ... 12 13 9 10 FILE NAME : function2.c 11 UNIT TESTS DIRECTIVES : Blablabla2 ... 12 13 9 10 FILE NAME : main.c 11 UNIT TESTS DIRECTIVES : Blablabla0 ... 12
Manuel des fonctions
- project-functions-documentation
FILE NAME : function1.c FUNCTION NAME : SYNOPSYS, SYNTAX : #include myproject.h ..... FILE NAME : function2.c FUNCTION NAME : SYNOPSYS, SYNTAX : #include myproject.h ..... FILE NAME : main.c FUNCTION NAME : Main project ; <myproject> SYNOPSYS, SYNTAX : #include myproject.h void main (void); int function(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
Document à l'usage des mainteneurs
1 2 FILE NAME : function1.c 3 PROJECT : myproject 4 UPDATES : 5 2013-12-15 Created by me <myemail@emailserver.com> 6 ....-..-.. Updated by ..... for ...... 7 8 1 2 FILE NAME : function2.c 3 PROJECT : myproject 4 UPDATES : 5 2013-12-15 Created by me <myemail@emailserver.com> 6 ....-..-.. Updated by ..... for ...... 7 8 1 2 FILE NAME : main.c 3 PROJECT : myproject 4 UPDATES : 5 2013-12-15 Created by me <myemail@emailserver.com> 6 ....-..-.. Updated by ..... for ...... 7
Sécurisation des paquets
Les paquets non sécurisés sont à proscrire.
Créer un nouveau paquet sécurisé
Make-new-ppa : Pour créer un dépôt ppa.
#!/bin/bash # File : Make-new-ppa # Notes: # <archive> a la forme : <exécutable>-<version>.tar.gz # Nettoyage : echo " Ne pas lancer en 'sudo', 'su' ou 'root'. Utiliser la 'Konsole' ou le 'Terminal' " # Conserver une trace du vieux répertoire DEBIAN, au cas où ... echo " Déplacement le vieux répertoire DEBIAN si il existe et le mettre en mode lecture seule. " mv <répertoire-origine>/debian ./debian.old chmod 444 ./debian.old echo "suppression éventuelle du vieux répertoire DEBIAN " rm -Rf debian/ # Entrer dans le répertoire-origine. C'est le répertoire de vos sources. echo " entrant dans les sources de l'archive : <répertoire-origine>/src/ " cd <répertoire-origine>/src # Nettoyage du répertoire des sources avec l'option -d : print debugging echo " mettant à jour l'exécutable et le plaçant dans son répertoire ../usr/bin " make <exécutable> -d rm *.o cd ../../ # créer le fichier orig.tar.gz echo " sortant de l'archive et créant le fichier compressé de l'archive d'origine " tar cvzf <répertoire-origine>.tar.gz <répertoire-origine> # attention au point qui se transforme en souligné sauf pour l'archive native # 'mv' pas pour le natif. # Rappel : <répertoire-origine> = <exécutable>-<version> # mv <exécutable>-<version>.tar.gz <exécutable>_<version>.orig.tar.gz # Créer le nouveau répertoire DEBIAN selon la configuration et options # -c : avec licence de copyright. -e : avec UNE adresse de courriel des mainteneurs. # -s : seulement le binaire. -n : paquet natif. -f : <fichier> où <fichier> est le nom # de l'archive (compressée .tar.gz) que nous venons de créer ci-dessus. # -r <format> d'exécution (rules) pour la création du paquet : cdbs, ou dh7, ou old cd <archive> echo "entrant dans le répertoire <répertoire-origine> " echo " créant les fichiers de base pour la construction du paquet dans ./debian/ " dh_make -c GPL -e myemail@mailserver -s -n -f <archive-origine>.tar.gz -r CDBS echo " Ayant créé les fichiers de base dans le répertoire debian : " echo " mettre les fichiers suivants à jour:" echo " changelog : remplacer unstable par votre version ubuntu (precise, saucy, etc.) " echo " control, copyright, rules, watch " echo " Il faudra ensuite exécuter la commande 'build-all-<me>' "
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.
Compilation et envoi au dépôt ppa:
- Build-and-put-to-ppa
#!/bin/bash # Création du fichier .changes où <clé> est votre clé publique PGP qui permet le cryptage et # le dépôt parrainé sécurisé # L'option -sa précise que le fichier source d'origine '.tar' est un répertoire. # L'option -S pour ne créer qu'un seul binaire. echo " entrant dans l'archive : compilation cryptée d'un seul paquet source.changes pour le dépôt " cd <répertoire-origine> debuild -S -sa -k<clé> cd .. echo " sortant de l'archive, envoi parrainé au dépôt ppa " dput ppa:<your-ppa/<exécutable> <exécutable>_<version+1>_source.changes # Création du paquet crypté sans re-signer le fichier '.changes' ou/et '.dsc' # -i (--info) directive pour lintian. Affiche les problèmes et les erreurs. # -us et -uc directives pour ne pas modifier les fichiers '.changes' et '.dsc' echo " construction de paquets binaires " cd <répertoire-origine> debuild -i -us -uc -b cd ..
Liens utiles
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>