Bug dans dpkg ? [was Probleme avec dpkg-divert]
Bonjour Merci déjà d'avoir pris le temps de me lire. Je crois être tombé sur un vrai bug et en avoir trouvé les contours. Je m'étais posé la question du .orig et j'avais remplacé par un .real pour éviter les effets de bords. Pour éviter tous les problèmes j'ai refait des tests sur serveur propre sans aucune diversion. Ce qui différencie mon cas de la plupart des paquets qui font une diversion est sans doute le point suivant : je fais une mise à jour d'une version sans diversion vers une version avec En clair A contient de fichier f, A est installé et configuré B version n n'a pas de diversion B version n+1 fait une diversion sur f dans le preinst Si B n'est pas déjà installé en version n, l'install en version n+1 marche bien Mais si B est installé en version n et qu'on fait une mise à jour en n+1, il y a une erreur. Peut être que comme c'est une mise à jour, il pense qu'il y a une ancienne version de la diversion d'installée ? En tout cas, il fait une différence entre install et mise à jour Il faudrait que je fabrique un test case minimal pour remonter le bug J'ai contourné en mettant la diversion dans le postinst. Je fais ensuite une copie du fichier que j'ai installé ailleurs. C'est pas bien (ça ne respecte pas le DRY) mais ça marche :) Bonne journée Laurent Le 04/03/2015 03:01, Raphael Hertzog a écrit : > Salut, > > je n'ai pas de réponse pour toi mais j'ai noté une incohérence > qui te mettra peut-être sur la voie: > > On Tue, 03 Mar 2015, Laurent COOPER wrote: >> if [ upgrade != "$1" ] || dpkg --compare-versions "$2" lt 4.2.2; then >>dpkg-divert --package slis-admin --add --rename \ >>--divert /usr/share/phpsysinfo/index.php.orig >> /usr/share/phpsysinfo/index.php >> fi > > => .orig en extension > > On Tue, 03 Mar 2015, Laurent COOPER wrote: >> Je viens de découvrir l'option de debug de dpkg (-D) et j'ai utilisé >> -D1110 avec mon installation. Ce que j'ai trouvé semble explicite mais >> je n'arrive pas trop à l'interpréter. Les experts en dpkg pourront peut >> être aider ? >> >> D10: tarobject ti->name='./usr/share/phpsysinfo/index.php' >> mode=100644 owner=0.0 type=48(-) ti->linkname='' >> namenode='/usr/share/phpsysinfo/index.php' flags=2 >> instead='/usr/share/phpsysinfo/index.php.real' > > => .real en extension > > N'y a t'il pas une ancienne version de ta diversion qui pose problème? > >> Préparation du remplacement de slis-admin 4.2.0~1 (en utilisant >> .../slis-admin_4.2.3_all.deb) ... >> Conservation de « détournement de /usr/share/phpsysinfo/index.php >> en /usr/share/phpsysinfo/index.php.orig par slis-admin » >> Dépaquetage de la mise à jour de slis-admin ... >> dpkg : erreur de traitement de >> /var/cache/apt/archives/slis-admin_4.2.3_all.deb (--unpack) : >> impossible d'ouvrir « /usr/share/phpsysinfo/index.php.dpkg-new »: Aucun >> fichier ou dossier de ce type >> configured to not write apport reports >> Traitement des actions différées >> (« triggers ») pour « man-db »... >> Des erreurs ont été rencontrées pendant l'exécution : >> /var/cache/apt/archives/slis-admin_4.2.3_all.deb >> >> Pourquoi me cherche t'il un dpkg-new ??? > > Quand dpkg décompacte un paquet, chaque fichier du paquet est décompacté > en .dpkg-new. Une fois cela terminé, dpkg renomme tous ces fichiers > pour leur enlever le suffixe et écrase les anciennes versions par la même > occasion. Ici visiblement le .dpkg-new qu'il attendait n'est pas là... > > En général le problème c'est que le fichier est traité deux fois, par le > biais de deux répertoires (différents) contenus dans le paquet .deb mais > qui en réalité sont le même répertoire sur ton système à cause d'un lien > symbolique quelque part. (cf mon article que tu as trouvé) > > A+ > -- To UNSUBSCRIBE, email to debian-devel-french-requ...@lists.debian.org with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org Archive: https://lists.debian.org/54f9a83b.3010...@ac-grenoble.fr
Re: Probleme avec dpkg-divert
Salut, je n'ai pas de réponse pour toi mais j'ai noté une incohérence qui te mettra peut-être sur la voie: On Tue, 03 Mar 2015, Laurent COOPER wrote: > if [ upgrade != "$1" ] || dpkg --compare-versions "$2" lt 4.2.2; then >dpkg-divert --package slis-admin --add --rename \ >--divert /usr/share/phpsysinfo/index.php.orig > /usr/share/phpsysinfo/index.php > fi => .orig en extension On Tue, 03 Mar 2015, Laurent COOPER wrote: > Je viens de découvrir l'option de debug de dpkg (-D) et j'ai utilisé > -D1110 avec mon installation. Ce que j'ai trouvé semble explicite mais > je n'arrive pas trop à l'interpréter. Les experts en dpkg pourront peut > être aider ? > > D10: tarobject ti->name='./usr/share/phpsysinfo/index.php' > mode=100644 owner=0.0 type=48(-) ti->linkname='' > namenode='/usr/share/phpsysinfo/index.php' flags=2 > instead='/usr/share/phpsysinfo/index.php.real' => .real en extension N'y a t'il pas une ancienne version de ta diversion qui pose problème? > Préparation du remplacement de slis-admin 4.2.0~1 (en utilisant > .../slis-admin_4.2.3_all.deb) ... > Conservation de « détournement de /usr/share/phpsysinfo/index.php > en /usr/share/phpsysinfo/index.php.orig par slis-admin » > Dépaquetage de la mise à jour de slis-admin ... > dpkg : erreur de traitement de > /var/cache/apt/archives/slis-admin_4.2.3_all.deb (--unpack) : > impossible d'ouvrir « /usr/share/phpsysinfo/index.php.dpkg-new »: Aucun > fichier ou dossier de ce type > configured to not write apport reports > Traitement des actions différées > (« triggers ») pour « man-db »... > Des erreurs ont été rencontrées pendant l'exécution : > /var/cache/apt/archives/slis-admin_4.2.3_all.deb > > Pourquoi me cherche t'il un dpkg-new ??? Quand dpkg décompacte un paquet, chaque fichier du paquet est décompacté en .dpkg-new. Une fois cela terminé, dpkg renomme tous ces fichiers pour leur enlever le suffixe et écrase les anciennes versions par la même occasion. Ici visiblement le .dpkg-new qu'il attendait n'est pas là... En général le problème c'est que le fichier est traité deux fois, par le biais de deux répertoires (différents) contenus dans le paquet .deb mais qui en réalité sont le même répertoire sur ton système à cause d'un lien symbolique quelque part. (cf mon article que tu as trouvé) A+ -- Raphaël Hertzog ◈ Debian Developer Support Debian LTS: http://www.freexian.com/services/debian-lts.html Learn to master Debian: http://debian-handbook.info/get/ -- To UNSUBSCRIBE, email to debian-devel-french-requ...@lists.debian.org with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org Archive: https://lists.debian.org/20150304020101.gg22...@home.ouaza.com
Re: Probleme avec dpkg-divert
Je viens de découvrir l'option de debug de dpkg (-D) et j'ai utilisé -D1110 avec mon installation. Ce que j'ai trouvé semble explicite mais je n'arrive pas trop à l'interpréter. Les experts en dpkg pourront peut être aider ? D10: tarobject ti->name='./usr/share/phpsysinfo/index.php' mode=100644 owner=0.0 type=48(-) ti->linkname='' namenode='/usr/share/phpsysinfo/index.php' flags=2 instead='/usr/share/phpsysinfo/index.php.real' D10: namenodetouse namenode=`/usr/share/phpsysinfo/index.php' pkg=slis-admin D10: namenodetouse ... useinstead=/usr/share/phpsysinfo/index.php.real camefrom= pkg=slis-admin return /usr/share/phpsysinfo/index.php D000100: setupvnamevbs main=`/usr/share/phpsysinfo/index.php' tmp=`/usr/share/phpsysinfo/index.php.dpkg-tmp' new=`/usr/share/phpsysinfo/index.php.dpkg-new' D000100: tarobject nonexistent D10: tarobject ... found in phpsysinfo D10: tarobject ... diverted, divpkg=slis-admin D10: ensure_pathname_nonexisting `/usr/share/phpsysinfo/index.php.dpkg-new' D10: ensure_pathname_nonexisting `/usr/share/phpsysinfo/index.php.dpkg-tmp' D000100: tarobject file open size=12342 D000100: tarobject new - no backup D000100: tarobject done and installation deferred et un peu plus loin D10: namenodetouse namenode=`/usr/share/phpsysinfo/index.php' pkg=slis-admin D10: namenodetouse ... useinstead=/usr/share/phpsysinfo/index.php.real camefrom= pkg=slis-admin return /usr/share/phpsysinfo/index.php D000100: setupvnamevbs main=`/usr/share/phpsysinfo/index.php' tmp=`/usr/share/phpsysinfo/index.php.dpkg-tmp' new=`/usr/share/phpsysinfo/index.php.dpkg-new' puis D10: deferred extract of '/usr/share/interfacedu/www/index.php' D000100: setupvnamevbs main=`/usr/share/interfacedu/www/index.php' tmp=`/usr/share/interfacedu/www/index.php.dpkg-tmp' new=`/usr/share/interfacedu/www/index.php.dpkg-new' et enfin D10: deferred extract of '/usr/share/phpsysinfo/index.php' D10: namenodetouse namenode=`/usr/share/phpsysinfo/index.php' pkg=slis-admin D10: namenodetouse ... useinstead=/usr/share/phpsysinfo/index.php.real camefrom= pkg=slis-admin return /usr/share/phpsysinfo/index.php D000100: setupvnamevbs main=`/usr/share/phpsysinfo/index.php' tmp=`/usr/share/phpsysinfo/index.php.dpkg-tmp' new=`/usr/share/phpsysinfo/index.php.dpkg-new' D000100: deferred extract needs fsync dpkg : erreur de traitement de /tmp/slis-admin_4.2.3_all.deb (--install) : impossible d'ouvrir « /usr/share/phpsysinfo/index.php.dpkg-new »: Aucun fichier ou dossier de ce type mais j'avoue, là, j'ai un peu du mal :( Le 03/03/2015 20:56, Laurent COOPER a écrit : > Le 03/03/2015 17:40, Laurent COOPER a écrit : >> Bonjour à tous >> >> J'ai un gros problème avec dpkg-divert >> >> J'ai un paquet que j'ai créé qui va "wrapper" phpsysinfo. J'ai suivi la >> doc et dans le preinst du paquet j'ai >> >> >> #! /bin/sh >> set -e >> if [ upgrade != "$1" ] || dpkg --compare-versions "$2" lt 4.2.2; then >>dpkg-divert --package slis-admin --add --rename \ >>--divert /usr/share/phpsysinfo/index.php.orig >> /usr/share/phpsysinfo/index.php >> fi >> >> dans le paquet, j'ai bien un /usr/share/phpsysinfo/index.php dans les >> fichiers du paquet (vérifié avec dpkg -c) >> >> mais lorsque je tente d'installer le paquet, ça ne marche pas >> >> Préparation du remplacement de slis-admin 4.2.0~1 (en utilisant >> .../slis-admin_4.2.3_all.deb) ... >> Conservation de « détournement de /usr/share/phpsysinfo/index.php >> en /usr/share/phpsysinfo/index.php.orig par slis-admin » >> Dépaquetage de la mise à jour de slis-admin ... >> dpkg : erreur de traitement de >> /var/cache/apt/archives/slis-admin_4.2.3_all.deb (--unpack) : >> impossible d'ouvrir « /usr/share/phpsysinfo/index.php.dpkg-new »: Aucun >> fichier ou dossier de ce type >> configured to not write apport reports >> Traitement des actions différées >> (« triggers ») pour « man-db »... >> Des erreurs ont été rencontrées pendant l'exécution : >> /var/cache/apt/archives/slis-admin_4.2.3_all.deb >> >> Pourquoi me cherche t'il un dpkg-new ??? >> >> Du coup, impossible d'installer le paquet même avec un dpkg -i >> --force-all >> >> Qu'ai je mal fait ? La documentation est elle erronnée sur un point ou >> l'ais je mal interprétée ? >> >> D'avance merci pour votre aide >> >> Cordialement >> >> Laurent >> > J'ai bien trouvé l'article de Raphaël Herzog qui aborde cette erreur : > > http://raphaelhertzog.com/2011/07/18/deciphering-one-of-dpkg-weirdest-errors-unable-to-open-pathtofoo-dpkg-new/ > > Mais je ne comprends pas le lien avec la diversion. Non ? > > L. -- To UNSUBSCRIBE, email to debian-devel-french-requ...@lists.debian.org with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org Archive: https://lists.debian.org/54f6187c@ac-grenoble.fr
Re: Probleme avec dpkg-divert
Le 03/03/2015 17:40, Laurent COOPER a écrit : > Bonjour à tous > > J'ai un gros problème avec dpkg-divert > > J'ai un paquet que j'ai créé qui va "wrapper" phpsysinfo. J'ai suivi la > doc et dans le preinst du paquet j'ai > > > #! /bin/sh > set -e > if [ upgrade != "$1" ] || dpkg --compare-versions "$2" lt 4.2.2; then >dpkg-divert --package slis-admin --add --rename \ >--divert /usr/share/phpsysinfo/index.php.orig > /usr/share/phpsysinfo/index.php > fi > > dans le paquet, j'ai bien un /usr/share/phpsysinfo/index.php dans les > fichiers du paquet (vérifié avec dpkg -c) > > mais lorsque je tente d'installer le paquet, ça ne marche pas > > Préparation du remplacement de slis-admin 4.2.0~1 (en utilisant > .../slis-admin_4.2.3_all.deb) ... > Conservation de « détournement de /usr/share/phpsysinfo/index.php > en /usr/share/phpsysinfo/index.php.orig par slis-admin » > Dépaquetage de la mise à jour de slis-admin ... > dpkg : erreur de traitement de > /var/cache/apt/archives/slis-admin_4.2.3_all.deb (--unpack) : > impossible d'ouvrir « /usr/share/phpsysinfo/index.php.dpkg-new »: Aucun > fichier ou dossier de ce type > configured to not write apport reports > Traitement des actions différées > (« triggers ») pour « man-db »... > Des erreurs ont été rencontrées pendant l'exécution : > /var/cache/apt/archives/slis-admin_4.2.3_all.deb > > Pourquoi me cherche t'il un dpkg-new ??? > > Du coup, impossible d'installer le paquet même avec un dpkg -i > --force-all > > Qu'ai je mal fait ? La documentation est elle erronnée sur un point ou > l'ais je mal interprétée ? > > D'avance merci pour votre aide > > Cordialement > > Laurent > J'ai bien trouvé l'article de Raphaël Herzog qui aborde cette erreur : http://raphaelhertzog.com/2011/07/18/deciphering-one-of-dpkg-weirdest-errors-unable-to-open-pathtofoo-dpkg-new/ Mais je ne comprends pas le lien avec la diversion. Non ? L. -- To UNSUBSCRIBE, email to debian-devel-french-requ...@lists.debian.org with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org Archive: https://lists.debian.org/54f611e1.1030...@ac-grenoble.fr
Probleme avec dpkg-divert
Bonjour à tous J'ai un gros problème avec dpkg-divert J'ai un paquet que j'ai créé qui va "wrapper" phpsysinfo. J'ai suivi la doc et dans le preinst du paquet j'ai #! /bin/sh set -e if [ upgrade != "$1" ] || dpkg --compare-versions "$2" lt 4.2.2; then dpkg-divert --package slis-admin --add --rename \ --divert /usr/share/phpsysinfo/index.php.orig /usr/share/phpsysinfo/index.php fi dans le paquet, j'ai bien un /usr/share/phpsysinfo/index.php dans les fichiers du paquet (vérifié avec dpkg -c) mais lorsque je tente d'installer le paquet, ça ne marche pas Préparation du remplacement de slis-admin 4.2.0~1 (en utilisant .../slis-admin_4.2.3_all.deb) ... Conservation de « détournement de /usr/share/phpsysinfo/index.php en /usr/share/phpsysinfo/index.php.orig par slis-admin » Dépaquetage de la mise à jour de slis-admin ... dpkg : erreur de traitement de /var/cache/apt/archives/slis-admin_4.2.3_all.deb (--unpack) : impossible d'ouvrir « /usr/share/phpsysinfo/index.php.dpkg-new »: Aucun fichier ou dossier de ce type configured to not write apport reports Traitement des actions différées (« triggers ») pour « man-db »... Des erreurs ont été rencontrées pendant l'exécution : /var/cache/apt/archives/slis-admin_4.2.3_all.deb Pourquoi me cherche t'il un dpkg-new ??? Du coup, impossible d'installer le paquet même avec un dpkg -i --force-all Qu'ai je mal fait ? La documentation est elle erronnée sur un point ou l'ais je mal interprétée ? D'avance merci pour votre aide Cordialement Laurent -- To UNSUBSCRIBE, email to debian-devel-french-requ...@lists.debian.org with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org Archive: https://lists.debian.org/54f5e406.6010...@ac-grenoble.fr