Alternc  latest
Alternc logiel libre pour l'hébergement
README
Go to the documentation of this file.
1 Fonctionnement des scripts de mise-à-jour d'AlternC
2 ===================================================
3 
4 /!\ ATTENTION /!\
5 Votre script DOIT etre numéroté sur trois chiffres, pas plus, pas moins.
6 Donc :
7  1.0.1.sql -> OK
8  1.0.2~1.sql -> OK
9  1.0.2~a.sql -> OK
10  1.0.2.5.sql -> PAS OK
11  1.0.sql -> PAS OK
12 
13 Sinon, ca sera dans n'importe quel ordre.
14 
15 
16 Il a été décidé que des mises-à-jour pourront être "accrochées" àmoins.
17 certaines versions en les mettant dans le dossier upgrades. Lors de
18 l'installation d'un paquet, un script (upggrade_check.sh) examine ce
19 dossier et applique les mises-à-jour nécessaires, en se basant sur les
20 numéros de version. Les scripts considérés sont ceux terminés par
21 .sql, .sh ou .php, et sont interprétés avec mysql, /bin/sh ou php
22 respectivement, et dans cet ordre.
23 
24 Pour être considéré, le script doit donc avoir un nom conforme,
25 c'est-à-dire sous la forme \d(\.\d+)* (en expression régulière), par
26 exemple: 0.9.1.sh, 1.0.php, etc. De plus, le fichier est considérér
27 seulement si la version avec laquelle il est nommé tombe entre la
28 version de départ et d'arrivée du package.
29 Afin de forcer les scripts d'une même version a ce lancer dans un ordre précis,
30 on peut rajouter ~x avant l'extension du script où x est un charctère alphanumérique
31 ([0-9][a-z]). Par exemple pour forcer un script d'upgrade php a s'executer avant
32 un autre, il suffit de le rennomer X.X.X~1.php et X.X.X~2.php
33 
34 Voir ci-bas pour des exemples.
35 
36 Description formelle du fonctionnement de upgrade_check.sh
37 ----------------------------------------------------------
38 
39 Soit un upgrade d'une version X à une version Y. Les fichiers du
40 dossier d'upgrade sont examinés un à un. Pour chaque fichier dont le
41 nom N.php, N.sh ou N.sql est X >= N <= Y, le fichier est exécuté ou
42 passé à mysql, selon le cas approprié. Les versions sont comparées
43 avec dpkg --compare-versions. Les scripts sont exécutés dans cet
44 ordre: *.sql *.sh *.php.
45 
46 Il est donc capital de nommer correctement ce fichier.
47 
48 Ces scripts devront être idempotents, car ils peuvent être exécutés à
49 plusieurs reprises, comme tous les scripts postinst et config.
50 
51 (Note: en réalité, on ne vérifie pas la condition N <= Y. On assume que
52 si le script est disponible, il est applicable à cette version. Ceci
53 signifie qu'il ne faut pas "packager" un script d'upgrade N dans un
54 package Y si N > Y. Exemple: ne pas inclure un script 1.0 dans un
55 package 0.9, car il sera exécuté, même si la version installée est 1.0.)
56 
57 Pour plus de détails, consultez directement le script
58 ../upgrade_check.sh, qui gère ces upgrades.
59 
60 Mise en situation
61 -----------------
62 
63 Exemple: 0.9.1 sera exécuté lors d'une mise à jour de 0.9 à 0.9.1 (ou
64 1.0), mais pas d'une mise à jour de 0.9.1 à 1.0.
65 
66 Autre exemple: on procède à une mise à jour de alternc-0.9-20031009 vers
67 alternc-0.9.1. On trouve le script upgrades/0.9.1.sh. Celui-ci est
68 exécuté car 0.9-20031009 >= 0.9.1 <= 0.9.1. Il serait aussi exécuté pour
69 une mise à jour vers 0.9.2, 1.0, etc.