[AlternC-dev] debianisation, suite

Retour à l'archive de la liste
Le site d'AlternC
Google Custom Search

The Anarcat anarcat at anarcat.ath.cx
Sam 8 Mai 23:55:10 CEST 2004


On Sat May 08, 2004 at 11:04:37PM +0200, Benjamin Sonntag wrote:
> The Anarcat a écrit :
[...]

> > Évidemment. alternc.install *devient* le postinst/prerm/whatever
> 
> Pas tout à fait, puisque le postinst/prerm/configure doit aussi 
> interroger (via debconf) l'utilisateur pour remplir le alternc.conf.
> alternc.install lui ne fait qu'appliquer les consignes du fic de conf.

Oui, bon... on s'entend que le postinst devient seulement un wrapper
pour alternc.install... Ou on améliore alternc.install pour faire des
prompts debconf...

Détails d'implantation: il faut voir s'il est possible de "bundle"r le
script alternc.install avec le script postinst... Il y a aussi les
quelques scripts appelés par alternc.install lui-même à ne pas oublier
avant de partir. ;)

> >>sinon pour la partie "idempotent" on n'a pas le choix ou on abandonne le
> >>point A : AlternC DOIT (à mon avis) configurer comme il le souhaite les
> >>autres packages (apache, postfix ...) cela fait partie de son rôle.
> >
> >Je prétends qu'il est possible d'avoir un alternc.install idempotent
> >*et* qu'il configure tous les packages sous-jaçent. Avec des
> >dpkg-override, des update-alternatives, des backups des configs,
> >n'importe quoi, mais il *doit* être idempotent, sinon l'upgrade est
> >impossible.
> 
> bein ...
> 
> pour l'instant je n'ai pas de solution autre que justement ce 
> /etc/alternc/defaults/ et le fait de lancer alternc.update lors de 
> l'upgrade d'AlternC, ce qui fait qu'il réécrase les fic de conf 
> éventuellements écrasés par l'upgrade d'apache / postfix ...

Il y a des solutions pour apache et postfix, après vérification. Pour
les autres packages, c'est plus compliqué.

Mais tout ceci n'empêche pas alternc.install d'être idempotent et d'être
capable d'être rappelé, même après l'installation... voir plus bas.

> et de fait, on n'a pas dans le package de fichier de conf en **conflit** 
> avec le package bind/postfix/apache :
> 
> Dixit : Packages which specify the same file as a conffile must be 
> tagged as /conflicting/ with each other.
> ce n'est pas vraiment notre cas.

Non, évidemment, car on ne traite pas les fichiers de config du package
comme des conffiles, mais si on le faisait proprement, ça serait le cas.
Mais passons. :)

> Dixit : Firstly, as mentioned before, it is usually an error for a 
> package to contain files which are on the system in another package.
> ce n'est pas notre cas.

Oui, c'est notre cas. Apache contient httpd.conf dans son système, tout
comme alternc.

Mais le plus grave, c'est ceci:

Dixit: "The maintainer scripts must not alter a conffile of any package,
including the one the scripts belong to."

http://www.debian.org/doc/debian-policy/ch-files.html#s10.7.4

C'est très précisément ce que alternc.install a été "designed for". :)

> Si quelqu'un trouve une solution satisfaisante =
> **** qui ne nous oblige pas à nous baser sur les .conf fournit par les 
> .deb des autres softs ***
> je le suivrais en courant !

J'attends une réponse de la liste debian-mentors sur le sujet.

Je ne vois d'ailleurs pas pourquoi on ne pourrait pas se baser sur les
configs existantes: c'est un peu ça qui se fait maintenant. On a des
configs dans install/etc, c'est juste que l'on remplace des patterns
dans le fichier. Je peux faire un parser plus puissant. :)

En théorie, la solution est dans l'url mentionné ci-haut, en pratique
c'est impossible car ça requiert que tous les packages dont dépend
alternc doivent être refaits pour avoir un script "packageconf" comme
apache (apacheconf) ou postfix (postconf).

On peut se contenter, pour l'instant, de violer cette directive et de
patcher les fichiers existants, avec des backups. La façon élégante de
faire ceci, selon debian-policy, est dpkg-divert, je crois:

http://www.debian.org/doc/debian-policy/ap-pkg-diversions.html

Exemple:

if [ install = "$1"  ]; then
  dpkg-divert --package alternc --add --rename \
   --divert /etc/courier/authdaemonrc.alternc /etc/courier/authdaemonrc
fi

L'inverse au remove.

Je pense utiliser un hack similaire pour patcher mailman dans
alternc-mailman.

> en attendant on peut donc avancer ;)

Oui! Dès maintenant, on peut amorcer un gigantesque ménage du package.
Je suis en train à commenter alternc.install, pour clarifier certaines
choses et voir comment le rendre "upgradable".

En fait, je peux déjà dire que ces les scripts sous-jaçents à
alternc.install qui posent problème: ldap.sh, mysql.sh et initrep.sh ne
sont pas idempotents. :)

Aussi, il faudrait changer la version du package. Je crois que nous
avons (un peu?) décidé de ne pas s'attaquer à un *release* de 1.0
maintenant mais d'y aller d'encore quelques autres releases de 0.9, il
faudrait donc changer le debian/changelog... qui me semble assez
étrange.

(J'ai d'ailleurs mis une esquisse de milestones sur le wiki, dans le
FutureDalternc)

> >Je crois que l'on est tous d'accords:
> >
> >- alternc.conf devrait être géré par debconf
> >- alternc.install doit rester, mais être plus robuste: idempotent, par
> >  exemple
> >- alternc.install doit être appelé à la configuration du package
> >
> >Ceci respecterait tous les points que tu avais énoncé, je crois.
> 
> - alternc.conf doit pouvoir aussi être modifié à la main, et que cette 
> modif soit prise en compte par debconf par la suite. (comme 
> xserver-xfree86, qui LIT XF86Config-4 avant de lancer debconf, pas comme 
> mysql-serveur, qui ne lit pas my.cnf )

Ok problème ça... il suffit qu'alternc lise la config avant d'en faire
le setup. Si c'est un fichier perl ou shell, c'est facile.

En passant... alternc.install dépend de perl! C'est pas listé dans les
dépendances, ça!

> ok pour moi
> 
> on va y arriver !

Je crois qu'il faut juste mettre des choses au clair, et c'est ce que
nous sommes en train de faire... On va y arriver!

Documentons tout! Upgradons tout!

Au fait... ça serait intéressant de voir la procédure que les gens
utilisent pour upgrader alternc. Je n'ai jamais fait une telle
opération, et les packages devraient être capables de faire ça
eux-mêmes. C'est ça aussi, la magie de dpkg.

Cheers,

A.
-------------- section suivante --------------
Une pièce jointe autre que texte a été nettoyée...
Nom: non disponible
Type: application/pgp-signature
Taille: 187 octets
Desc: non disponible
URL: <http://lists.alternc.org/arch/dev/attachments/20040508/09e4844f/attachment.pgp>


Plus d'informations sur la liste de diffusion Dev