Hallo zusammen,
nachdem ich es bisher zwar geschafft habe, über die Synology Toolchain einige Pakete (wie z.B. "make") zu erstellen, mit denen man dann zumindest einfache Perl-Module über CPAN installieren kann, waren komplexere Module, die einen C-Compiler voraussetzen, wie z.B. Device::SerialPort, bisher nicht möglich, da es auf der Synology keinen gcc gibt und ich auch nirgendwo die Möglichkeit gefunden habe, diesen über die Synology Toolchain zu "crosscompilen".
Es ist leider auch nicht so einfach möglich, ein Perl-Modul auf einem Rechner zu kompilieren und dann auf die NAS hinüberzukopieren, denn bei Perl müssen nicht nur die Versionen übereinstimmen, sondern auch die relevanten Optionen, mit denen Perl selber kompiliert wurde. Hier muss man auf der Synology die entsprechenden Optionen mittels "perl -V" mit denen auf dem System vergleichen, auf denen man das Perl-Modul erstellt.
Abhilfe schafft hier "perlbrew", mit dem man sich ohne große Admin-Rechte verschiedene Perl-Versionen in seinem Home-Verzeichnis erstellen kann:
https://perlbrew.pl/Nun reichte es leider nicht, einfach nur mit
perlbrew install 5.24.0
die gleiche Perl-Version wie auf meiner DS218+ zu installieren, denn nach längerer Suche hatte ich feststellen müssen, dass die Option "USE_ITHREADS" nicht in perl -V enthalten war, also dass kein Thread-Support eingebaut war. Auch eine Installation mittels der Option "--both threads" hatte nicht den gewünschten Erfolg gebracht.
Erst als ich mit
perlbrew install 5.24.0 -Dusethreads
explizit Threads habe einkompilieren lassen, konnte ich die dann über
perl -MCPAN -e 'install Device::SerialPort'
installierten Verzeichnisse auf die DS218 kopieren und nun läuft alles prima.
Wichtig ist dabei allerdings vermutlich, dass das Quell- und Zielsystem die gleiche Prozessorarchitektur verwenden. Bei den neueren DiskStations, die eine Intel-64-Bit-Architektur verwenden, ist das aber kein Problem.
Um zu schauen, wohin man die erstellten Verzeichnisse kopieren muss, braucht man auf der DS nur den Befehl
perl -e "use Device::Serial"
einzugeben. Wenn das Modul nicht installiert ist, werden in der nachfolgenden Fehlermeldung die möglichen Verzeichnisse angezeigt. Es empfiehlt sich, das "site_perl" Verzeichnis zu verwenden.
Für alle, die eine DS218+ oder wo ebenfalls eine Intel-64-Bit-Architektur mit Perl 5.24.0 werkelt, hänge ich das fertige Modul einmal an.
Viel Erfolg,
F.