É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).
*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 <http://bugs.debian.org/918754>
## MariaDB
**TODO: voir si des adaptations sont nécessaires**
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.
Pour que `shelldap` demande la saisie du mot de passe, il est nécessaire de modifier la configuration (généralement `~/.shelldap.rc`), en ajoutant la ligne suivante :