Could not calculate the upgrade
Voilà un message bien embêtant que vous êtes susceptibles de croiser lors d’une tentative de mise à niveau de votre système basé sur Ubuntu. C’est en tout cas ce qui m’est arrivé lorsque je me suis enfin décidé à faire passer un de mes systèmes de Ubuntu 16.04 (oui, je l’avoue) à Ubuntu 18.04.
Causes
À quoi peut être dû un tel message? Les causes sont assez variées, mais bien souvent, cela provient du fait que le système, dans son étact actuel, n’est pas pleinement prêt à faire le grand saut. Ce sera très souvent en raison d’un ou plusieurs paquets de la distribution qui ne sont pas ou plus supportés dans la version mise à niveau.
L’outil de migration ne sait pas comment les gérer. Il devient donc incapable d’évaluer ce que coutera la migration en terme de paquets, d’espace disque et de temps. Et cela interrompt tout le processus.
Solutions
Plusieurs petites étapes simples pourront vous aider à vous sortir de cette situation
1. Sauvegarder les données essentielles
Si vous êtes tombé sur cette erreur, c’est probablement parce que vous aviez enclecnhé le processus de mise à niveau. Vous devriez donc déjà avoir pris vos précautions. Mais juste au cas où cela n’a pas été fait, saisissez-vous de cette occasion pour vous rattraper. Les mises à niveau sous Linux sont très stables, mais on n’est jamais à l’abri d’une situation parallèle.
2. Mettre à jour le système
Oui, vous allez mettre à niveau votre système. Mais auparavant, laissez votre maison en ordre et assurez-vous qu’il est pleinement à jour par rapport à la version que vous êtes sur le point de quitter.
Sur Ubuntu et ses dérivés, il vous suffira d’exécuter les commandes suivantes dans un terminal
sudo apt update
sudo apt upgrade
sudo apt autoremove
3. Identifier les paquets problématiques
Ce genre d’erreurs est souvent causé par des paquets (ou des dépôts) qui ne sont pas ou plus disponibles/conformes. En identifiant ce qui cause l’interruption de la mise à niveau, on peut trouver des solutions efficaces.
Pour y parvenir, il faudra donc examiner les journaux géénérés par le processus de mise à niveau. Ces journaux, sur Ubuntu, se trouvent dans le dossier /var/log/dist-upgrade. Il faudra y regarder les fichiers apt.log at main.log.
Ces fichiers peuvent être pénibles à lire, surtout si
- vous n’avez pas mis votre système à niveau depuis de nombreuses itérations
- vous avez de nombreuses applications installées, certaines provenant de sources non officielles
- vous ne savez pas où regarder ni quoi rechercher.
Ce que vous allez rechercher dans ces fichiers ce sont toutes les lignes qui indiquent une anomalie ou une erreur, car ce sont probablement ces lignes qui vous indiqueront où ça coince. À cet égard, voici un petit script qui vous permettra d’isoler rapidement les éventuels paquets dont les dépendances sont brisées ou non conformes.
grep Broken /var/log/dist-upgrade/apt.log > LaListeDeInstalleur.txt
Ce que fait cette commande, c’est d’isoler les lignes du journal qui comportent le terme Broken. Ce terme indique les paquets qui, pour diverses raisons ont du mal à faire partie du nouveau monde. La liste de tous ces paquets sera clairement inscrite dans le fichier fourni en argument (LaListeDeInstalleur.txt dans notre exemple).
4. Faire le ménage
En ouvrant le fichier comportant la liste des paquets problématiques, vous pourriez y retrouver moins d’une dizaine de fichiers, ou plusieurs centaines, suivant l’utilisation que vous faites de votre système.
La prochaine étape va consister à examiner cette liste, afin de supprimer de votre système les moins utiles. À ce stade, nous vous recommandons de commencer par supprimer les fichiers dont vous ne vous servez pas ou plus. La commande à utiliser à cet effet sera :
sudo apt remove [NomDuPaquetASupprimer]
Si vous avez plusieurs centaines de fichiers problématiques, ce processus risque être un peu long. Mais heureusement, vous n’êtes pas toujours obligé de supprimer l’intégralité de ces fichiers. En raison du jeu des dépendances, il arrive que seuls quelques fichiers soient la cause principale du blocage généralisé. Nous vous recommendons donc de commencer par supprimer les paquets les moins utiles, puis, de temps en temps, d’essayer de relancer la mise à niveau.
5. Relancer la mise à niveau
Après avoir éliminé suffisamment de fichiers, vous pourrez relancer le processus de mise à niveau. Cette opération peut être déclenchée depuis le terminal. Elle peut être expérimentée soit dans le terminal, ou soit depuis une interface graphique
depuis le terminal uniquement :
sudo do-release-upgrade
avec une interface graphique :
sudo do-release-upgrade -f DistUpgradeViewGtk3
Lorsque le calcul de la mise à niveau est effectué, il ne vous reste qu’à suivre attentivement les étapes proposées par l’outil.
Soka!