OVH Cloud OVH Cloud

pkgsrc - mise à jour des paquetages

3 réponses
Avatar
Cyrille Szymanski
Bonjour,

quelques questions de néophyte :

maintenant que les paquetages netbsd ont plus ou moins un numéro de
version à trois chiffres, ne serait-il pas envisageable de simplifier
la procédure d'upgrade ? Si A dépend de B et que B passe de la version
1.1.1 à 1.1.2 par exemple, je pense qu'il ne sera jamais nécessaire de
recompiler A car l'ABI de B n'est pas modifiée.

Une question plus générale : comment peut-on faire pour détecter une
mise à jour qui va faire passer une bibliothèque partagée à une
version majeure supérieure (par exemple libchose.so.2 à libchose.so.3)
ce qui rend obligatoire la recompilation de tous les paquetages
dépendants, du cas où la bibliothèque reste en place ? Peut-on
automatiser ces opérations ?

Et dans le cas où A dépend de B et B dépend de C, si C doit être mis à
jour, est il obligatoire de recompiler A ? Visiblement c'est souvent
le cas, mais pourquoi ?


Merci
--
cns

3 réponses

Avatar
Manuel Bouyer
Cyrille Szymanski wrote:
Bonjour,

quelques questions de néophyte :

maintenant que les paquetages netbsd ont plus ou moins un numéro de
version à trois chiffres, ne serait-il pas envisageable de simplifier


C'est pas le cas de tout les packages. En fait ca depend, le numero de
version du package est celui d'origine, donc ca depend comment l'auteur
a goupille son truc.

la procédure d'upgrade ? Si A dépend de B et que B passe de la version
1.1.1 à 1.1.2 par exemple, je pense qu'il ne sera jamais nécessaire de
recompiler A car l'ABI de B n'est pas modifiée.


Ca depend si l'auteur do soft fait les trucs proprement ou pas.
C'est aussi pour ca que les dependances ne sont pas strictes, mais sont
des >=.


Une question plus générale : comment peut-on faire pour détecter une
mise à jour qui va faire passer une bibliothèque partagée à une
version majeure supérieure (par exemple libchose.so.2 à libchose.so.3)
ce qui rend obligatoire la recompilation de tous les paquetages
dépendants, du cas où la bibliothèque reste en place ? Peut-on


Heu ... regarder dans PLIST ?

automatiser ces opérations ?


make update doit faire ce qu'il faut.

Et dans le cas où A dépend de B et B dépend de C, si C doit être mis à
jour, est il obligatoire de recompiler A ? Visiblement c'est souvent
le cas, mais pourquoi ?


Parce que souvent, dans le cas des librairies, il y a des includes de C
utilises (directement ou indirectement) dans A

--
Manuel Bouyer
NetBSD: 26 ans d'experience feront toujours la difference
--

Avatar
Cyrille Szymanski
Le 04-10-2004, Manuel Bouyer a écrit :

make update doit faire ce qu'il faut.


make update est bien barbare je trouve. Pour une machine qui n'a que
quelques packages c'est bon, sur ma machine de bureau qui en compte
200 ça fait déjà beaucoup plus mal. Surtout si on s'y prend mal.

De plus, que ce soit make update ou make replace, ça me supprime les
anciennes bibliothèques partagées. Tel que je vois les choses, si
l'ancienne es replacée in situ par une nouvelle il y a des chances
pour que les packages qui en dépendent fonctionnent encore. Si une
nouvelle version est installée pourquoi ne pas la laisser ? Les
anciens packages l'utiliseront et les nouveaux seront liés à la
nouvelle version, non ?

--
cns

Avatar
Manuel Bouyer
Cyrille Szymanski wrote:
De plus, que ce soit make update ou make replace, ça me supprime les
anciennes bibliothèques partagées. Tel que je vois les choses, si
l'ancienne es replacée in situ par une nouvelle il y a des chances
pour que les packages qui en dépendent fonctionnent encore. Si une
nouvelle version est installée pourquoi ne pas la laisser ? Les
anciens packages l'utiliseront et les nouveaux seront liés à la
nouvelle version, non ?


Oui, mais il faut que quelque chose se rapelle qu'elle est encore la,
et il n'y a pas l'infrastructure dans les pkg_* pour ca.
Les pkg_view devraient resoudre ca de maniere plus generique.

--
Manuel Bouyer
NetBSD: 26 ans d'experience feront toujours la difference
--