FHEM 5.7 auf Synology DS213J Perlpfad ändern

Begonnen von timmyfromspace, 12 November 2016, 19:27:13

Vorheriges Thema - Nächstes Thema

timmyfromspace

Bitte direkt zu Beitrag 2 springen, hab jetzt Perl 5.22 + Module laufen, bekomme aber FHEM nicht zum Starten dessen.



Hallo zusammen,

Ich kämpfe gerade ein wenig mit meinem NAS, Funk-Lan-Gateway und der Verschlüsselung (Crypt::Rijndael).

Meine Recherchen ergaben, dass man unter einer Diskstation arge Probleme hat mit dem Standard Perl-Module 5.1.8 neue Module mit Make und Compiler-Abhängigkeiten zu konfigurieren, stieß dabei auf unzählige Probleme, die ich auch in Foren vorfand.

Active-Perl wegen ARM-Architektur leider nicht möglich. Hab jetzt aber über Umwege (Debian Chroot für Synology, Installation per apt-get) Perl 5.20 sowie libcrypt rijndael perl installieren können.

Würde jetzt gerne mein Startskript und fhem.sh anpassen, hab die aber an mutiplen Orten gefunden und es hat alles nichts gebracht:

Unter /usr/local/fhem/app war kein scripts Ordner, habe ich angelegt und eine fhem.sh reinkopiert.

Unter /usr/local/fhem/opt/contrib/Synology/scripts fhem.sh gefunden und angepasst.

Unter /volume2/@appstore/fhem/app/scripts angepasst (wobei das aussieht wie ein Symlink zum ersten Verzeichnis)

Unter /volume2/@appstore/fhem/bin

Unter /volume2/@appstore/fhem/opt/contrib/Synology/scripts

Leider funkt unter meinem Synology SSH der "find" Befehl nicht so und WINSCP VErbindung auf alle VErzeichnisse mag auch nicht so toll suchen.

Jemand noch ne Idee was ich noch anpassen könnte?

#!/bin/sh
#
#
HOME='/var/packages/FHEM/target'
PERL=/usr/bin/perl
PERL_BIN=/usr/bin/perl
KMOD=/var/packages/usb-driver-kernel
PATH=$HOME:$PERL:$PATH
export PATH

fhem_BIN=${HOME}/fhem.pl
test -x ${fhem_BIN} || { echo "${fhem_BIN} not installed";
if [ "$1" = "stop" ]; then exit 0;
else exit 5; fi; }

# Check for existence of needed config file and read it
fhem_CONFIG=${HOME}/fhem.cfg
test -r ${fhem_CONFIG} || { echo "${fhem_CONFIG} not existing";
if [ "$1" = "stop" ]; then exit 0;
else exit 6; fi; }

fhem_LOG=/var/log/fhem-`date +"%Y-%m"`.log

perl_BIN=`which perl`

#
case "$1" in
start)
echo "Starting fhem "
if [ -d "${KMOD}" ]; then
if [ ! -f "${KMOD}/enabled" ]; then
${KMOD}/scripts/start-stop-status start
touch ${KMOD}/enabled && chmod 775 ${KMOD}/enabled
fi
fi

${perl_BIN} $fhem_BIN $fhem_CONFIG
;;
stop)
echo "Shutting down fhem "
${perl_BIN} $fhem_BIN 7072 shutdown
;;
restart)
$0 stop
$0 start
;;
status)
echo -n "Checking for service fhem "
ps|grep fhem.pl
;;
log)
test -r $fhem_LOG || { echo "$fhem_LOG not existing"; exit 0; }
echo $fhem_LOG
;;
*)
echo "Usage: $0 {start|stop|status|restart|log}"
exit 1
;;
esac
exit 0


So sieht die FHEM.SH aus, /bin/perl ist das alte Verzeichnis, /usr/bin/perl das Neue.

Fheminfo sagt dies:

Fhem info:
  Release  : 5.7 FeatureLevel: 5.7
  OS       : linux
  Arch     : armle-linux
  Perl     : v5.18.4
  uniqueID : 883fdbd403878cfae11641ee2608a8bd
  upTime   : 00:28:48

Defined modules:
  FHEMWEB    : 3
  FileLog    : 1
  HMUARTLGW  : 1
  autocreate : 1
  eventTypes : 1
  notify     : 1
  telnet     : 1

Transmitting this information during an update: no
You can change this via the global attribute sendStatistics


Hilfreich wäre ein Befehl / Anzeige, welche fhem.sh gerade verwendet wird oder gibts andere Anpassungsmöglichkeiten.

Danke schonmal.

Gruß Tim


EDIT:

Nevermind, ist glaube mein Fehler, die richtige Perl-Version scheint nur in der Debian-Chroot Umgebung vorhanden zu sein, aber nicht in DSM. Muss mal gucken, ob ich das gefixt bekomme :3

Habe das jetzt mal ausführlicher im Synology Forum nachgefragt, falls hier jemand trotzdem Ideen hat, nur zu!


timmyfromspace

#1
Sooo,

nach langem Rumsuchen habe ich es jetzt geschafft per OPKG / Entware Perl 5.22 zu installieren, sowie alle Module, die das Herz begehrt.

Soweit so gut. Habe auch in $PATH /OPT/BIN/Perl eingetragen,

Perl ist in SSH / Konsole vorhanden, perl - v richtig.

sowie wie oben beschrieben:

PERL=/usr/bin/perl
PERL_BIN=/usr/bin/perl

in alle o.g. fhem.sh reinkopiert und neugestartet.

FHEMInfo zeigt leider noch immer an, dass die alte Version genutzt wird:

ZitatFhem info:
  Release  : 5.7
  OS       : linux
  Arch     : armle-linux
  Perl     : v5.18.4
  uniqueID : 945f797722695fa95d378823cf9d1cce
  upTime   : 00:10:59

Kann mir jemand sagen, wie ich das noch ändern könnte? Ich fänds schon Troubleshooting mäßig hilfreich einfach zu wissen, welches Startskript verwendet wird oder wie der auf die alte Default Perl Version kommt. Die läuft zwar auf dem Server (ist ja Requirement für das FHEM Paket), aber $PATH steht die neue Vorne, Konsole spricht perl (-v) 5.22 an und ich hab bzgl. der fhem.sh eher zuviel als zuwenig angepasst :D

Meine Vermutung stimmt, bei Update sagt er:

2016-11-15 17:21:35 Global global Calling /usr/bin/perl ./contrib/commandref_join.pl, this may take a while

(und nicht /opt/bin/perl)


Edit.:

Hab gerade mal fhem gestoppt, dann nach /var/packages/fhem/scripts/ navigiert und die modifizierte fhem.sh ausgeführt, nimmt noch immer das Perl aus dem Package Center.

Hat hier jemand mit der Synology .spk (erster Link: https://forum.fhem.de/index.php/topic,51265.0.html) schon geschafft den Perl Pfad zu ändern?

Ich weiß gerade nicht mehr was ich falsche mache oder wo ich noch gucken könnte und mir kommt das irgendwie komisch vor.

Danke nochmal.

timmyfromspace

Dreifach-Post, weil es so wichtig und dann auch geclosed, archiviert oder irgendwie informativ angebracht werden kann und sollte, nur den Perl-Pfad anpassen in der fhem.sh bringt nix.

https://forum.fhem.de/index.php?topic=56207.15

Lösung in dem Thread, Zitat:

" ;D ;D ;D ;D Ich habs gefunden !!
Also das Script unter:
/volume1/@appstore/fhem/opt/contrib/Synology/scripts/fhem.sh
wird nicht verwendet auf der Synology.
Ich hatte mich auch schon gewundert, dass der angegebene Pfad so (HOME='/var/packages/FHEM/target') garnicht existiert.

Verwendet wird bei der Synology Installation von M.Fischer das Script:
/volume1/@appstore/fhem/bin/fhem.sh

Dieses verkürzte Script hat jedoch keinen Parameterverwendung von PERL_Bin implementiert.

Ich habe also bei diesem Script im Kopf einmal
perl_BIN=/opt/ActivePerl-5.22/bin/perl

und bei den unteren Aurufen
den String "$fhem_BIN"  2 mal durch "${perl_BIN} $fhem_BIN" ersetzt.

Jetzt lässt sich FHEM wie üblich im SynologyPaketZentrum Starten/Stoppen und FHEMInfo zeigt nun auch die Version
Perl     : v5.22.2

Und jetzt funktioniert (da ich alle Zusatzpakete schon installiert hatte) auch plötzlich der Aufruf des Fritzbox Moduls !

Danke für eure Hilfe !
"

tl;dr = perl_Bin setzen und in den zwei Aufrufen $fhem_BIN" durch "${perl_BIN} $fhem_BIN" ersetzen in der Datei "/usr/local/fhem/bin/fhem.sh" bzw. dem @appstore Pendant, was ein Link ist.

Dann neues Perl (via OPKG/Entware) und Module genießen! \o/