Je savais bien que je n’aurais pas du lancer l’update du plug-in Xiaomi
Une recherche rapide sur packages.debian.org montre que libstd-rust-1.48 n’est fourni qu’avec Debian Bullseye (11.x) et pas Buster (10.x).
Comme le plugin installe les package pip sous le compte root, on a droit à l’habituel warning:
WARNING: Running pip as the ‹ root › user can result in broken permissions and conflicting behaviour with the system package manager. It is recommended to use a virtual environment instead: 12. Virtual Environments and Packages — Python 3.12.2 documentation
L’erreur d’install sur python-miio
pointe vers une erreur lors de l’upgrade de cryptography
.
L’erreur en tentant d’abord l’upgrade de cryptography
seul pointe vers setuptools
et Rust donc on va tenter d’abord:
sudo pip3 install setuptools-rust
Si on retente l’upgrade de cryptography
les messages d’erreur indiquent maintenant clairement qu’il lui faut le compilateur rustc
et la version 1.48
La doc d’installation de cryptographie pointe vers le probable besoin d’installer manuellement la bonne version de Rust (et confirme le besoin de Rust 1.48 pour cryptography 38.0.1):
https://cryptography.io/en/38.0.1/installation/#rust
On tente donc une installation manuelle de Rust dans un shell root complet:
sudo su -
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
Comme indiqué dans la doc, les binaires sont générés dans un répertoire spécifique sans lien symboliques dans dans /usr/bin
, donc si on tente de nouveau un sudo pip3 install cryptography
depuis un shell utilisateur, ça ne trouve pas rustc
(car $PATH reste celui de l’utilisateur courant et pas la version qui contient le répertoire d’install de rust).
On passe donc de nouveau par un shell root complet pour mettre à jour cryptography:
sudo su -
pip3 install --no-cache-dir --upgrade cryptography
Ca compile pendant pas mal de temps, mais ça se termine sans erreur cette fois!
On quitte le shell root et on retente l’installation de python-miio
sudo pip3 install --no-cache-dir --upgrade python-miio
Et cette fois-ci tout se passe sans souci, les dépendances sont corrigées.
A priori cela devrait surement aussi fonctionner en installant Rust sous le compte utilisateur classique (le compilateur n’étant utilisé que lors de l’install du module cryptography).
Conclusion: le script d’install manque de quoi installer correctement les dépendances Rust. J’imagine que le plug-in a du être migré/validé sur Python3 dans une Debian 11 ou que les dernières versions n’ont pas été testées sur un Debian 10 « propre »