Demande #37054
Gestion des dépendances de paquets entre conteneurs (virtuels)
0%
Description
Pour gérer l’installation en mode conteneur, on utilise les mécanismes creole (balise package).
Ce mécanisme ne rend pas visible la notion de dépendance entre les paquets eole-* et *-pkg ou *-apps (pour les applications envole) pour les procédures de mise à jour.
Dans le cas du passage à l’utilisation de php-fpm, s’appuyant sur la mise à disposition d’un nouveau dépôt de paquets, on tombe sur un problème d’organisation des mises à jour :
- le paquet
eole-commonapporte la déclaration du nouveau dépôt ; - le paquet
envole-dependances-apps(déclaré dans un dictionnaire pour le conteneur web) dépend des paquets de ce nouveau dépôt ; - les configurations apache des applications apportées sous forme de template dans les paquets
eole-*nécessite php-fpm et les différentes versions de PHP ;
On a donc une dépendance de version entre des paquets sur l’hôte (eole-common, eole-* pour les applications web) et le paquet envole-dependances-apps dans le conteneur. Cette dépendance n’est pas déclarée dans les debian/control et n’est donc pas identifiable par la commande Maj-Auto.
Côté packaging, on peut aisément déclarer une dépendance entre *-pkg, *-apps sur envole-dependances-apps mais ça n’empêche pas, en l’état, la mise à jour des eole-* correspondants amenant à une incohérence potentielle.
Par contre, on peut assez facilement associer les couples de paquets eole-* et *-apps, *-pkg dans le code de Maj-Auto.
La proposition présentée dans le patch joint consiste donc à évaluer la dépendance entre les paquets eole-* et les paquets *-apps, *-pkg pour bloquer la mise à jour des paquets eole-* si les paquets correspondants *-apps, *-pkg ont eux-même leur mise à jour bloquée (attribut marked_keep). Ce blocage de la mise à jour des paquets *-apps, *-pkg est gérable avec les techniques classiques de packaging.
Par exemple, en prenant le cas de l’application grr dans le cas du passage à php-fpm :
- la déclaration du dépôt sera faite avec
eole-server >> 2.9.0-85; - la mise à jour de
envole-dependances-apps >> 1.0+3-11est bloquée tant que le nouveau dépôt n’est pas configuré ; - en mettant
envole-dependances-apps (>> 1.0+3-11)en dépendances degrr-apps, on bloque la mise à jour de ce dernier dans les mêmes conditions => ce paquet prend l’attributmarked_keep True; - au moment de faire la liste des paquets à mettre à jour, on peut vérifier que
eole-grrest "associé" àgrr-appset, ce dernier ayantmarked_keep True, prendre la décision d’exclureeole-grrde la mise à jour.
Par ce biais, on peut avoir une cohérence entre la configuration apportée sur l’hôte et les paquets des conteneurs.
J’ai abordé le problème par le biais des noms de paquets (eole-*, *-apps|pkg) plutôt que par le contenu des dictionnaires pour la raison que les problèmes de cohérence affectent seulement les paquets issus du même dépôt, a priori. La classe Package utilisée pour accéder aux informations des paquets ne semble pas permettre d’accéder à l’origine du paquet, c’est pourquoi le nom est proposé comme critère d’association (la convention de nommage est bien suivie dans les projets EOLE et Envole).
On pourrait compléter avec le contrôle strict de la version de ces paquets (vérifier que ces paquets associés ont la même version).
Demandes liées
Historique
#1 Mis à jour par Benjamin Bohard il y a 7 mois
- Description mis à jour (diff)
#2 Mis à jour par Benjamin Bohard il y a 7 mois
Plutôt que de compter sur une association basée sur les noms des paquets, quoique le risque d’erreur semble faible, il serait possible de déclarer une liste de paquets.
Une telle liste pourrait éventuellement être pré-construite en examinant le contenu des dictionnaires et maintenue dans un paquet commun aux modules.
#3 Mis à jour par Daniel Dehennin il y a 7 mois
- Description mis à jour (diff)
#4 Mis à jour par Laurent Gourvenec il y a 7 mois
- Lié à Scénario #36855: Installation des paquets PHP7 pour Envole 9 & 10 ajouté
#5 Mis à jour par Laurent Gourvenec il y a 7 mois
Une autre solution serait de copier les paquets PHP dans le dépôt envole.
#6 Mis à jour par Benjamin Bohard il y a 5 mois
- Statut changé de Nouveau à Fermé
Les paquets PHP sont intégrés dans le dépôt envole.