Doorpi Service kann nicht gestartet werden

  • Hi,


    nachdem der Service vom doorpi leider nicht automatisch startet, wollte ich den Service manuell einmal starten zum prüfen. Leider erhalte ich folgende Fehlermeldung. Kriege das alleine irgendwie nicht gelöst. hat jemand eine Idee? Vielen Dank


    pi@raspberrypi:~ $ sudo systemctl start doorpi


    ● doorpi.service - LSB: DoorPi

    Loaded: loaded (/etc/init.d/doorpi; generated)

    Active: failed (Result: exit-code) since Fri 2021-03-19 21:20:33 GMT; 4min 24s ago

    Docs: man:systemd-sysv-generator(8)

    Process: 876 ExecStart=/etc/init.d/doorpi start (code=exited, status=1/FAILURE)


    Mar 19 21:20:33 raspberrypi doorpi[876]: File "/usr/local/lib/python2.7/dist-packages/daemon/runner.py", line 119, in __init__

    Mar 19 21:20:33 raspberrypi doorpi[876]: app.pidfile_path, app.pidfile_timeout)

    Mar 19 21:20:33 raspberrypi doorpi[876]: File "/usr/local/lib/python2.7/dist-packages/daemon/runner.py", line 304, in make_pidlockfile

    Mar 19 21:20:33 raspberrypi doorpi[876]: lockfile = pidfile.TimeoutPIDLockFile(path, acquire_timeout)

    Mar 19 21:20:33 raspberrypi doorpi[876]: File "/usr/local/lib/python2.7/dist-packages/daemon/pidfile.py", line 40, in __init__

    Mar 19 21:20:33 raspberrypi doorpi[876]: super().__init__(path, *args, **kwargs)

    Mar 19 21:20:33 raspberrypi doorpi[876]: TypeError: super() takes at least 1 argument (0 given)

    Mar 19 21:20:33 raspberrypi systemd[1]: doorpi.service: Control process exited, code=exited, status=1/FAILURE

    Mar 19 21:20:33 raspberrypi systemd[1]: doorpi.service: Failed with result 'exit-code'.

    Mar 19 21:20:33 raspberrypi systemd[1]: Failed to start LSB: DoorPi.

  • deviloper

    Hat das Thema freigeschaltet.
  • Bei mir das selbe Problem. Im Trace läuft Doorpi unter Buster perfekt. Im Daemon keine Chance.


    Meine Fehler wie folgt:


    service doorpi start


    Job for doorpi.socket failed.

    See "systemctl status doorpi.socket" and "journalctl -xe" for details.

    Failed to start doorpi.service: Unit doorpi.service has a bad unit file setting.

    See system logs and 'systemctl status doorpi.service' for details.


    und bei systemctl status doorpi.service


    doorpi.service - DoorPi

    Loaded: bad-setting (Reason: Unit doorpi.service has a bad unit file setting.

    Active: inactive (dead)

    Docs: https://github.com/motom001/DoorPi/wiki


    Mar 20 19:49:29 raspberrypi systemd[1]: /usr/local/lib/systemd/system/doorpi.ser

    Mar 20 20:12:02 raspberrypi systemd[1]: /usr/local/lib/systemd/system/doorpi.ser

    Mar 20 20:12:03 raspberrypi systemd[1]: /usr/local/lib/systemd/system/doorpi.ser


    Gibt es hier ein allgemeines Problem?

    • Offizieller Beitrag

    hugoeugene: Das mit den für dich passenden Argumenten meinte, dass du die Konfigurationsdatei anhängen sollst ;) So hat er nicht deine doorpi.ini geladen, sondern eine hinterlegte Standardkonfiguration. Da das startet, gehe ich fast davon aus, dass etwas mit deiner doorpi.ini so nicht passt.


    Code
    doorpi_cli --debug --configfile /usr/local/etc/DoorPi/conf/doorpi.ini

    (--trace oder --debug, jenachdem wie viele Infos du brauchst bzw. du interpretieren kannst ;) ). Die Ausgabe davon kannst du dann hier nochmal hochladen.


    Falls der DoorPi-Service läuft, diesen vorher beenden:

    Code
    sudo systemctl stop doorpi.service
  • Hi deviloper, ach so meintest du das :)

    Ich habe DoorPi frisch installiert, daher ist meine doorpi.ini noch jungfräulich, hab da bisher noch nichts angepasst.

    Dein Befehl wirft ein paar warnings, aber keinen error, sehe auf anhieb nicht, warum der Service damit nicht läuft. Du hast sicher mehr Erfahrung, kannst du da etwas erkennen?

    Viele Grüße

    • Offizieller Beitrag

    Okay DoorPi startet also korrekt. Dann dürfte das Problem eher am nicht mehr vorhandenen Python 2.7 Support liegen. Mal sehen, wann wir da mal eine weiterentwicklung erreichen.

    Bis dahin, hätte ich folgende Idee:

    Code
    pip install service daemon lockfile pidlockfile

    bzw.

    Code
    sudo apt-get install python-deamon python-service python-lockfile python-pidlockfile
  • ...Befehlt konnte problemlos ausgeführt werden, hat aber leider am ergebnis nichts geändert :(

    Hast du vielleicht noch eine andere Idee?

    Ich habe parallel noch weiter recherchiert, aber die lösungsvorschläge sind alle mindestens 4 Jahre alt und passen nie so richtig.


    Zu der Bemerkung, es könnte an Python 2.7 liegen:
    Habe mal python2 -V eingegeben: Ja, es ist "Python 2.7.16" installiert.

    Dann habe ich python3 -V eingegeben und siehe da: Es ist außerdem "Python 3.7.3" installiert


    Danke für die Hilfe!

  • Da ich das Problem ja paralel zu hugoeugene darstellen kann:


    Der Pi startet ganz normal, das webfront ist ohne Aufruf vom Trace oder Debug nicht erreichbar.


    Demnach startet doorpi nur im daemon nicht, weder im autostart, noch manuell.


    Gibt es nicht die Möglichkeit python3.7 als Standard zu setzen und das Problem zu umgehen oder benötigt doorpi zwingend python2.7?

  • DoorPi braucht zwingend python 2.7, da wie schon erwähnt liblinphone mit Python3 nicht läuft.


    Das Problem beim Daemon ist auch nicht Python, sondern das in den neuen RPI-OS Versionen der Autostart umgestellt wurde.

    Man kann aber selbst einen Autostart anlegen. siehe hier


    Gruß
    Wal


    Kaum macht man es richtig, funktioniert es auch !

    4 Mal editiert, zuletzt von Wal () aus folgendem Grund: Beispiel hinzugefügt

  • Hallo WAL,


    hier meine doorpi.service:


    Habe mal eben meine Fragen zu den jeweiligen Positionen dahinter geschrieben


    [Unit]

    Description=DoorPi

    Documentation=https://github.com/motom001/DoorPi/wiki

    Requires=doorpi.socket

    After=doorpi.socket muss dieser dann raus?

    After=network.target sound.target



    [Service]

    User=pi

    Type=simple die beiden sollten so passen

    ExecStart=!!prefix!!/bin/doorpi --configfile !!cfgdir!!/!!package!!.ini muss der Pfad genau angegeben werden? Was ist mit der configfile?

    Environment=HOME=/var/lib/!!package!!

    WorkingDirectory=/var/lib/!!package!!

    Restart=always

    NotifyAccess=main

    WatchdogSec=4s


    Group=!!package!!

    SupplementaryGroups=audio

    SupplementaryGroups=gpio

    SupplementaryGroups=spi

    SupplementaryGroups=video

    DynamicUser=true


    CapabilityBoundingSet=

    AmbientCapabilities=

    NoNewPrivileges=true


    ProtectSystem=strict

    ProtectHome=true

    RuntimeDirectory=!!package!!

    StateDirectory=!!package!!

    LogsDirectory=!!package!!

    ConfigurationDirectory=!!package!!


    PrivateTmp=true

    PrivateDevices=false

    ProtectKernelTunables=false

    ProtectKernelModules=true

    ProtectControlGroups=true


    LockPersonality=true

    MemoryDenyWriteExecute=false

    RestrictRealtime=true

    RemoveIPC=true


    [Install]

    WantedBy=multi-user.target der EIntrag war bereits vorhanden





    Danke im voraus

  • Nicht vergessen:

    Code
    sudo chmod +x /etc/systemd/system/doorpi.service
    sudo systemctl enable doorpi
    sudo systemctl start doorpi

    mit

    Code
    sudo systemctl status doorpi

    kann man sehen ob der Service läuft.

  • Entschuldige - also DoorPi startet und sollte über die zuletzt angegebene Adresse auch erreichbar sein (http://raspberrypi/ oder IP) - falls das aus meiner Antwort nicht rüber kam. Ist dem nicht so?

    Der Start als Service scheiterte bisher, ist das unverändert?

    Ja, das ist korrekt, wenn ich DoorPi mit folgendem Befehl starte, läuft DorrPi und ist auch per IP und Browser erreichbar

    Code
    doorpi_cli --debug --configfile /usr/local/etc/DoorPi/conf/doorpi.ini

    Als Service lässt es sich im Augenblick leider nicht starten, das ist weiterhin unverändert auch nach "pip install service daemon lockfile pidlockfile". Dieser Befehl wurde zwar erfolgreich ausgeführt, hat das Ergebnis aber nicht beeinflusst.


    Vielen Dank an die Kommentare von Wal und Knutnoh, damit werde ich mich heute Abend nach Feierabend mal auseinandersetzen.

  • Nachdem das auch mit manuell angelegter .service Datei nicht hingehauen hat, habe ich nun kurzen Prozess gemacht und den Befehl

    Code
    @reboot sudo doorpi_cli --debug --configfile /usr/local/etc/DoorPi/conf/doorpi.ini

    in die Cron-Tabelle eingebunden


    Cron Tabelle kann man editieren mit

    Code
    sudo crontab -e 



    Ich kann als Linux Laie nicht einschätzen, ob das möglicherweise Nachteile hat, aber wenigstens funktioniert das nun mit dem Autostart und ich kann weiter machen.

  • eigentlich nicht Sinn der Sache, aber vielleicht kann einer der Cracks hier ausm Forum das Problem mal nachstellen und schauen.


    Habe ebenfalls die doorpi.service angelegt. Selbst mit nochmals neu aufgesetztem System --> keine Chance. Der Befehl:


    sudo systemctl start doorpi


    läuft sauber durch, jedoch gibt er mir bei sudo systemctl status doorpi dann weiterhin Fehler aus.