Migration Debian Jessie -> Stretch failed

Tags: #<Tag:0x00007f50a1f79e70>

Bonjour,

J’ai un serveur qui tournait sur Debian stable Jessie (old stable). J’ai décidé de faire une upgrade vers Stretch cette semaine. Comme préconisé dans la documentation, j’ai mis aptitude de coté et j’ai utilisé apt-get.

J’ai mis à jour ma machine sous jessie (aptitude update && aptitude upgrade && aptitude dist-upgrade). J’ai mis à jour mon sources.list (s/jessie/stretch/) et j’ai réalisé ces commandes : apt-get update puis apt-get upgrade puis apt-get dist-upgrade. Globalement, ça a fait le taf mais j’ai des paquets sont parti grave en sucette.

Typiquement, j’ai un paquet qui ne veut rien entendre : ca-certificate.

# apt install -f
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
Les paquets suivants ont été installés automatiquement et ne sont plus nécessaires :
  [...]
Veuillez utiliser « apt autoremove » pour les supprimer.
0 mis à jour, 0 nouvellement installés, 0 à enlever et 0 non mis à jour.
1 partiellement installés ou enlevés.
Après cette opération, 0 o d'espace disque supplémentaires seront utilisés.
Paramétrage de ca-certificates (20161130+nmu1+deb9u1) ...
Updating certificates in /etc/ssl/certs...
dpkg: erreur de traitement du paquet ca-certificates (--configure) :
 le sous-processus script post-installation installé a retourné une erreur de sortie d'état 1
Des erreurs ont été rencontrées pendant l'exécution :
 ca-certificates
E: Sub-process /usr/bin/dpkg returned an error code (1)

# dpkg --audit
Les paquets suivants sont à demi configurés, probablement à cause de
problèmes survenus lors de la première configuration. Il faudrait réessayer
de les configurer en utilisant dpkg --configure <paquet> ou l'option
configure du menu de dselect :
 ca-certificates      Common CA certificates

# dpkg --configure ca-certificates
Paramétrage de ca-certificates (20161130+nmu1+deb9u1) ...
Updating certificates in /etc/ssl/certs...
dpkg: erreur de traitement du paquet ca-certificates (--configure) :
 le sous-processus script post-installation installé a retourné une erreur de sortie d'état 1
Des erreurs ont été rencontrées pendant l'exécution :
 ca-certificate

J’ai essayé le classique apt install -f et rien à faire. Idem avec apt-get install -f.

Vous avez une idée ?

Merci

A part regarder ce qui provoque l’erreur dans le script de post-installation, je ne vois pas trop.

Pour ce faire, tu peux chercher le fichier /var/lib/dpkg/info/ca-certificates.postinst
Il est assez long ce fichier, donc analyser le code peut être fastidieux, à la place tu peux ajouter set -x au début du script (mais après le shebang), et retenter un apt install -f ou toute autre opération qui doit appeler ce script.
Toute l’exécution du script sera alors très verbeuse, et tu pourras voir en direct à quel moment le script est en erreur (et vu qu’il est en set -e, à la première erreur non gérée, il sort en erreur).
Si l’opération que tu identifies comme responsable de l’erreur ne te semble pas importante (par exemple, un rm -r sur un répertoire qui n’existe pas, ça arrive), tu peux éventuellement ajouter || true juste après l’instruction en question.

C’est vraiment du bidouillage, mais ça peut aider à s’en sortir dans certaines situations.

Merci pour cette première réponse rapide !
Je cherchais à rendre l’installe plus verbeuse et cette option a fait le taf.

Voici la fin du log, je vais continuer mes recherches.

Traitement des actions différées (« triggers ») pour ca-certificates (20161130+nmu1+deb9u1) ...
+ update-ca-certificates
Updating certificates in /etc/ssl/certs...
+ exit 0
W: APT had planned for dpkg to do more than it reported back (0 vs 4).
   Affected packages: ca-certificates:amd64

Salut
Essai de reinstaller le paquet plutôt que de l’upgrader

sudo apt install --reinstall ca-certificates

J’ai déjà testé et j’ai oublié de mettre le retour ici :

Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
0 mis à jour, 0 nouvellement installés, 1 réinstallés, 0 à enlever et 0 non mis à jour.
1 partiellement installés ou enlevés.
Après cette opération, 0 o d'espace disque supplémentaires seront utilisés.
E: Internal Error, No file name for ca-certificates:amd64

Je ne trouve pas le .deb dans /var (via find /var -name "*ca-certificate*.deb").

curieux çà que dit

apt policy ca-certificates

Curieux, complètement :slight_smile:

ca-certificates:
  Installé : 20161130+nmu1+deb9u1
  Candidat : 20161130+nmu1+deb9u1
 Table de version :
 *** 20161130+nmu1+deb9u1 500
        500 http://deb.debian.org/debian stretch/main amd64 Packages
        100 /var/lib/dpkg/status

il devait y avoir une coquille dans ton écriture, je persiste

sudo apt install --reinstall ca-certificates

Je suis en root donc je n’ai pas besoin du sudo :

[13:23] <root@asuka:~> # sudo apt install --reinstall ca-certificates
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
0 mis à jour, 0 nouvellement installés, 1 réinstallés, 0 à enlever et 0 non mis à jour.
1 partiellement installés ou enlevés.
Après cette opération, 0 o d'espace disque supplémentaires seront utilisés.
E: Internal Error, No file name for ca-certificates:amd64

selon ce qu’on trouve sur internet ça peux avoir rapport avec le cache /var/cache/apt/archives/

pour vider le cache

apt clean

et recommencer

apt install --reinstall ca-certificates

Même résultat :confused:

Edit : bon…ça fait plusieurs jours que je suis en galère et j’ai essayé pas mal de trucs. J’ai réessayé un apt purge ca-certificates, puis une install, j’ai eu l’erreur de dpkg (exit 1). J’ai réalisé ensuite un dpkg --configure ca-certificates et il est passé par miracle.

et si tu télécharges le paquet

apt download ca-certificates/stretch

et que tu installes avec dpkg

dpkg -i ca-certificates_20161130+nmu1+deb9u1_all.deb

J’avais fais le test aussi. Je l’ai d’ailleurs réalisé à nouveau tout à l’heure en constatant que le .deb n’était pas dans /var. Je pense que c’est lui qui a du être purgé (cf l’édition de mon précédent poste).
Du coup, c’est à priori résolu mais j’ai du mal à comprendre.
Merci pour votre aide et votre réactivité :slight_smile:

verifie ton install
apt update

apt full-upgrade

Ça passe sans problème, sauf un dépôt tiers :

[...]
Err:9 https://packages.sury.org/php stretch Release                           
  gnutls_handshake() failed: Public key signature verification has failed.
Atteint:10 http://repo.zabbix.com/zabbix/4.0/debian stretch InRelease         
Lecture des listes de paquets... Fait                         
E: The repository 'https://packages.sury.org/php stretch Release' does not have a Release file.
N: Updating from such a repository can't be done securely, and is therefore disabled by default.
N: See apt-secure(8) manpage for repository creation and user configuration details.
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
Calcul de la mise à jour... Fait
0 mis à jour, 0 nouvellement installés, 0 à enlever et 0 non mis à jour.

Je pense que le problème n’est pas directement lié, mais je me trompe peut-être.

[Edit] Quoique… Apt update KO avec packages.sury.org (PHP 7.2)

Solution trouvée sur https://github.com/signalapp/Signal-Desktop/issues/2483
C’est le paquet libgnutls-deb0-28 qui engendre cette erreur.
Il est proposé de downgrader librtmp1 en version 2.4+20151223.gitfa8646d.1-1+b1 afin de pouvoir supprimer libgnutls-deb0-28

Mauvais timing pour ce poost, je l’enléve: il répondait au début du fil.