Bug dans dpkg ? [was Probleme avec dpkg-divert]

2015-03-06 Par sujet Laurent COOPER
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

2015-03-03 Par sujet Raphael Hertzog
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

2015-03-03 Par sujet Laurent COOPER
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

2015-03-03 Par sujet Laurent COOPER
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

2015-03-03 Par sujet Laurent COOPER
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