[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

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 ?
>>
>> D000010: 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+
> 


Reply to: