Anomalie #518
ferméRenommage et réorganisation de modules
0%
Description
Il faudrait que le wiff sache gérer une information de type : provides nom_d_un_module.
Si on décide de renommer un module de l'éclater ou d'en regrouper, le nouveau module titi créé doit pouvoir indiquer qu'il fournit l'ancien module toto.
Et bien sur l'analyse de dépendances doit proposer toto lorque titi devient obsolete.
Mis à jour par Jérôme Augé il y a plus de 16 ans
Je pense que cette utilisation se rapproche plus du sens de "Obsoletes" dans RPM par exemple : Le paquet B remplace le paquet A qui n'est plus disponible.
<module name="B">
<obsolete>
<module name="A" />
</obsolete>
</module>
Pour moi, le terme "Provides" exprime plus le cas de deux paquets X et Y qui fournissent la même fonction F. Dans ce cas, il faudrait alors demander à l'utilisateur quel paquet installer (X ou Y).
En allant plus loin :
Pour le moment on ne gère pas les dépendances cassés : c'est à dire que quand je met a jour/installe un paquet, je ne vérifie pas que des modules déjà installés sont impactés par cette mise-à-jour
Mais si on doit gérer ce cas, alors il faudrait aussi implémenter le "Provides" (au sens de RPM par ex.) pour pouvoir renommer un paquet sans casser les dépendances de paquets qui ne seraient pas à jour en exprimant la nouvelle dépendance :
Soit deux paquets A et B qui nécessitent X :
A requires X
B requires X
X est renommé en Z et indique qu'il remplace X :
Z obsoletes X
Une nouvelle version de A est disponible avec la nouvelle dépendance sur Z :
A requires Z
Par contre, il n'y a pas de mise à jour de B, donc B continue de vouloir X :
B requires X
Dans ce cas, on ne peut pas faire la mise à jour car on casserait la dépendance de B sur X.
Il faut donc que Z spécifie en plus qu'il fournit toujours X :
Z obsoletes X
Z provides X
<module name="Z">
<obsoletes>
<module name="X" />
</obsoletes>
<provides>
<module name="X" />
</provides>
</module>
<module name="A">
<requires>
<module name="Z" />
</requires>
</module>
<module name="B">
<provides>
<module name="X" />
</provides>
</module>
Pour être complet, on peut s'inspirer de RPM <http://docs.fedoraproject.org/drafts/rpm-guide-en/ch-advanced-packaging.html>, qui définit les éléments "Requires", "Provides", "Obsoletes" et "Conflicts".
Mis à jour par Jérôme Augé il y a plus de 14 ans
- Statut changé de Nouveau à Fermé
C'est déjà implémenté avec <replaces /> :
<?xml version="1.0" encoding="UTF-8"?>
<module name="bar" [...]>
<replaces>
<module name="foo" />
</replaces>
[...]
</module>