| 1 |
Fonctionnement des scripts de mise-à-jour d'AlternC |
|---|
| 2 |
=================================================== |
|---|
| 3 |
|
|---|
| 4 |
Il a été décidé que des mises-à-jour pourront être "accrochées" à |
|---|
| 5 |
certaines versions en les mettant dans le dossier upgrades. Lors de |
|---|
| 6 |
l'installation d'un paquet, un script (upggrade_check.sh) examine ce |
|---|
| 7 |
dossier et applique les mises-à-jour nécessaires, en se basant sur les |
|---|
| 8 |
numéros de version. Les scripts considérés sont ceux terminés par |
|---|
| 9 |
.sql, .sh ou .php, et sont interprétés avec mysql, /bin/sh ou php |
|---|
| 10 |
respectivement, et dans cet ordre. |
|---|
| 11 |
|
|---|
| 12 |
Pour être considéré, le script doit donc avoir un nom conforme, |
|---|
| 13 |
c'est-à-dire sous la forme \d(\.\d+)* (en expression régulière), par |
|---|
| 14 |
exemple: 0.9.1.sh, 1.0.php, etc. De plus, le fichier est considéré |
|---|
| 15 |
seulement si la version avec laquelle il est nommé tombe entre la |
|---|
| 16 |
version de départ et d'arrivée du package. |
|---|
| 17 |
|
|---|
| 18 |
Voir ci-bas pour des exemples. |
|---|
| 19 |
|
|---|
| 20 |
Description formelle du fonctionnement de upgrade_check.sh |
|---|
| 21 |
---------------------------------------------------------- |
|---|
| 22 |
|
|---|
| 23 |
Soit un upgrade d'une version X à une version Y. Les fichiers du |
|---|
| 24 |
dossier d'upgrade sont examinés un à un. Pour chaque fichier dont le |
|---|
| 25 |
nom N.php, N.sh ou N.sql est X >= N <= Y, le fichier est exécuté ou |
|---|
| 26 |
passé à mysql, selon le cas approprié. Les versions sont comparées |
|---|
| 27 |
avec dpkg --compare-versions. Les scripts sont exécutés dans cet |
|---|
| 28 |
ordre: *.sql *.sh *.php. |
|---|
| 29 |
|
|---|
| 30 |
Il est donc capital de nommer correctement ce fichier. |
|---|
| 31 |
|
|---|
| 32 |
Ces scripts devront être idempotents, car ils peuvent être exécutés à |
|---|
| 33 |
plusieurs reprises, comme tous les scripts postinst et config. |
|---|
| 34 |
|
|---|
| 35 |
(Note: en réalité, on ne vérifie pas la condition N <= Y. On assume que |
|---|
| 36 |
si le script est disponible, il est applicable à cette version. Ceci |
|---|
| 37 |
signifie qu'il ne faut pas "packager" un script d'upgrade N dans un |
|---|
| 38 |
package Y si N > Y. Exemple: ne pas inclure un script 1.0 dans un |
|---|
| 39 |
package 0.9, car il sera exécuté, même si la version installée est 1.0.) |
|---|
| 40 |
|
|---|
| 41 |
Pour plus de détails, consultez directement le script |
|---|
| 42 |
../upgrade_check.sh, qui gère ces upgrades. |
|---|
| 43 |
|
|---|
| 44 |
Mise en situation |
|---|
| 45 |
----------------- |
|---|
| 46 |
|
|---|
| 47 |
Exemple: 0.9.1 sera exécuté lors d'une mise à jour de 0.9 à 0.9.1 (ou |
|---|
| 48 |
1.0), mais pas d'une mise à jour de 0.9.1 à 1.0. |
|---|
| 49 |
|
|---|
| 50 |
Autre exemple: on procède à une mise à jour de alternc-0.9-20031009 vers |
|---|
| 51 |
alternc-0.9.1. On trouve le script upgrades/0.9.1.sh. Celui-ci est |
|---|
| 52 |
exécuté car 0.9-20031009 >= 0.9.1 <= 0.9.1. Il serait aussi exécuté pour |
|---|
| 53 |
une mise à jour vers 0.9.2, 1.0, etc. |
|---|