Can't locate JSON/Parse.pm

Begonnen von Darkrabbit, 15 September 2020, 17:51:41

Vorheriges Thema - Nächstes Thema

Darkrabbit

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?



Christoph Morrison

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.

rudolfkoenig

Oder auch: es sind vermutlich 2 perl Versionen installiert, die eine hat JSON::Parse, die andere wird fuer FHEM verwendet.

Christoph Morrison

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.

Darkrabbit

#4
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?

Christoph Morrison

#5
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*'

Darkrabbit

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


???

Darkrabbit

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


Christoph Morrison

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.

Darkrabbit

#9
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...

Darkrabbit

Hab´s hinbekommen:

Variablen aus .bashrc entfernt. Anschließend alles zum Thema Perl/JSON/Parse neu installiert.

Läuft jetzt! Danke! :)