Hallo zusammen,
nachdem ich nun den halben Tag nach einer Lösung gesucht habe, versuche ich es mal hier bei den Experten ;D
Bekomme beim Einbinden folgenden Moduls diesen Fehler:
2020.09.15 17:34:49 1: reload: Error:Modul 99_myBMWUtilsPersonal deactivated:
Can't locate JSON/Parse.pm in @INC (you may need to install the JSON::Parse module) (@INC contains: ./lib ./FHEM . /etc/perl /usr/local/lib/arm-linux-gnueabihf/perl/5.28.1 /usr/local/share/perl/5.28.1 /usr/lib/arm-linux-gnueabihf/perl5/5.28 /usr/share/perl5 /usr/lib/arm-linux-gnueabihf/perl/5.28 /usr/share/perl/5.28 /usr/local/lib/site_perl /usr/lib/arm-linux-gnueabihf/perl-base) at ./FHEM/99_myBMWUtilsPersonal.pm line 17.
BEGIN failed--compilation aborted at ./FHEM/99_myBMWUtilsPersonal.pm line 17.
Wie es da schon steht, soll man JSON installieren.
Dies habe ich jedoch nach diversen Anleitungen im Netz getan und es ist up-to-date:
JSON::Parse is up to date. (0.57)
Hat noch irgendjemand eine Idee?
Was sagt
perl --version
?
Was sagt
perl -e "print qq(@INC)"
?
Natürlich auf dem System, auf dem du auch die FHEM-Installation laufen hast.
Oder auch: es sind vermutlich 2 perl Versionen installiert, die eine hat JSON::Parse, die andere wird fuer FHEM verwendet.
Zitat von: rudolfkoenig am 15 September 2020, 18:32:11
Oder auch: es sind vermutlich 2 perl Versionen installiert, die eine hat JSON::Parse, die andere wird fuer FHEM verwendet.
Genau das vermute ich auch.
perl --version
This is perl 5, version 28, subversion 1 (v5.28.1) built for arm-linux-gnueabihf-thread-multi-64int
perl -e "print qq(@INC)"
/home/pi/perl5/lib/perl5/5.28.1/arm-linux-gnueabihf-thread-multi-64int /home/pi/perl5/lib/perl5/5.28.1 /home/pi/perl5/lib/perl5/arm-linux-gnueabihf-thread-multi-64int /home/pi/perl5/lib/perl5 /etc/perl /usr/local/lib/arm-linux-gnueabihf/perl/5.28.1 /usr/local/share/perl/5.28.1 /usr/lib/arm-linux-gnueabihf/perl5/5.28 /usr/share/perl5 /usr/lib/arm-linux-gnueabihf/perl/5.28 /usr/share/perl/5.28 /home/pi/perl5/lib/perl5/5.28.0 /home/pi/perl5/lib/perl5/5.28.0/arm-linux-gnueabihf-thread-multi-64int /usr/local/lib/site_perl /usr/lib/arm-linux-gnueabihf/perl-base
Bzgl. der zwei Versionen: Wie stelle ich es korrekt ein, so dass ich auch auf JSON:Parse zugreifen kann? Also kann ich in der Perl-Version für FHEM das noch installieren? Oder kann ich FHEM sagen, dass ich die anderen Perl-Version nutzen will?
Zitat/home/pi/perl5/lib/perl5/5.28.1/arm-linux-gnueabihf-thread-multi-64int /home/pi/perl5/lib/perl5/5.28.1 /home/pi/perl5/lib/perl5/arm-linux-gnueabihf-thread-multi-64int /home/pi/perl5/lib/perl5
Also die kommen auf meinen Pi nicht vor. Poste mal bitte den Output von:
export
(Das ist ein Shell-Befehl, also wirklich nur
export).
Und bitte den Output von
find /home/pi/perl5 -iname '*json*'
export
declare -x DBUS_SESSION_BUS_ADDRESS="unix:path=/run/user/1000/bus"
declare -x HOME="/home/pi"
declare -x LANG="de_DE.UTF-8"
declare -x LANGUAGE="de_DE.UTF-8"
declare -x LC_ALL="de_DE.UTF-8"
declare -x LOGNAME="pi"
declare -x LS_COLORS="rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd =40;33;01:cd=40;33;01:or=40;31;01:mi=00:su=37;41:sg=30;43:ca=30;41:tw=30;42:ow=3 4;42:st=37;44:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arc=01;31:*.arj=01;31:*.taz=01; 31:*.lha=01;31:*.lz4=01;31:*.lzh=01;31:*.lzma=01;31:*.tlz=01;31:*.txz=01;31:*.tz o=01;31:*.t7z=01;31:*.zip=01;31:*.z=01;31:*.dz=01;31:*.gz=01;31:*.lrz=01;31:*.lz =01;31:*.lzo=01;31:*.xz=01;31:*.zst=01;31:*.tzst=01;31:*.bz2=01;31:*.bz=01;31:*. tbz=01;31:*.tbz2=01;31:*.tz=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.war=01;3 1:*.ear=01;31:*.sar=01;31:*.rar=01;31:*.alz=01;31:*.ace=01;31:*.zoo=01;31:*.cpio =01;31:*.7z=01;31:*.rz=01;31:*.cab=01;31:*.wim=01;31:*.swm=01;31:*.dwm=01;31:*.e sd=01;31:*.jpg=01;35:*.jpeg=01;35:*.mjpg=01;35:*.mjpeg=01;35:*.gif=01;35:*.bmp=0 1;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.t if=01;35:*.tiff=01;35:*.png=01;35:*.svg=01;35:*.svgz=01;35:*.mng=01;35:*.pcx=01; 35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.m2v=01;35:*.mkv=01;35:*.webm=01;35:*.o gm=01;35:*.mp4=01;35:*.m4v=01;35:*.mp4v=01;35:*.vob=01;35:*.qt=01;35:*.nuv=01;35 :*.wmv=01;35:*.asf=01;35:*.rm=01;35:*.rmvb=01;35:*.flc=01;35:*.avi=01;35:*.fli=0 1;35:*.flv=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.yuv=01;35:*.cgm =01;35:*.emf=01;35:*.ogv=01;35:*.ogx=01;35:*.aac=00;36:*.au=00;36:*.flac=00;36:* .m4a=00;36:*.mid=00;36:*.midi=00;36:*.mka=00;36:*.mp3=00;36:*.mpc=00;36:*.ogg=00 ;36:*.ra=00;36:*.wav=00;36:*.oga=00;36:*.opus=00;36:*.spx=00;36:*.xspf=00;36:"
declare -x MAIL="/var/mail/pi"
declare -x NO_AT_BRIDGE="1"
declare -x OLDPWD
declare -x PATH="/home/pi/perl5/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/us r/bin:/sbin:/bin:/usr/local/games:/usr/games"
declare -x PERL5LIB="/home/pi/perl5/lib/perl5"
declare -x PERL_LOCAL_LIB_ROOT="/home/pi/perl5"
declare -x PERL_MB_OPT="--install_base \"/home/pi/perl5\""
declare -x PERL_MM_OPT="INSTALL_BASE=/home/pi/perl5"
declare -x PWD="/home/pi"
declare -x SHELL="/bin/bash"
declare -x SHLVL="1"
declare -x SSH_CLIENT="192.168.1.184 57258 22"
declare -x SSH_CONNECTION="192.168.1.184 57258 192.168.1.34 22"
declare -x SSH_TTY="/dev/pts/1"
declare -x TERM="xterm"
declare -x TEXTDOMAIN="Linux-PAM"
declare -x USER="pi"
declare -x XDG_RUNTIME_DIR="/run/user/1000"
declare -x XDG_SESSION_CLASS="user"
declare -x XDG_SESSION_ID="c6"
declare -x XDG_SESSION_TYPE="tty"
find /home/pi/lib/perl5 -iname '*json*':
find: '/home/pi/lib/perl5': Datei oder Verzeichnis nicht gefunden
???
Noch als Ergänzung:
find /home/pi/perl5 -iname '*json* (ohne /lib/)
/home/pi/perl5/lib/perl5/arm-linux-gnueabihf-thread-multi-64int/auto/JSON
/home/pi/perl5/lib/perl5/arm-linux-gnueabihf-thread-multi-64int/.meta/App-cpanminus-1.7044/MYMETA.json
/home/pi/perl5/lib/perl5/arm-linux-gnueabihf-thread-multi-64int/.meta/App-cpanminus-1.7044/install.json
/home/pi/perl5/lib/perl5/arm-linux-gnueabihf-thread-multi-64int/JSON
/home/pi/perl5/bin/validjson
/home/pi/perl5/man/man3/JSON::Tokenize.3pm
/home/pi/perl5/man/man3/JSON::Parse.3pm
Ah ja, da hast du dein Problem:
declare -x PERL5LIB="/home/pi/perl5/lib/perl5"
hat dafür gesorgt, dass Perl das JSON::Parse wohl nach
/home/pi/perl5/lib/perl5/arm-linux-gnueabihf-thread-multi-64int/JSON
installiert hat. Der User fhem kennt aber dieses Verzeichnis nicht, also kann er JSON::Parse auch nicht finden.
Erstmal solltest du klären, warum es diese Environment-Variable überhaupt gibt. Dann kannst du entscheiden wie du weiter vorgehst. Vermutlich wirst du die Variable entfernen und JSON::Parse neu installieren müssen.
Vielleicht solltest du dann gleich auf JSON::MaybeXS umsteigen. Für die Installation solltest du cpan-minus (cpanm) benutzen.
Danke erstmal für die Analyse :)
Würde ich dann einfach mal machen, hab noch ein Backup zur Not 8)
Dann werde ich ja sehen ob irgendwas nicht mehr läuft und kann zur Not zurück und nochmal neu entscheiden.
Aber das ist ein Bereich in dem ich mich echt wenig auskenne, daher die Frage:
Wie kann ich die Variable ändern / löschen?
Wie lautet der genaue Befehl zum installieren von JSON::Parse?
Kann ich dem User fhem nicht auch einfach das Verzeichnis /home/pi/perl5/lib/perl5/arm-linux-gnueabihf-thread-multi-64int/JSON irgendwie beibringen? Weil dort ist die parse.pm ja schon drin ???
Danke schon mal...
Hab´s hinbekommen:
Variablen aus .bashrc entfernt. Anschließend alles zum Thema Perl/JSON/Parse neu installiert.
Läuft jetzt! Danke! :)