Synology Diskstation DS213+
Ab DSM 5.0 gibt es für die DS213+ (CPU: Freescale PowerPC, siehe hier) ein Paket für Perl, welches via Paketmanager installiert werden kann.
Diverse Perl-Module (z.B. Device::SerialPort) lassen sich jedoch nicht (einfach via cpan oder ipkg) installieren (Stand: Juni 2015).
Man kann Perl jedoch auch direkt auf der Diskstation kompilieren, mit dem Vorteil, dass dann cpan funktioniert und so diverse Perl-Module, die von Fhem bzw. von Fhem-Modulen verwendet werden, installiert werden können. So kommt man zu einer leistungsfähigeren Installation von Fhem, als z.B. auf einem RaspberryPi.
Perl Installation
Vorbereitungen
Sollte das Perl-Paket installiert sein - bitte das Perl-Paket zuerst deinstallieren!
Im Prinzip vorgehen wie in http://search.cpan.org/dist/perl-5.20.2/README.synology beschrieben: Für die DS213+ gibt es aktuell (Juni 2015) kein Synology Paket ("Bootstrap Installer Beta"), das ipkg installiert, also installieren via command line (ssh)
Synology ipkg installieren
siehe http://www.synology-wiki.de/index.php/IPKG
Für PowerPC (ppc_85xx, e500v?): http://ipkg.nslu2-linux.org/feeds/optware/syno-e500/cross/unstable/syno-e500-bootstrap_1.2-7_powerpc.xsh
cd /volume1/public wget http://ipkg.nslu2-linux.org/feeds/optware/syno-e500/cross/unstable/syno-e500-bootstrap_1.2-7_powerpc.xsh sh syno-e500-bootstrap_1.2-7_powerpc.xsh
... (PATH anpassen, start script..., reboot,...)
Compiler installieren
Um Perl auf der Synology Diskstation zu compilieren, installiert einen Compiler samt Zubehör auf der DS213+:
ipkg install make gcc coreutils patch expat
(expat wird später für die Perlmodule für das Fhem Sonosmodul gebraucht)
Symlinks zu system libraries
Der Compiler erwartet z.B. die library libm.so, das ist normalerweise ein symlink zu libm.so.6. Synology bietet nur das letztere und nicht den symlink. Das kann nachgeholt werden:
cd /lib ln -s libm.so.6 libm.so ln -s libcrypt.so.1 libcrypt.so ln -s libdl.so.2 libdl.so cd /opt/powerpc-linux-gnuspe/lib ln -s /lib/libdl.so.2 libdl.so
ln -s /lib/libgdbm.so /lib/libgdbm.so.3 ln -s /lib/libdb-5.1.so /lib/libdb-4.2.so ln -s /lib/libgdbm_compat.so /lib/libgdbm_compat.so.3
ACHTUNG: Nach einem Systemupdate (update der DSM) sind die symlink wieder weg und müssen gegebenenfalls wieder hergestellt werden.
Download perl
cd /volume1/public mkdir perl_sources cd perl_sources wget http://www.cpan.org/src/5.0/perl-5.22.0.tar.gz tar -xzvf perl-5.22.0.tar.gz cd perl-5.22.0
Policy.sh
Im aktuellen Verzeichnis (/volume1/public/perl_sources/perl-5.22.0) die Datei Policy.sh erstellen (z.B.
vi Policy.sh
mit folgendem Inhalt:
# Administrivia. perladmin="your.email@goes.here"
# Install Perl in a tree in /opt/perl instead of /opt/bin. prefix=/opt/perl
# Select the compiler. Note that there is no 'cc' alias or link. cc=gcc
# Build flags. ccflags="-DDEBUGGING -Dusethreads"
# Library and include paths. libpth="/lib" locincpth="/opt/include" loclibpth="/lib"
For threads support of Perl (for the SONOS module of Fhem): Fix the pthreads library symlink (Borrowed from Synology Forum)
rm /opt/powerpc-linux-gnuspe/lib/libpthread.so.0 ln -s /lib/libpthread.so.0 /opt/powerpc-linux-gnuspe/lib/
Perl compilieren
./Configure -Dplibpth=/opt/powerpc-linux-gnuspe/lib /lib /usr/lib -de -Dusethreads –Duseithreads make make test
Zwei Tests funktionieren nicht, sollte jedoch kein Problem sein.
make install
Perl ist nun im Verzeichnis /opt/perl/ installiert - diesen Pfad zu $PATH hinzufügen:
vi /etc/profile
Zur Zeile PATH=... /opt/perl/bin hinzufügen - könnte dann so aussehen:
PATH=/opt/bin:/opt/sbin:/opt/perl/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/syno/sbin:/usr/syno/bin:/usr/local/sbin:/usr/local/bin
Das wirkt erst nach erneutem Anmelden an der Console ;-)
Perlmodule für Fhem-Module installieren
Für den EnOcean USB300
wohl auch für CUL, Zwave...
cpan Device::SerialPort
Für die EnOcean cryptographic functions
cpan Crypt::Rijndael cpan Crypt::Random
Für das SONOS-Modul
Man braucht die openssl header files
Openssl Version erfragen:
openssl version
Passende openssl Version downloaden
wget http://www.openssl.org/source/openssl-1.0.1m.tar.gz tar -xzvf openssl-1.0.1m.tar.gz cd openssl-1.0.1m/ ./config make cp include/openssl/* /opt/include/openssl/
Module installieren
cpan LWP::Simple cpan LWP::UserAgent cpan SOAP::Lite cpan HTTP::Request
Für das ENIGMA2-Modul
cpan XML::Simple
(cpan XML::Parser::Lite)
Fhem installieren
Die Fhem Installation wie hier beschrieben abschließen
ToDo's nach DSM-Update
Bei einem DSM-Update gehen keine Daten von FHEM oder von der Perl-Installation verloren. FHEM startet nach einem Update des DSM nicht mehr, da einige Pfade beim Update gelöscht werden. Hier eine Kurzanleitung um die Pfade wieder herzustellen.
Symbolic links
Die symbolic links gehen beim DSM-Update verloren und müssen erneut (via Console) eingetragen werden:
cd /lib ln -s libm.so.6 libm.so ln -s libcrypt.so.1 libcrypt.so ln -s libdl.so.2 libdl.so ln -s libgdbm.so libgdbm.so.3 ln -s libdb-5.1.so libdb-4.2.so ln -s libgdbm_compat.so libgdbm_compat.so.3
$PATH anpassen
Die Änderungen an der Umgebungsvariablen $PATH gehen beim DSM-Update verloren und müssen erneut eingetragen werden.
Perl-Pfad und ipkg-Pfad wieder zu $PATH hinzufügen (in den Dateien /etc/profile und /root/.profile):
vi /etc/profile
Zur Zeile PATH=... /opt/bin:/opt/sbin:/opt/perl/bin: hinzufügen - könnte dann so aussehen:
PATH=/opt/bin:/opt/sbin:/opt/perl/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/syno/sbin:/usr/syno/bin:/usr/local/sbin:/usr/local/bin
Das wirkt erst nach erneutem Anmelden an der Console ;-)
Danach sollte sich FHEM starten lassen z.B. mit dem Kommando:
perl /usr/local/FHEM/bin/fhem.pl /usr/local/FHEM/etc/fhem.cfg