Paquet debian - un update dans le postinst

Bonjour,

je cherche à mettre à jour les dépôts d’une machine via un paquet (pour ajouter un nouveau repository)
et évidemment, mon paquet se bloque lui-même, je ne peux faire un “apt-get update” durant le postinst, le système dpkg étant ‘locké’.

j’ai pensé à un délock manuel (ça paraît sacrément moche), toujours est-il que je ne vois pas de solution.

quelqu’un a une idée ?

Installation d’un script qui tourne en tache de fond et attend que le verrou soit parti pour lancer l’update…

excellent !
je n’y avais pas songé, certes, mais ça va pas le faire, mon paquet a besoin de dépendances de ce nouveau repository !

j’explique un peu plus:
monPaquet a besoin de dépendancesX dispo sur un repository spécifique
mon idée était de faire un PrePaquet, qui installe le dependancesX.list
ce PrePaquet serait en Pre-Depends de monPaquet
mais monPaquet a besoin de dépendancesX… d’où l’idée de faire un update dans le postinst de PrePaquet…

une autre idée ?

Que je comprenne bien, tu as
monpaquet qui a besoin de X
X est sur depot
depot est mis dans le sources.list de prepaquet

Si tu installes monpaquet, il en connait pas encore le dépot et X sera inaccessible… et l’installation sera refusé. Je te suggère d’installer

monpaquet et prepaquet avec un paquet X 'version 0, un «duimmy» paquet), avec un postinst de prepaquet qui attend que le verrou soit levé (en clair que l’installation soit fini) pour lancé un apt-get update et apt-get install X qui mettra à jour le paquet X et remplacera le paquet dummy par les bons paquets.

tu as tout à fait raison, ça marche comme ça, mais c’est de la bidouille…
j’aurai voulu une manière propre, à la debian !!

vu qu’on est dans le lock, ya sûrement moyen d’invoqué l’update (même forcé) en interne…

merci beaucoup pour tes idées en tout cas

Pas sur que ça se passe bien si tu enlèves le lock, je ne crois pas qu’apt soit réentrant sur ce coup là…

réentrant ?

je crois que finalement on va faire du mirroring de paquets sur les repositories locaux, point
mais si je trouve la soluce, je viendrai fièrement la proclamer ici bas.

toujours ouvert aux propositions :slightly_smiling:

Réentrant: apt-get qui appelle apt-get. Une fonction réentrante est une fonction qui peut s’appeler elle même… Idem pour un programme.

Une fonction ou un programme utilisant des variables globales en lecture/ecriture n’est en générale pas réentrante.