Setup n'a que quelques semaines, et sa gestion des dépendances est encore toute simple. Seulement, quand je donne une durée, c'est pour dire que je n'ai pas codé ça vite fait, j'ai un minimum réfléchit.
Pour le moment, j'utilise l'algorithme le plus simple qu'il puisse exister :
Quand on installe un paquet :
on obtiens sa liste de dépendances directes (format "paquet" ou "paquet=version" ou "paquet>=version", etc)
Si l'utilisateur le veut, on ajoute aux dépendances la liste des recommendations.
On a donc une simple liste de chaînes, qu'on explore.
Pour chaque chaîne :
--Si le paquet n'est pas installé:
----Parser sa chaîne, pour obtenir le nom du paquet, sa version à installer, et sa méthode d'installation (données, binaire ou source)
----Ajouter le paquet à la liste (ce qui appelle cette fonction, qui est donc récursive)
Quand l'ajout des paquets est fini, on ajoute ce paquet à la liste des paquets à installer. Ainsi, les dépendances sont installées avant ce paquet, ce qui est logique
C'est tout simple, et ça marche pour la majorité des paquets. Je n'ai pas cité la dedans l'élimination des dépendances.
Une fois la liste des paquets à installer/supprimer construite, elle est affichée à l'utilisateur, qui peut la valider ou pas (dans la version graphique, il pourra peut-être la modifier).
Ensuite, la liste est procédée : les paquets sont installés dans l'ordre, donc d'abord les dépendances, puis les paquets sélectionnés.
[^] # Re: dépendance
Posté par steckdenis . En réponse au journal Aider au développement d'un nouveau gestionnaire de paquets. Évalué à 2.
Pour le moment, j'utilise l'algorithme le plus simple qu'il puisse exister :
Quand on installe un paquet :
on obtiens sa liste de dépendances directes (format "paquet" ou "paquet=version" ou "paquet>=version", etc)
Si l'utilisateur le veut, on ajoute aux dépendances la liste des recommendations.
On a donc une simple liste de chaînes, qu'on explore.
Pour chaque chaîne :
--Si le paquet n'est pas installé:
----Parser sa chaîne, pour obtenir le nom du paquet, sa version à installer, et sa méthode d'installation (données, binaire ou source)
----Ajouter le paquet à la liste (ce qui appelle cette fonction, qui est donc récursive)
Quand l'ajout des paquets est fini, on ajoute ce paquet à la liste des paquets à installer. Ainsi, les dépendances sont installées avant ce paquet, ce qui est logique
C'est tout simple, et ça marche pour la majorité des paquets. Je n'ai pas cité la dedans l'élimination des dépendances.
Une fois la liste des paquets à installer/supprimer construite, elle est affichée à l'utilisateur, qui peut la valider ou pas (dans la version graphique, il pourra peut-être la modifier).
Ensuite, la liste est procédée : les paquets sont installés dans l'ordre, donc d'abord les dépendances, puis les paquets sélectionnés.
Si vous avez des conseils, ne vous privez pas.