Verständnisfrage:
Wenn ich mit cpan perl module installiere, kommen diese dann automatisch auch fhem zu gute oder hat fhem sein eigenes perl innerhalb der Verzeichnisstruktur?
Ich habe hier einen merkwürdigen Zustand, in dem MQTT devices sich nur definieren lassen, wenn ich perl fhem.pl fhem.cfg per hand starte. Starte ich per init-script, dann kommt error loading module MQTT.
hier der Inhalt des init.scripts:
pi@raspberrypi ~ $ cat /etc/init.d/fhem
#!/bin/sh
# description: Start or stop the fhem server
# Added by Alex Peuchert
### BEGIN INIT INFO
# Provides: fhem.pl
# Required-Start: $local_fs $remote_fs
# Required-Stop: $local_fs $remote_fs
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: FHEM server
### END INIT INFO
set -e
cd /opt/fhem
port=7072
if test "$2" != "noaptmark"; then
apt-mark hold fhem > /dev/null
fi
case "$1" in
'start')
echo "Starting fhem..."
# if you need to start hmland for use with
# Homematic, please start the hmland daemon
# like this (please use correct path and port,
# depending on your installation!)
#
# /opt/hmcfgusb/hmland -d -p 1234 -r 0
#
perl fhem.pl fhem.cfg
# if you want to use configDB for configuration,
# use this command to start fhem:
#
# perl fhem.pl configDB
#
# and remove/comment the above line including fhem.cfg
RETVAL=$?
;;
'stop')
echo "Stopping fhem..."
# if you want to stop hmland during fhem stop:
# pkill hmland
pkill -U fhem perl
RETVAL=$?
;;
'status')
cnt=`ps -ef | grep "fhem.pl" | grep -v grep | wc -l`
if [ "$cnt" -eq "0" ] ; then
echo "fhem is not running"
else
echo "fhem is running"
fi
;;
*)
echo "Usage: $0 { start | stop | status }"
RETVAL=1
;;
esac
exit $RETVAL
So kam ich auf die Frage, ob ich vielleicht zwei perl im System habe und nur in dem einen die Module richtig sind.
Was meint Ihr?
ZitatSo kam ich auf die Frage, ob ich vielleicht zwei perl im System habe und nur in dem einen die Module richtig sind.
gib auf deinem System doch mal perl -v ein, die Ausgabe sagt alles :-)
Oder wenn du mehr wissen willst perl -V
VG
Frank
Ich verstehe aber noch nicht ganz, wie mir das hilft:
root@fhem:~# perl -v
This is perl 5, version 20, subversion 0 (v5.20.0) built for armv7l-linux
Copyright 1987-2014, Larry Wall
Perl may be copied only under the terms of either the Artistic License or the
GNU General Public License, which may be found in the Perl 5 source kit.
Complete documentation for Perl, including FAQ lists, should be found on
this system using "man perl" or "perldoc perl". If you have access to the
Internet, point your browser at http://www.perl.org/, the Perl Home Page.
Das sagt dir aber das es Perl nur einmal, in der angezeigten Version auf deinem Host gibt.
Ah, OK! Danke!
Hallo,
CPAN ist ein Repository für Perl-Module. Weitere Erläuterungen findest Du mit googeln. Bitte poste doch mal Dein Fhem Startrscript.
Grüße Jörg
Den Startscript hat er doch schon im ersten Beitrag gepostet.
Mist :-\ übersehen.
Grüße Jörg
PS: Jetzt weiß ich auch wofür diese komische Scrollleiste ist ... :D
Ich habe die Lösung gefunden: in /usr/local/lib gab es perl5 und perl, eine Version 5.14 von irgendwann. Im @inc war diese aber auch drin, daher die Verwirrung. Ordner gelöscht, Perl sauber - läuft!
Also man kann ja auf einem System mehrere Perl Versionen betreiben. Wie installiert man dann mit Cpan neue Module? Hat Cpan so einen Ausgabe-Parameter, um das Perl zu wählen, für das man das Modul braucht?
in dem du jeweils das cpan tool verwendest das zu der entsprechenden perl version gehört.
das cpan tool ist selber in perl geschrieben und holt sich pfade und umgebung aus dem perl mit dem es gestartet wird.
es macht aber auf normalen plattformen keinen sinn mehrte Perl versionen nebeneinander zu betreiben.
eine ausnahme sind eventuell die synology nas systeme bei denen das system perl eingeschränkt ist und beim update ungefragt eigene änderungen überschreibt.
eine zweite ausnahme sind eventuell entwicklersysteme die das verhalten unter älteren perl versionen testen wollen.
gruß
andre
Langsam gehen mir die Lichter auf, vielen Dank! Wie ist es mit der debian Standardkonfiguration? Da ist doch auch ein Perl enthalten, richtig? Ist es nun ratsam sein fhem mit einem eigenen perl (in /opt/fhem oder in /usr/local/lib) zu betreiben oder kann man getrost das System-Perl nehmen?
ich denke auf normalen systemen kannst du das mit gelieferte perl verwenden und erst dann etwas selber machen wenn es damit unlösbare probleme gibt.
Ok, danke!