La migration vers bullseye échoue

Mon serveur YunoHost

Matériel: VPS acheté en ligne
Version de YunoHost: 4.4.2.14
J’ai accès à mon serveur : En SSH, Par la webadmin
Êtes-vous dans un contexte particulier ou avez-vous effectué des modificiations particulières sur votre instance ? : non
Si oui, expliquer:

Description du problème

J’avais déjà un problème il y a un mois pour migrer mon instance (cf. Migration vers Yunohost 11 échoue (mise à jour vers Bullseye)) mais j’ai fini par laisser couler, tout en continuant les mise à jour.

J’ai réessayer aujourd’hui de lancer la migration par la webadmin. La première fois, ça échoue sur l’installation de mariadb (comme l’autre fois), et la seconde fois, j’ai eu une erreur nouvelle :

La migration 0021_migrate_to_bullseye a échoué avec l'exception Vous ne pouvez pas faire ça maintenant car dpkg/apt (le gestionnaire de paquets du système) semble avoir laissé des choses non configurées. Vous pouvez essayer de résoudre ce problème en vous connectant via SSH et en exécutant `sudo apt install --fix-broken` et/ou `sudo dpkg --configure -a'. : annulation

Logs complets : https://paste.yunohost.org/raw/wusudujiva

J’ai lancé alternativement les deux commandes proposées via SSH, sans aucun résultat apparent. J’ai alors relancé la migration depuis la webadmin avec exactement le même résultat (une première fois, échec mariadb, une seconde fois, échec “vous ne pouvez pas faire ça maintenant”)

Du coup regardons la sortie de : sudo dpkg --audit

Merci @Aleks pour ta célérité !

La sortie de dpkg --audit :slight_smile:

Les paquets qui suivent ne possèdent pas de fichier de contrôle de liste dans
la base de données et doivent être réinstallés :
 build-essential      Informational list of build-essential packages

Les paquets qui suivent ne possèdent pas de fichier de somme de contrôle MD5 dans
la base de données et doivent être réinstallés :
 build-essential      Informational list of build-essential packages

Du coup, j’ai suivi le conseil :

$ sudo apt install build-essential
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
Certains paquets ne peuvent être installés. Ceci peut signifier
que vous avez demandé l'impossible, ou bien, si vous utilisez
la distribution unstable, que certains paquets n'ont pas encore
été créés ou ne sont pas sortis d'Incoming.
L'information suivante devrait vous aider à résoudre la situation : 

Les paquets suivants contiennent des dépendances non satisfaites :
 build-essential : Dépend: gcc (>= 4:10.2) mais 4:8.3.0-1 devra être installé
                   Dépend: g++ (>= 4:10.2) mais 4:8.3.0-1 devra être installé
E: Impossible de corriger les problèmes, des paquets défectueux sont en mode « garder en l'état ».

Du coup, j’ai eu un doute et j’ai vérifier tous mes sources.list : tous dépendent de bullseye, et non d’une version supérieure.

Dans ce cas tentons:

apt remove build-essential --dry-run
$ sudo apt remove build-essential --dry-run
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 :
  g++ g++-8 libc-client2007e libgpgme11 libstdc++-8-dev mlock php7.3-bcmath php7.3-bz2 php7.3-gmp php7.3-imap samba-common
Veuillez utiliser « sudo apt autoremove » pour les supprimer.
Les paquets suivants seront ENLEVÉS :
  build-essential
0 mis à jour, 0 nouvellement installés, 1 à enlever et 729 non mis à jour.
Remv build-essential [12.6]

Bon, j’ai joué la commande sans le --dry-run puis j’ai relancé la migration deux fois.

Ce coup-ci, c’est plus sérieux : https://paste.yunohost.org/raw/umenirogeh

INFO - + The following packages have unmet dependencies:
INFO - +  yunohost : Depends: python3-ldap but it is not going to be installed
INFO - +             Depends: slapd but it is not going to be installed
INFO - +             Depends: mailutils but it is not going to be installed
INFO - +             Depends: equivs but it is not going to be installed
INFO - +             Recommends: unattended-upgrades but it is not going to be installed
INFO - +             Recommends: libdbd-ldap-perl but it is not going to be installed
WARNING - E: Unable to correct problems, you have held broken packages.
...
ERROR - La migration 0021_migrate_to_bullseye a échoué avec l'exception Impossible de mettre à jour tous les paquets : annulation

Finalement, je retombe sur le problème du mois dernier…

J’ai retenté la commande que tu m’avais déjà donnée :

$ DEBIAN_FRONTEND=noninteractive APT_LISTCHANGES_FRONTEND=none apt-get --fix-broken --show-upgraded --assume-yes --quiet -o=Dpkg::Use-Pty=0 -o Dpkg::Options::="--force-confold" -o Dpkg::Options::="--force-confmiss" -o Dpkg::Options::="--force-confdef" install yunohost slapd mailutils equivs python3-pip unattended-upgrades libdbd-ldap-perl --dry-run
NOTE: Ceci n'est qu'une simulation !
      apt-get a besoin des privilèges du superutilisateur
      pour pouvoir vraiment fonctionner.
      Veuillez aussi noter que le verrouillage est désactivé,
      et la situation n'est donc pas forcément représentative
      de la réalité !
Lecture des listes de paquets…
Construction de l'arbre des dépendances…
Lecture des informations d'état…
Certains paquets ne peuvent être installés. Ceci peut signifier
que vous avez demandé l'impossible, ou bien, si vous utilisez
la distribution unstable, que certains paquets n'ont pas encore
été créés ou ne sont pas sortis d'Incoming.
L'information suivante devrait vous aider à résoudre la situation : 

Les paquets suivants contiennent des dépendances non satisfaites :
 mailutils : Dépend: libmailutils7 mais ne sera pas installé
 slapd : Dépend: libperl5.32 (>= 5.32.0~rc1) mais ne sera pas installé
 ssowat : Dépend: nginx-extras (>= 1.6.2) mais ne sera pas installé
 unattended-upgrades : Dépend: python3-apt (>= 1.9.6~) mais ne sera pas installé
 yunohost : Dépend: moulinette (>= 11.0) mais 4.4.1 devra être installé
            Dépend: ssowat (>= 11.0) mais 4.4.1 devra être installé
            Dépend: python3-ldap mais ne sera pas installé
            Dépend: nginx-extras (>= 1.18) mais ne sera pas installé
            Recommande: php7.4-fpm mais ne sera pas installé
            Recommande: php7.4-intl mais ne sera pas installé
E: Erreur, pkgProblem::Resolve a généré des ruptures, ce qui a pu être causé par les paquets devant être gardés en l'état.

Toujours pareil…

Mouai ben on peut toujours tenter de descendre plus bas dans le terrier du lapin blanc:

DEBIAN_FRONTEND=noninteractive APT_LISTCHANGES_FRONTEND=none apt-get --fix-broken --show-upgraded --assume-yes --quiet -o=Dpkg::Use-Pty=0 -o Dpkg::Options::="--force-confold" -o Dpkg::Options::="--force-confmiss" -o Dpkg::Options::="--force-confdef" install yunohost slapd mailutils equivs python3-pip unattended-upgrades libdbd-ldap-perl moulinette python3-apt nginx-extras libperl5.32 libmailutils7 ssowat python3-ldap   --dry-run
Lecture des listes de paquets…
Construction de l'arbre des dépendances…
Lecture des informations d'état…
Certains paquets ne peuvent être installés. Ceci peut signifier
que vous avez demandé l'impossible, ou bien, si vous utilisez
la distribution unstable, que certains paquets n'ont pas encore
été créés ou ne sont pas sortis d'Incoming.
L'information suivante devrait vous aider à résoudre la situation : 

Les paquets suivants contiennent des dépendances non satisfaites :
 libmailutils7 : Dépend: libpython3.9 (>= 3.9.0~b4) mais ne sera pas installé
 libperl5.32 : Dépend: libc6 (>= 2.29) mais 2.28-10+deb10u1 devra être installé
               Dépend: perl-modules-5.32 (>= 5.32.1-4+deb11u2) mais ne sera pas installé
               Casse: libcompress-raw-bzip2-perl (< 2.093)
               Casse: libcompress-raw-zlib-perl (< 2.093)
               Casse: libcompress-zlib-perl (< 2.093)
               Casse: libdigest-md5-perl (< 2.55.01)
               Casse: libdigest-sha-perl (< 6.02)
               Casse: libencode-perl (< 3.06)
               Casse: libio-compress-base-perl (< 2.093)
               Casse: libio-compress-bzip2-perl (< 2.093)
               Casse: libio-compress-perl (< 2.093)
               Casse: libio-compress-zlib-perl (< 2.093)
               Casse: libstorable-perl (< 3.21)
               Casse: libsys-syslog-perl (< 0.36)
               Casse: libthreads-perl (< 2.25)
               Casse: libthreads-shared-perl (< 1.61)
               Casse: libtime-hires-perl (< 1.9764)
               Casse: libtime-piece-perl (< 1.3401)
 nginx-extras : Dépend: libnginx-mod-http-perl (= 1.18.0-6.1+deb11u2) mais ne sera pas installé
                Dépend: libnginx-mod-nchan (= 1.18.0-6.1+deb11u2) mais ne sera pas installé
 python3-apt : Dépend: python3 (>= 3.9~) mais 3.7.3-1 devra être installé
               Dépend: libapt-pkg6.0 (>= 1.9.11~) mais ne sera pas installé
               Dépend: libgcc-s1 (>= 3.0) mais ne sera pas installé
 python3-ldap : Dépend: python3 (>= 3.9~) mais 3.7.3-1 devra être installé
E: Impossible de corriger les problèmes, des paquets défectueux sont en mode « garder en l'état ».

En essayant d’installer juste python3.9, et en remontant la pelote, je suis tombé sur un os :

$ sudo apt install python3-ldap python3 python3-minimal python3.9 python3.9-minimal python3-yaml libpython3.9-stdlib libpython3-stdlib libmpdec3 libgcc-s1 gcc-10-base
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
Aucune version du paquet gcc-10-base n'est disponible, mais il existe dans la base
de données. Cela signifie en général que le paquet est manquant, qu'il est devenu obsolète
ou qu'il n'est disponible que sur une autre source

E: Le paquet « gcc-10-base » n'a pas de version susceptible d'être installée

J’ai bien un paquet gcc-10-base dans la base de donnée, mais pas accessible directement :

$ apt show gcc-10-base
Package: gcc-10-base
State: pas un véritable paquet (virtuel)
N: Impossible de choisir une version candidate du paquet « gcc-10-base » qui n'en n'a pas
N: Il y a 1 enregistrement supplémentaire. Veuillez utiliser l'opérande « -a » pour le voir
N: Aucun paquet n'a été trouvé

$ apt show -a gcc-10-base
Package: gcc-10-base
Version: 10.2.1-6
Priority: required
Section: libs
Source: gcc-10
Maintainer: Debian GCC Maintainers <debian-gcc@lists.debian.org>
Installed-Size: 267 kB
Breaks: gnat (<< 7)
Homepage: http://gcc.gnu.org/
Tag: role::shared-lib
Download-Size: 201 kB
APT-Sources: http://ftp.debian.org/debian bullseye/main amd64 Packages
Description: GCC - collection des compilateurs GNU - paquet de base
 Ce paquet contient les fichiers communs à tous les langages et
 bibliothèques inclus dans la collection de compilateurs GNU (GCC, « GNU
 Compiler Collection »).

Là, j’avoue que je n’y comprends rien…

Idem pour libc6 qui dépend de libgcc-s1 puis de gcc-10-base. Il semble que ce soit ce dernier paquet la cause de tout ce bazar.

@Aleks J’ai continué dans le bizarre. gcc-10-base étant un paquet simple (peu de fichiers et pas de dépendances), je l’ai téléchargé depuis les serveurs Debian et installé à la main.

J’ai ensuite relancé la migration, et j’ai une nouvelle erreur: https://paste.yunohost.org/raw/osiqixokep

2022-10-29 18:31:45,993: INFO - + The following packages have unmet dependencies:
2022-10-29 18:31:46,076: INFO - +  equivs : Depends: debhelper but it is not going to be installed
2022-10-29 18:31:46,095: WARNING - E: Error, pkgProblemResolver::Resolve generated breaks, this may be caused by held packages.

J’ai alors installé equivs à la main : apt-get install -f equivs puis relancé la migration : même erreur…

J’ai alors installé debhelper à la main puis relancé la migration, qui a encore échouée !

https://paste.yunohost.org/raw/naririrafa

$ sudo apt-get install -f equivs libdbd-ldap-perl

puis migration → toujours la même erreur à propos de equivs :

2022-10-29 18:45:39,622: DEBUG - Running apt command :
DEBIAN_FRONTEND=noninteractive APT_LISTCHANGES_FRONTEND=none apt-get --fix-broken --show-upgraded --assume-yes --quiet -o=Dpkg::Use-Pty=0 -o Dpkg::Options::="--force-confold" -o Dpkg::Options::="--force-confmiss" -o Dpkg::Options::="--force-confdef" dist-upgrade
2022-10-29 18:45:39,657: INFO - + Reading package lists...
2022-10-29 18:45:39,874: INFO - + Building dependency tree...
2022-10-29 18:45:39,876: INFO - + Reading state information...
2022-10-29 18:45:40,156: INFO - + Calculating upgrade...
2022-10-29 18:45:40,157: INFO - + Some packages could not be installed. This may mean that you have
2022-10-29 18:45:40,157: INFO - + requested an impossible situation or if you are using the unstable
2022-10-29 18:45:40,157: INFO - + distribution that some required packages have not yet been created
2022-10-29 18:45:40,158: INFO - + or been moved out of Incoming.
2022-10-29 18:45:40,158: INFO - + The following information may help to resolve the situation:
2022-10-29 18:45:40,159: DEBUG - 
2022-10-29 18:45:40,159: INFO - + The following packages have unmet dependencies:
2022-10-29 18:45:40,240: INFO - +  yunohost : Depends: equivs but it is not going to be installed
2022-10-29 18:45:40,255: WARNING - E: Unable to correct problems, you have held broken packages.
``̀`

Bon, j’ai fait beaucoup de manip : j’ai téléchargé puis installé à la main les paquets autotools-dev et gcc-10, ceux-ci étant inconnus de mon apt (?), puis j’ai lancé un apt-get install -f equiv debhelper libgcc-10-dev dh-autoreconf libtool libc6-dev python3 python3-psutil python3-dnspython python3-miniupnpc python3-jinja2 python3-packaging python3-ldap bind9utils yunohost

J’ai ensuite tenté de lancer la migration mais celle-ci échoue avec l’erreur suivante :

Erreur : La migration 0021_migrate_to_bullseye a échoué avec l'exception tools_upgrade() got an unexpected keyword argument 'allow_yunohost_upgrade' : annulation
Info : L'opération 'Exécuter les migrations' a échoué ! Pour obtenir de l'aide, merci de partager le journal de l'opération en utilisant la commande 'yunohost log share 20221030-153521-tools_migrations_migrate_forward'
Erreur : Exécutez ces migrations : '0021_migrate_to_bullseye', avant migration 0022_php73_to_php74_pools.
Erreur : Exécutez ces migrations : '0021_migrate_to_bullseye', avant migration 0023_postgresql_11_to_13.
Erreur : Exécutez ces migrations : '0021_migrate_to_bullseye', avant migration 0024_rebuild_python_venv.

Le journal complet est là : https://paste.yunohost.org/raw/iranehonuh

Faut-il faire le dist-upgrade manuellement ? Y a-t-il d’autres manips à faire ?

Idéalement je commencerais par executer ce script custom qui permet de faire ce que la migration bullseye faisait à la fin après l’upgrade des paquets: finish_the_bullseye_migration · GitHub

Tu peux le lancer avec

sudo su  # Pour devenir root si ce n'était pas déjà le cas
cd /root/
wget https://gist.githubusercontent.com/alexAubin/2eb588521117537c692f38a020f9b2d1/raw/ebe4f098a111caad0185e449888074571f25453e/finish_the_bullseye_migration.sh
bash finish_the_bullseye_migration.sh

Super @Aleks , ça a l’air bon.

Je me pose juste une question sur la migration 021 :

$ sudo yunohost tools migrations list
migrations: 
  0: 
    description: Mise à niveau du système vers Debian Bullseye et YunoHost 11.x
    disclaimer: None
    id: 0021_migrate_to_bullseye
    mode: manual
    name: migrate_to_bullseye
    number: 21
    state: skipped
  1: 
    description: Migration des fichiers de configuration php7.3-fpm 'pool' vers php7.4
    disclaimer: None
    id: 0022_php73_to_php74_pools
    mode: auto
    name: php73_to_php74_pools
    number: 22
    state: done
  2: 
    description: Migration des bases de données de PostgreSQL 11 vers 13
    disclaimer: None
    id: 0023_postgresql_11_to_13
    mode: auto
    name: postgresql_11_to_13
    number: 23
    state: done
  3: 
    description: Réparer l'application Python après la migration Bullseye
    disclaimer: None
    id: 0024_rebuild_python_venv
    mode: auto
    name: rebuild_python_venv
    number: 24
    state: done

Celle-ci est marquée comme skipped. Cela ne risque-t-il pas de poser problème à l’avenir, ou alors c’est bon ?

Non c’est pas un problème

Ok. Encore merci.