Mettre à jour Rhasspy via Docker
Là encore, Docker brille par son efficacité dans la mise à jour d’une image. Il suffit juste d’exécuter cette ligne de commande :
docker pull rhasspy/rhasspy
Attention, si tu as installé Rhasspy via Docker sur un pi 0, alors il faudra préciser l’architecture en modifiant la ligne comme ceci :
docker pull --platform linux/arm/v6 rhasspy/rhasspy
Une fois la mise à jour faite, nous allons arrêter le conteneur et le supprimer pour qu’un nouveau conteneur soit créé, basé sur l’image mise à jour.
Pour rappel, l’image, c’est un peu comme le document original que l’on met dans le scanner alors que le conteneur, c’est la photocopie.
docker stop rhasspy
docker rm rhasspy
Il ne nous reste plus qu’à recréer notre nouveau conteneur :
docker run -p 12101:12101 \
-v "$HOME/.config/rhasspy/profiles:/profiles" \
-v "/etc/localtime:/etc/localtime:ro" \
-d --restart unless-stopped \
--name rhasspy \
--device /dev/snd:/dev/snd \
rhasspy/rhasspy \
--user-profiles /profiles \
--profile fr
Si on veut se simplifier la vie, autant mettre tout ça dans un script qu’on appellera pour faire toutes ces actions en une commande.
touch /home/pi/mis_a_jour_rhasspy.sh
chmod +x /home/pi/mis_a_jour_rhasspy.sh
nano /home/pi/mis_a_jour_rhasspy.sh
Et on y colle les lignes ci-dessous
# Mise à jour de l'image
docker pull rhasspy/rhasspy
# Arret et suppression du conteneur
docker stop rhasspy
docker rm rhasspy
# Lancement d'un nouveau conteneur mis à jour
docker run -p 12101:12101 \
-v "$HOME/.config/rhasspy/profiles:/profiles" \
-v "/etc/localtime:/etc/localtime:ro" \
-d --restart unless-stopped \
--device /dev/snd:/dev/snd \
rhasspy/rhasspy \
--user-profiles /profiles \
--profile fr
Et voilà, quand tu voudras mettre à jour Rhasspy, il te suffira lancer la commande suivante :
/home/pi/mis_a_jour_rhasspy.sh
Bonjour,
Il me semble manquer
–name rhasspy \
Dans le fichier Bash
Cordialement
Thank you!!1
Bonjour,
Je suis passé en environnement virtuel.
Sur mon satellite j’ai réussi à faire la mise à jour en 2.5.8 sans soucis avec le tuto,
mais pour le master maj retour l’erreur suivante:
/bin/bash: ligne 0 : cd: /home/rhasspypi/rhasspy/rhasspy-tts-larynx-hermes/larynx/TTS: Aucun fichier ou dossier de ce type
make: *** [Makefile:168: install-rhasspy] Error 1
J’ai essayé avec et sans update on sais jamais mais rien et j’utilse pas larynx.
Merci de tes lumières…(surtout de tes connaissances) 🙂
Bonjour Hervé,
Effectivement, Larynx pose soucis. Comme nous ne l’utilisons pas, voici le contournement :
./configure RHASSPY_LANGUAGE=fr \
--disable-speech-to-text \
RHASSPY_WAKE_SYSTEM=snowboy \
--enable-in-place \
--disable-larynx
J’en ai profité pour mettre à jour l’article 😉
Bon dimanche !
Ced
Merci de cette réponse rapide toujours le TOP 🙂
Re Ced
Effectivement maintenant ça fonctionne ! 🙂
Je viens de me rendre compte en refaisant la procédure que j’avais tout bonnement oublier d’arrêter le conteneur au moment de la mise en place du script car avant ces 2 tutos mon conteneur ne démarré pas automatique et je pensais à l’arrêter pour entrer les commandes en console.
Là je suis entrain d’essayer de faire fonctionner mes commandes avec jeeRhasppy et après je tenterai la mise en place d’un satellite et peut-être un MQTT;
Espoir 🙂
Encore merci
Bonjour Cedox,
Je fait suite à mon dernier message.
Le soucis doit venir du fait que j’ai modifié l’utilisateur par défaut dés le début avant toute installation et j’ai bien fait attention de modifier les chemins d’accés lors de l’installation mais l’exécution de la mise à jour me renvoi comme quoi il ne trouve pas le contener rhasspy:
sudo /home/rhasspypi/./mis_a_jour_rhasspy.sh
/home/rhasspypi/mis_a_jour_rhasspy.sh
Using default tag: latest
latest: Pulling from rhasspy/rhasspy
Digest: sha256:885580155f24e4e91e9eca43e32e1c4223486278e45284911fd57fe4478b9a83
Status: Image is up to date for rhasspy/rhasspy:latest
docker.io/rhasspy/rhasspy:latest
Error response from daemon: No such container: rhasspy
Error: No such container: rhasspy
6ab197eb41bf7ebe78f7c29de08f1bc3950403ac822097acbd0cde3457e060c5
docker: Error response from daemon: driver failed programming external connectivity on endpoint magical_rhodes (fbdce718afbf7335eed28c6b290fc300ff7c9287fbbf47bd0b716e41c24f4ac3): Bind for 0.0.0.0:12101 failed: port is already allocated.
Enfin je pense que ça viens de là
Hervé
Bonjour Hervé,
Le problème semble être que tu n’as pas nommé ton conteneur. Pour corriger ça :
$ docker container ls
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
5c79353b0837 rhasspy/rhasspy "bash /usr/lib/rhass…" 5 minutes ago Up 36 seconds 0.0.0.0:12101->12101/tcp affectionate_wilson
Là tu as le nom du container (aléatoire) : affectionate_wilson
Ensuite tu arrêtes et supprimes ce conteneur
$ docker stop affectionate_wilson
$ docker rm affectionate_wilson
Ensuite tu relances avec la commande “docker run [blabla]” qui est dans l’article et qui a le paramètre “–name” et qui nomme ton conteneur rhasspy.
Normalement, après le script devrait marcher 😉
Ced