Passage de Debian Bullseye à Bookworm

Ayant la manip à faire sur pas mal de serveurs, et comme ce n'est pas une bonne idée d'automatiser les mises à jours majeures (chaque installation a ses particularités), ce qui suit est une recette résumant les consignes de mise à jour officielles de Debian. Et de ma précédente version à propos de Buster, c'est vieux.

  1. Réaliser un snapshot des VM (et prier sur les hyperviseurs).
  2. Lancer screen (ça va être long).
  3. Enregistrer la session.
    • script -t 2>~/upgrade-bookworm1.time -a ~/upgrade-bookworm1.script
    • 1 sera à incrémenter si on redémarre, relance le script, etc.
    • less -R ~/upgrade-bookworm1.script permet de relire tranquillement ce qui a défilé.
    • exit à la fin de la mise à jour (ou si ça redémarre, ça exit aussi !).
  4. Encore sous Bullseye, réaliser un apt update && apt upgrade : plus c'est à jour, moins on a de soucis ensuite. apt autoremove et apt clean contribueront aussi à avoir une base propre.
  5. Vérifier s'il y a des vieux fihiers de config obsolètes :
    • find /etc -name '*.dpkg-*' -o -name '*.ucf-*' -o -name '*.merge-error'
  6. Vérifier qu'il n'y a pas des sources alternatives sudo aptitude search '~i(!~ODebian)' .
  7. dpkg --audit et apt-mark showhold pour vérifier qu'il n'y a pas des paquets gelés, avec des soucis, etc.
  8. Installer gpgv (ou s'assurer qu'il existe), il est requis pour vérifier les clés signant les publications sur Bookworm :
    • sudo apt install gpgv
  9. Modifier /etc/apt/sources.list. Voir plus bas.
  10. apt update && apt upgrade --without-new-pkgs (upgrade en deux temps) : ne met à jour que le minimum.
  11. apt full-upgrade
    • S'il y a besoin de geler des paquets : apt-mark hold package_name. Mais geler des paquets risque de rajouter du bazar, donc à réserver en cas de rapport de bug vraiment inquiétant.
  12. Régler les problèmes s'il y en a, puis redémarrer la machine afin de prendre en compte le changement de noyau et le reste (et de vérifier si ça reboot, grub est parfois taquin).
  13. Vérifier que les services marchent correctement.
  14. Nettoyer les restes
    • dpkg -l | awk '/^rc/ { print $2 }' pour lister les paquets supprimés ayant laissé des fichiers de configuration
    • apt purge $(dpkg -l | awk '/^rc/ { print $2 }') pour tous les purger uniquement si la liste présente des paquets donc la config ne nous intéresse pas.
    • Chercher et purger les paquets obsolètes aptitude search '~o' && aptitude purge '~o'

Source.list. Je ne met pas les src, généralement inutiles dans notre cas d'usage.

# Debian Bookworm, dépôt principal + paquets non libres
deb http://deb.debian.org/debian/ bookworm main non-free-firmware contrib non-free

# Debian Bookworm, mises à jour de sécurité + paquets non libres
deb http://deb.debian.org/debian-security/ bookworm-security main non-free-firmware contrib non-free

# Debian Bookworm, mises à jour "volatiles" + paquets non libres
deb http://deb.debian.org/debian/ bookworm-updates main non-free-firmware contrib non-free

PHP

Partie à mettre à jour suivant les détails de php.

Attention avec php et apache, il faut activer le module de la nouvelle version de php dans apache sinon tout plante.

sudo a2enconf php7.3-cgi
sudo a2enmod php7.3
sudo service apache2 restart

Pour FPM

a2enmod proxy_fcgi setenvif
a2enconf php7.3-fpm

 Ce texte est placé sous licence CC0