diff --git a/HowtoDebian/MigrationBusterBullseye.md b/HowtoDebian/MigrationBusterBullseye.md new file mode 100644 index 00000000..5415aeb9 --- /dev/null +++ b/HowtoDebian/MigrationBusterBullseye.md @@ -0,0 +1,253 @@ +--- +categories: web +title: Howto Migration Buster vers Bullseye +... + +Release Notes amd64 : + +## Debian Bullseye ? + +Debian Bullseye aka Debian 11 est une version majeure de Debian bientôt publiée. Dans les changements notables de la distribution, on note : + +* Apache : 2.4.38 → 2.4.46 +* Serveur DNS BIND : 9.11 → 9.16 +* Cryptsetup : 2.1 → 2.3 +* Dovecot MTA : 2.3.4 → 2.3.13 +* GCC : 8.3 → 10.2 +* GnuPG : 2.2.12 → 2.2.20 +* Bibliothèque C GNU : 2.28 → 2.31 +* Image du noyau Linux : Série 4.19 → Série 5.10 +* MariaDB : 10.3 → 10.5 +* Nginx : 1.14 → 1.18 +* OpenJDK : 11 → 11 +* OpenSSH : 7.9p1 → 8.4p1 +* Perl : 5.28 → 5.32 +* PHP : 7.3 → 7.4 +* Postfix MTA : 3.4 → 3.5 +* PostgreSQL : 11 → 13 +* Python 3 : 3.7.3 → 3.9.1 +* Samba : 4.9 → 4.13 +* Vim : 8.1 → 8.2 + +## Actions préalables + +Nous conseillons quelques actions qui aideront en cas de problème. + +Sauvegarder localement certaines ressources (dans `/home/backup/stretch` par exemple) + +~~~ +# cat before-upgrade.sh + +cd /etc +git add . +git commit -am "Commit balai avant upgrade en Bullseye" +mkdir -p /home/backup/buster/ +cd /home/backup/buster +cp -r /etc ./ +mkdir -p var/lib/apt +cp -r /var/lib/dpkg ./var/lib/ +cp -r /var/lib/apt/extended_states ./var/lib/apt/ +dpkg --get-selections "*" > ./current_packages.txt +uptime > uptime.txt +ps auwx > ps.out +pstree -pan > pstree.out +ss -tanpul > listen.out +~~~ + +## Mise à jour du système + +Éditer les dépôts dans `/etc/apt/sources.list` et `/etc/apt/sources.list.d/*.list` pour remplacer _buster_ par _bullseye_. + +~~~ +# cat /etc/apt/sources.list +deb http://mirror.evolix.org/debian bullseye main +deb http://mirror.evolix.org/debian/ bullseye-updates main +deb http://security.debian.org/debian-security bullseye-security main + +# cat /etc/apt/sources.list.d/evolix_public.list +deb http://pub.evolix.net/ bullseye/ +~~~ + +~~~ +# sed -i 's/buster/bullseye/g' /etc/apt/sources.list /etc/apt/sources.list.d/*.list +~~~ + +Si il y a des backports... **les désactiver** car en général ils ne sont plus nécessaires ! (si vraiment ils doivent être conservés, à mettre dans _/etc/apt/preferences.d/0-backports-defaults_ et s'assurer d'un pinning correct) + +Puis mettre à jour le cache APT avec la commande : + +~~~ +# apt update +~~~ + +Commencer par télécharger l'ensemble des paquets qui devront être installés (afin de limiter le temps effectif d'installation). + +~~~ +# apt dist-upgrade --download-only +~~~ + +*Attention, si il y a des instances LXC, il faut les stopper avant les mises à jour !* + +Faire ensuite une mise à niveau sans nouveaux paquets, pour appliquer les mises à jour triviales : + +~~~ +# apt upgrade --without-new-pkgs +~~~ + +Faire ensuite une mise à niveau avec nouveaux paquets mais sans désinstallations : + +~~~ +# apt upgrade --with-new-pkgs +~~~ + +**TODO: à vérifier** + +Attention, si MySQL/MariaDB est installé, il faut stopper les instances supplémentaires car non gérées lors de la mise à jour (et cela va casser avec *There is a MySQL server running, but we failed in our attempts to stop it*) : + +~~~ +# mysqld_multi stop +~~~ + +Ensuite, appliquer les mises à jour non triviales (nécessitant des changements de paquets dépendants, des suppressions…) afin d'avoir un œil plus précis sur ce qui sera fait, avant de valider : + +~~~ +# apt full-upgrade +~~~ + +Puis lancer le nettoyage des vieux paquets en lisant attentivement la liste… en cas de doute, réinstaller le paquet ! + +~~~ +# apt autoremove +~~~ + +Enfin, il faut redémarrer sur le nouveau noyau Linux installé : + +~~~ +# reboot +~~~ + +## PATH / su + +Lorsque l'on utilise `su` cela ne change plus automatiquement le PATH. +Soit il faut prendre l'habitude faire `su -`, soit il faut ajouter `ALWAYS_SET_PATH yes` dans le fichier `/etc/login.defs` (mais cela génère un message d'erreur pour un certain nombre d'applications...). + +Pour plus d'informations, voir `/usr/share/doc/util-linux/NEWS.Debian.gz` ou + +## MariaDB + +**TODO: voir si des adaptations sont nécessaires** + +## PHP + +Il faut parfois forcer le passage à PHP 7.4 : + +~~~ +# apt remove libapache2-mod-php7.3 && a2enmod php7.4 && /etc/init.d/apache2 restart +~~~ + +puis nettoyer les anciens paquets `php7.3-*` + +## PHPMyAdmin + +phpMyAdmin a fait son retour dans les paquets Debian. Si vous l'aviez installé par les sources en Debian 10, vous pouvez le désinstaller et remettre le paquet. + +## LXC et AppArmor + +**TODO: à vérifier, probablement toujours d'actualité** + +Si des conteneurs LXC sont configurés, il faut installer lxc-templates et apparmor afin d'installer des configurations nécessaire à leur fonctionnement. + +Et il faut mettre à jour la config de tous les conteneurs : + +~~~ +# lxc-update-config -c /var/lib/lxc/foo/config +~~~ + +## PostgreSQL + +**TODO: à vérifier, adapter les versions si toujours d'actualité** + +Il faut migrer manuellement. + +~~~ +# pg_dropcluster --stop 11 main +# pg_upgradecluster 9.6 main +# pg_dropcluster 9.6 main +~~~ + +## usrmerge + +Les installations fraîches de Debian Bullseye (et Buster) ont un `/usr` fusionné. +Les répertoires `/{bin,sbin,lib}/` deviennent des liens symboliques vers `/usr/{bin,sbin,lib}/`. +Si on veut faire la fusion il faut installer le paquet `usrmerge`. + +``` +# apt install usrmerge +``` + +## Écosystème Ruby on Rails + +**TODO: à vérifier, probablement toujours d'actualité** + +On peut avoir des erreurs avec des gems. + +~~~ +bundle[3404]: LoadError: libmariadbclient.so.18: cannot open shared object file: No such file or directory - +~~~ + +Il faut mettre à jour si le projet utilise bundle. + +~~~ +$ RAILS_ENV=production bundle install --redownload +~~~ + +## Squid + +**TODO: à vérifier, probablement obsolète** + +Il faut s'assurer d'avoir l'override systemd. + +``` +# systemctl edit squid +# systemd override for Squid +[Service] +ExecStart= +ExecStart=/usr/sbin/squid -sYC -f /etc/squid/evolinux-defaults.conf +# systemctl daemon-reload +# systemctl restart squid +``` + +## libvirt + +**TODO: à vérifier, probablement toujours d'actualité** + +~~~ +Errors were encountered while processing: + libvirt-daemon-system +~~~ + +Il faut stopper `virtlogd-admin.socket` puis relancer l'upgrade. + +~~~ +# systemctl stop virtlogd-admin.socket +# apt install -f +~~~ + +## Postfix + +Il faut assurer que `smtpd_relay_restrictions` soit présent dans `/etc/postfix/main.cf`. +Si l'option n'est pas présente, ajouter : + +~~~ +smtpd_relay_restrictions = permit_mynetworks permit_sasl_authenticated defer_unauth_destination +~~~ + +## ProFTPD + +**TODO: à vérifier, probablement obsolète** + +La version 1.3.6 a un bug pour lister les répertoires avec plus de 10k fichiers : +https://github.com/proftpd/proftpd/issues/863 +Un contournement est de désactiver le "cachefs" de ProFTPD comme suggéré ici : +http://bugs.proftpd.org/show_bug.cgi?id=4360#c14 +