Fix Docker : HomeAssistant 2021.7.2 sur Raspbian Buster
Si vous utilisez Docker sur Raspbian pour votre HomeAssistant, et que vous souhaitez mettre à jour votre version vers la 2021.7.2, vous devez également mettre à jour Docker. Sinon, ça ne fonctionne pas.
Et si vous avez déjà mis à jour, vous le savez déjà, puisque vous êtes là.
Vous avez donc à faire face à l’erreur suivante :
Fatal Python error: init_interp_main: can't initialize time Python runtime state: core initialized PermissionError: [Errno 1] Operation not permitted Current thread 0x76f84020 (most recent call first): <no Python frame>
La mise à jour comprends deux choses avant de pouvoir utiliser la version 2021.7.2 : Docker, et libseccomp2.
Installation de la librairie
Cette librairie ne se trouve pas sur Buster. Il faut donc utiliser un backport. Cela se fait assez aisément, de la façon suivante :
On commence par ajouter la clé pour éviter les prompts d’alerte :
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 04EE7237B7D453EC 648ACFD622F3D138
On ajoute ensuite le repos de backport dans son propre fichier source :
echo 'deb http://httpredir.debian.org/debian buster-backports main contrib non-free' | sudo tee -a /etc/apt/sources.list.d/debian-backports.list
Ensuite on met à jour les sources et on installe le paquet :
sudo apt update && sudo apt install libseccomp2 -t buster-backports -y
Mise à jour de Docker
Il est nécessaire d’avoir une version plus récente (19+) de Docker pour pouvoir exécuter la dernière versions de HomeAssistant. Cela fait suite au passage vers AlpineLinux (vous pouvez vous documenter à ce sujet en cherchant sur le net).
Là encore, il est nécessaire de faire quelques modifications aux sources, afin de permettre une installation de la version plus récente depuis le dépôt de la future version de Raspbian/Debian, à savoir Bullseye.
Commencer donc par ajouter le repos :
echo "deb http://mirrordirector.raspbian.org/raspbian/ bullseye main" >> /etc/apt/sources.list.d/bullseye-testing-docker.list
Ensuite créer le fichier de préférence pour Docker, afin de lui demander de ne chercher les paquets uniquement pour Docker sur Bullseye :
echo "Package: *" >> /etc/apt/preferences.d/bullseye-docker.pref
echo "Pin: release n=bullseye" >> /etc/apt/preferences.d/bullseye-docker.pref
echo "Pin-Priority: 50" >> /etc/apt/preferences.d/bullseye-docker.pref
On finit ensuite par l’habituelle mise à jour des repos et l’installation :
sudo apt update && sudo apt install docker.io/bullseye -y
Vérifier qu’on est bien passé sur la nouvelle version se fait ainsi :
sudo docker -v Docker version 20.10.5+dfsg1, build 55c4c88
Il est toujours utile de faire un petit reboot, afin d’être sûr que tout soit bien redémarré (notamment si comme moi, vous utilisez docker-compose) :
sudo reboot
Vous voilà enfin débarassé de cette erreur 0x76f84020, et vous pouvez profiter de la version 2021.7.2 et futures !
Cette solution a été testée sur Raspberry Pi 3b et Raspberry Pi 4.