Le script .preinst du package échoue pour une raison quelconque.
Pour savoir pourquoi, examinez le script dans /var/lib/dpkg/info/PACKAGENAME.preinst
Si vous voulez voir exactement sur quelle ligne le script échoue, modifiez le script .preinst et ajoutez-le set -x
immédiatement après la #!
ligne. Cela active le suivi d'exécution dans le script.
REMARQUE: cela suppose que le script .preinst est un script shell (posix sh ou bash). Presque tous les scripts .preinst (et .postinst, .prerm et .postrm) sont des scripts shell mais ils ne doivent pas l'être, ils peuvent être n'importe quel exécutable. Par exemple, sur ma machine de bureau principale avec 9104 packages installés, 14 sont des scripts perl, 1 est un exécutable compilé (prehst de bash - il ne peut pas supposer qu'un shell fonctionnel est déjà installé), et tous les autres sont des scripts shell ... 9041 sont des scripts shell POSIX, 63 sont des scripts bash. Si le .preinst est perl ou python ou autre chose, vous devrez comprendre comment activer le mode de débogage ou de trace d'exécution ou similaire dans ce langage.
Ensuite, courez dpkg --configure --pending
.
Cela amènera dpkg à essayer de configurer le package semi-installé. NE le réinstallez PAS avec dpkg -i
, cela remplacera votre script .preinst modifié par la version du package .deb.
Cela peut vous donner suffisamment d'informations pour résoudre le problème. Cela peut être quelque chose de simple comme un code de sortie inattendu ou non capturé d'un programme (la plupart des scripts .preinst etc ont set -e
, pour les faire se terminer sur la première erreur), ou en supposant qu'un répertoire existe déjà (et cela peut être dû à une dépendance non déclarée dans le fichier debian / control du paquet - c'est-à-dire qu'il devrait dépendre de foo mais ne le fait pas. installez simplement foo de toute façon)
Une fois qu'il est résolu, exécutez à dpkg --configure --pending
nouveau et le package doit être correctement installé.
Si le script .preinst est bogué, il y a une chance raisonnable que les scripts .postinst (et / ou .prerm et .postrm) le soient aussi. Vous devrez peut-être également les corriger.
N'oubliez pas de soumettre un rapport de bogue à la personne qui a créé le package afin qu'il puisse le corriger.