Problème suite mise à jour / dépendances ko

Je ne sais pas de votre côté mais j’ai l’impression que ça ne pose pas spécialement de problème sur le bon fonctionnement du plugin.

En attendant une meilleure solution, de mon côté et pour éviter que l’installation des dépendances ne bouclent, j’ai commenté l’installation de python-miio.

cd /var/www/html/plugins/xiaomihome/plugin_info
nano packages.json

    "yeelight" : {} (supprimer la virgule)
#   "python-miio" : {}

Oui je confirme le plugin fonctionne perso j’ai désactivé gestion automatique pour ne plus qu’il essai d’installer. Également en attendant une solution

je galère aussi avec le même problème et j’ai essayé pas mal de choses comme vous.

pour rustc : n/a, malgré mon install à la main de rust (avec curl … etc…), je continue à avoir le n/a malgré des reboot. Comment as-tu fait pour que rustc soit vu comme « installé » ?

Python: 3.7.3
platform: Linux-5.15.38-v7±armv7l-with-debian-10.13
pip: 22.2.2
setuptools: 65.4.0
setuptools_rust: 1.5.2
rustc: n/a

l’install à la main de rust m’indique 1.64, ça devrait être >= à .48…
pi@jeedom-cugy:~ $ rustc -V
rustc 1.64.0 (a55dd71d5 2022-09-19)

Pareil chez moi. Gestion automatique désactivée et le plugin semble fonctionner correctement par ailleurs en attendant une correction.

J’ai lancé l’installation de la commande en direct sur mon pi mais j’ai plus en tête mince.

Le but :
pouvoir installer un package de cryptography qui satisfasse la dépendance de xiaomihome dans jeedom (et passer tout au vert dans OS/DB-Vérification des packages). Ensuite le daemon arrête de gueuler semble-t-il.

j’ai 2 jeedom en 10.x raspbian, les deux ont eu le problème.
3 étapes :

  • installation de rustc
  • désinstallation de cryptography
  • ré-installation d’une version plus ancienne de cryptography

installation de rustc par apt-get sous 10.x :
possible mais n’installe que la version 1.41.

installation de rustc par rustup :
possible avec >curl --proto ‹ =https › --tlsv1.2 https://sh.rustup.rs -sSf | sh
rustc 1.64 s’installe dans l’OS. Mais pour une raison que je ne connais pas, pip3 ne reconnaît pas rustc pendant la compil/build des dépendances.

Maintenant le souci vient du build du package cryptography :
le latest cryptography 38 a besoin de rustc 1.48 ← impossible à faire marcher ce couple
par contre cryptography 37.0.4 a seulement besoin de rustc 1.41

donc ce que j’ai fait :
installation de rustc avec apt-get (version 1.41)

sudo apt-get install rustc

installation de cryptography en version 37.0.4

sudo pip3 uninstall cryptography
sudo pip3 install cryptography==37.0.4

ensuite la fameuse commande requise par xiaomi-home pour installer python-miio :

sudo pip3 install python-miio

le daemon a arrêté de me faire c…er toutes les 5 min.

4 « J'aime »

Bonjour à tous.

Alors moi idem, impossible d’installer les dépendances depuis la mise à jour et demon KO.
J’ai un tas de packets qui ne s’installent pas mais apparemment pas pour les mêmes raisons que vous.

J’ai à chaque fois une erreur : Fatal Python error: initfsencoding: unable to load the file system codec

Je vous mets les logos si dessous si quelqu’un a une idée car là je sèche complet.

Merci pour votre aide

+ echo '*******************Begin of package installation******************'
*******************Begin of package installation******************
+ touch /tmp/jeedom_install_in_progress_xiaomihome
+ echo 1
+ echo 2
++ awk '$1 <= 4'
++ find /usr/local/lib/python3.7/dist-packages/ -mindepth 1 -maxdepth 1 -type d -exec du -ks '{}' +
++ cut -f 2-
+ RESULTTODELETE=
++ sed 's, ,\ ,g'
++ echo ''
+ RESULTTODELETE2=
+ echo ''
+ xargs rm -rf
+ echo 3
+ sudo pip3 install --upgrade pip
Fatal Python error: initfsencoding: unable to load the file system codec
LookupError: no codec search functions registered: can't find encoding

Current thread 0x0000ffff94a1e010 (most recent call first):
/tmp/jeedom_fix_package: line 8:  1972 Aborted                 sudo pip3 install --upgrade pip
+ echo 4
+ sudo pip3 install --no-cache-dir --force-reinstall --upgrade pyudev
Fatal Python error: initfsencoding: unable to load the file system codec
LookupError: no codec search functions registered: can't find encoding

Current thread 0x0000ffffaff50010 (most recent call first):
/tmp/jeedom_fix_package: line 10:  1980 Aborted                 sudo pip3 install --no-cache-dir --force-reinstall --upgrade pyudev
+ echo 5
+ sudo pip3 install --no-cache-dir --force-reinstall --upgrade construct
Fatal Python error: initfsencoding: unable to load the file system codec
LookupError: no codec search functions registered: can't find encoding

Current thread 0x0000ffffb3574010 (most recent call first):
/tmp/jeedom_fix_package: line 12:  1983 Aborted                 sudo pip3 install --no-cache-dir --force-reinstall --upgrade construct
+ echo 6
+ sudo pip3 install --no-cache-dir --force-reinstall --upgrade requests
Fatal Python error: initfsencoding: unable to load the file system codec
LookupError: no codec search functions registered: can't find encoding

Current thread 0x0000ffff86316010 (most recent call first):
/tmp/jeedom_fix_package: line 14:  1985 Aborted                 sudo pip3 install --no-cache-dir --force-reinstall --upgrade requests
+ echo 7
+ sudo pip3 install --no-cache-dir --force-reinstall --upgrade pyserial
Fatal Python error: initfsencoding: unable to load the file system codec
LookupError: no codec search functions registered: can't find encoding

Current thread 0x0000ffff81611010 (most recent call first):
/tmp/jeedom_fix_package: line 16:  1987 Aborted                 sudo pip3 install --no-cache-dir --force-reinstall --upgrade pyserial
+ echo 8
+ sudo pip3 install --no-cache-dir --force-reinstall --upgrade future
Fatal Python error: initfsencoding: unable to load the file system codec
LookupError: no codec search functions registered: can't find encoding

Current thread 0x0000ffffaae2c010 (most recent call first):
/tmp/jeedom_fix_package: line 18:  1989 Aborted                 sudo pip3 install --no-cache-dir --force-reinstall --upgrade future
+ echo 9
+ sudo pip3 install --no-cache-dir --force-reinstall --upgrade pycrypto
Fatal Python error: initfsencoding: unable to load the file system codec
LookupError: no codec search functions registered: can't find encoding

Current thread 0x0000ffffbb3ff010 (most recent call first):
/tmp/jeedom_fix_package: line 20:  1991 Aborted                 sudo pip3 install --no-cache-dir --force-reinstall --upgrade pycrypto
+ echo 10
+ sudo pip3 install --no-cache-dir --force-reinstall --upgrade cryptography
Fatal Python error: initfsencoding: unable to load the file system codec
LookupError: no codec search functions registered: can't find encoding

Current thread 0x0000ffff93cbf010 (most recent call first):
/tmp/jeedom_fix_package: line 22:  1993 Aborted                 sudo pip3 install --no-cache-dir --force-reinstall --upgrade cryptography
+ echo 11
+ sudo pip3 install --no-cache-dir --force-reinstall --upgrade enum34
Fatal Python error: initfsencoding: unable to load the file system codec
LookupError: no codec search functions registered: can't find encoding

Current thread 0x0000ffff9b3e0010 (most recent call first):
/tmp/jeedom_fix_package: line 24:  1995 Aborted                 sudo pip3 install --no-cache-dir --force-reinstall --upgrade enum34
+ echo 12
+ sudo pip3 install --no-cache-dir --force-reinstall --upgrade enum-compat
Fatal Python error: initfsencoding: unable to load the file system codec
LookupError: no codec search functions registered: can't find encoding

Current thread 0x0000ffffa441a010 (most recent call first):
/tmp/jeedom_fix_package: line 26:  1997 Aborted                 sudo pip3 install --no-cache-dir --force-reinstall --upgrade enum-compat
+ echo 13
+ sudo pip3 install --no-cache-dir --force-reinstall --upgrade wheel
Fatal Python error: initfsencoding: unable to load the file system codec
LookupError: no codec search functions registered: can't find encoding

Current thread 0x0000ffff996d6010 (most recent call first):
/tmp/jeedom_fix_package: line 28:  1999 Aborted                 sudo pip3 install --no-cache-dir --force-reinstall --upgrade wheel
+ echo 14
+ sudo pip3 install --no-cache-dir --force-reinstall --upgrade yeelight
Fatal Python error: initfsencoding: unable to load the file system codec
LookupError: no codec search functions registered: can't find encoding

Current thread 0x0000ffffb61a0010 (most recent call first):
/tmp/jeedom_fix_package: line 30:  2001 Aborted                 sudo pip3 install --no-cache-dir --force-reinstall --upgrade yeelight
+ echo 15
+ sudo pip3 install --no-cache-dir --force-reinstall --upgrade python-miio
Fatal Python error: initfsencoding: unable to load the file system codec
LookupError: no codec search functions registered: can't find encoding

Current thread 0x0000ffff85f90010 (most recent call first):
/tmp/jeedom_fix_package: line 32:  2003 Aborted                 sudo pip3 install --no-cache-dir --force-reinstall --upgrade python-miio
+ echo 16
+ php /var/www/html/core/class/../php/jeecli.php plugin dependancy_end xiaomihome
+ rm /tmp/jeedom_install_in_progress_xiaomihome
+ echo '*******************End of package installation******************'
*******************End of package installation******************

Bien vu c’est plutôt bien joué mais lors d’une mise à jour de type apt get update, cryptographie va se remettre à jour avec une version plus récente et lors d’une prochaine mise à jour du plugin on aura de nouveau l’erreur ?

cryptography c’est un package python, donc apt-get ne va pas le mettre à jour.

non, à mon avis… on est tout bon.

mon sentiment c’est que c’est notre 10.x qui pose problème. A mon avis en 11.x on aurait rustc par apt en 1.48 ou plus, et on n’aurait pas à faire cette manip.

mais passer en 11.x avec jeedom et le bordel avec python 2/3 pour certains plugins, en particulier z-wave, c’est exclu pour le moment à mon avis.

Et d’après toi le dev peut apporter un contournement ou il faut corriger le problème avec cryptography ?
En espérant pas d’autres effets de bord pour d’autres plugins etc…

Moi je suis pas développeur, mais ici c’est un problème de dépendances sur des packages python qui sont développés par d’autres, et dans ce cas précis un développement rust à l’intérieur du package python. Le développeur du plugin ne peut pas faire de miracles non plus, et j’avoue que c’est un sacré bazar tout le système python 2, 3, les pip, etc… et en plus ça dépend des OS, des versions de linux, etc…
et ceux de cryptography te diront que ça marche très bien, il « suffit » d’avoir rustc >1.48 .-).

personellement que cryptography soit en v35 ou v38 m’importe peu sur mon système. Si ça permet de builder avec rustc 1.41…

J’aimerais surtout pouvoir à terme passer en bullseye 11.x et avoir un jeedom fully compatible (je parle des plugins).

ps. j’aurais bien aimé comprendre pourquoi l’install de rustc avec rustup n’est pas « vue » par pip3, malgré le changement des PATHs, etc… mais là j’ai plus de temps à mettre dessus.

Bonjour @lunarok, pourrais-tu jeter un oeil expert. Stp

1 « J'aime »

j’ai bien fait de passer aussi : dépendances en vrac comme décrit sur le fil, mais le plugin semble fonctionner correctement. Je n’avais pas MAJ depuis un moment, en voyant la numérotation je me suis dit qu’il était temps…
wait&see.

J’ai le meme souci après la MàJ
Y a-t-il un moyen de revenir à la version precedente du plugin ?
Avec une ancienne sauvegarde ?

Pour l’instant perso j’attends un retour du dev s’il peut faire quelque chose sinon je tenterai la version expliqué au dessus par @cgail914 de d’installer une version spécifique de cryptography

1 « J'aime »

Bon j’ai trouvé plus simple pour installer la dernière version de cryptography, mais il faut installer rustc avec le compte root, des sudo depuis le compte utilisateur ne suffisent pas. C’est probablement plus « propre » que de downgrader cryptography même si ça marche très bien.

  1. on enlève rustc si installé par le package manager
    sudo apt-get remove rustc

  2. on se loggue en root
    sudo su -

  3. on installe rustc avec rustup (root)
    curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh

  4. on modifie la variable d’environnement PATH (root)
    . "$HOME/.cargo/env"

  5. on ré-installe le package cryptography avec pip3 (root)
    python3 -m pip uninstall cryptography
    python3 -m pip install --upgrade cryptography

sur mes 2xrpi3 et 1xrpi4 en 10.x ça recompile et ça fonctionne.

1 « J'aime »

Bonjour,

Merci pour tes tests et recherches, la commande d’installation rustc doit t’installer la version 1.64 et non la 1.48, pas gênant ?

1 « J'aime »

la dépendance c’est >= 1.48. Donc oui, c’est bon.

Il faut rester en root pour installer cryptography et déployer la variable d’env ? ou on se remet avec le compte pi ?

rester en root.