ein paar Bemerkungen, Fragen und Vorschläge zu den ebuilds

  • hauptsächlich mad
    Hi,


    linuxdvb-1.0.0.20030427, eine Kleinigkeit:
    mir ist aufgefallen, dass, wenn der logger angehalten wird, automatisch auch der dvb-Treiber entladen wird. Wird zwar vom vdrwatchdog wieder nachgeladen, und so oft startet stoppt man den syslog auch nicht manuell, aber das muss ja nicht sein;-). Vielleicht ersetzt du das "need logger" besser durch ein "use logger".


    Tja - und danach hat sich mein vdr aufgehängt und der watchdog hat's nicht gemerkt. Syslog wurde pro Sekunde 1x mit "vdr[3289]: switching to channel 1" zugemüllt. Konnte das jetzt allerdings nicht mehr reproduzieren.


    Ansonsten: großes Lob für die Ebuilds - hat wirklich gut geklappt.
    Nur: wo ist der Unterschied zwischen vdr (von mir benutzt) und vdr-wo? Habe auf die Schnelle nix darüber gefunden.


    Habe die Installation allerdings so umgemodelt, dass der vdr unter einer eigenen uid läuft.
    Kurz zusammengefasst, ohne Anspruch auf Vollständigkeit:
    - user+group vdr angelegt, Rechte von /etc/vdr geändert,


    - /etc/devfsd/dvb:
    ----------
    REGISTER ^dvb$ PERMISSIONS root.vdr 0755
    REGISTER ^dvb/adapter[0-1]$ PERMISSIONS root.root 0755 # vielleicht statt [0-1] besser [0-9] oder .? - das habe ich mir nicht genauer angesehen
    REGISTER ^dvb/adapter[0-1]/.*$ PERMISSIONS root.vdr 0660
    ----------
    - shutdown.sh mit visudo eingetragen
    /etc/conf.d/vdr (komische Sache, das mit dem Quoten):
    SHUTDOWN="\"/usr/bin/sudo /usr/local/bin/vdrshutdown.sh\""


    - "vdr" hinter das "su" beim Aufruf des daemons im Initscript eingetragen (gibt es einen besonderen Grund dafür, dass du den daemon mit einem su startest? - und ebenso: warum nicht mit start-stop-daemon?


    Wie wär's mit einer Variablen in /etc/conf.d/vdr für den user, unter dem der vdr gestartet werden soll? Dann sollte man neue Ebuilds für den Zweick einfach so übernehmen können.


    Und dann habe ich micht noch gefragt, ob /etc/vdr, da der vdr ja schreibend darauf zugreift, nicht defaultmäßig besser irgendwo unter /var/ aufgehoben wäre.


    grüße


    metrio

  • Hi,


    thatt´s much ;) aber mal der reihe nach.


    need/use logger ist unnütz da logger nicht benutzt wird, habs im cvs geändert.


    der watchdog erkennt im moment leider nur einen abgeschossenen (kein prozess mehr) vdr. Wenn Du dich ein bischen mit expat auskennst könnte man ja noch eine abfrage über port 2001 mit "stat disk" oder "chan" machen. Hab ich mal mit angefangen aber ist nicht fertig geworden.


    Danke!


    vdr ist vanilla (keinerlei Patches vorgesehen) und vdr-wo (working overloaded) kann per USE Variable einen ganzen haufen Patches einbauen.


    tricorder vdr # etcat uses vdr
    [ Found these USE variables in : vdr-1.1.30 ]
    [ Colour Code : set unset]
    + lirc
    - rcu
    - vdr_vfat
    tricorder vdr # etcat uses vdr-wo
    [ Found these USE variables in : vdr-wo-1.1.29 ]
    [ Colour Code : set unset]
    + lirc
    - rcu
    - vdr_AC3
    - vdr_analogtv
    - vdr_autopid
    - vdr_bitstreamout
    + vdr_elchi
    + vdr_osdteletext
    - vdr_sc
    + vdr_tech
    - vdr_vfat



    Die Doku zu sued vdr kannste ja vielleicht unter http://hierling.de/~martin/vdr/ eintragen ??


    Die komischen Quotes liegen daran das das Script (init) nicht davon ausgeht das blanks in der Konfig sind.


    Zu start-stop-daemon kann ich nur sagen. Versuchs und sag mir BITTE wie!! Ich habs 1000mal Versucht. Das prog (start-stop-daemon) übergibt die Parameter für Module nicht richtig. Das geht solange da nicht -P'mp3 mount=blah.sh' steht.


    User von VDR in conf.d/vdr würde etwas gegen die Art des Konfigfiles sprechen. (da sind nur übergabeparameter von vdr drin). Ist ja nicht mal das richtige config. Wenn aber allgemein VDR unter einem anderen User läuft kann man das mal richtig mit in die Ebuilds einbauen.



    Configs im /var .... hmmm.... ja richtig aber ... hmmmm .... so richtig schreibend ja auch nicht. ZUmindest in dem Sinne des VAR Verzeichnisses. Und dann müsste da alles ins var da vdr da nicht unterscheiden kann und 95% der Configs sind ro.
    Würde ich gerne noch ein paar Meinugen zu abwarten.


    gruss mad

  • Hi,


    emerge -s expat sagt mir, dass das ein xml-parser ist. Du meinst expect, oder? Habe dann pexpect (für python) gefunden, und nach einem kurzen Versuch scheint es ziemlich problemlos zu sein, da ne Abfrage zu machen.
    Aber zwei Dinge: Was tun, wenn der port belegt ist? Zusätzlich noch mit netstat (oder womit sonst?) nachgucken?


    Und bei dem Fehler, den ich hatte, hat, wenn ich ich recht erinnere, svdrp sogar noch reagiert und versucht, den Kanal umzuschalten. Allerdings ohne Erfolg. Bisher auch nicht mehr vorgekommen.
    Also wenn du meinst, dass es dennoch Sinn macht, dann kann ich gerne noch ein wenig dran rumfeilen. input welcome!


    Dann ist mir aufgefallen, dass der Timeout des Watchdogs bei 8 Sekunden liegt. Irgendwo hier im Forum hieß es, dass 60 Sekunden angemessen wären, weil vdr zuweilen auf nen Epg-scan warten muss.. aber evtl. bei neuen Versionen nicht mehr. Sind die 8 sec. in Ordnung?


    thx für die Info über die Versionen. Glaube, der vanilla reicht für meine Zwecke erst mal:-)


    Das mit dem wiki geht klar. Mag aber noch ne Woche dauern.


    > Die komischen Quotes liegen daran das das Script (init) nicht davon ausgeht das blanks in der Konfig sind.


    schon klar, aber ich war froh, dass ich das mit der Variablen hingekriegt habe - im Gegensatz zu meinen Modifikationsversuchen im Script selbst;-)


    > Zu start-stop-daemon kann ich nur sagen. Versuchs und sag mir BITTE wie!!
    nene - lass mal. Hatte mir schon so was gedacht;-)
    Bleibt noch die Frage warum das "su" an sich da drin ist. Wenn es seinen Grund hat, dann wüsste ich das gerne - um was zu lernen:-).


    > User von VDR in conf.d/vdr würde etwas gegen die Art des Konfigfiles sprechen. (da sind nur übergabeparameter von vdr drin). Ist ja nicht mal das richtige config.
    Versteh ich nicht. So ganz naiv, ohne weitere Recherche, habe ich mir gedacht, in /etc/conf.d/* ist dafür gut, die Startscripte mit Variablen zu füttern?


    > Wenn aber allgemein VDR unter einem anderen User läuft
    > kann man das mal richtig mit in die Ebuilds einbauen.
    Ist da von Klaus Schmidinger was geplant, oder wie meinst du das?

    > Configs im /var .... hmmm.... ja richtig aber ... hmmmm .... so richtig schreibend ja auch nicht. ZUmindest in dem Sinne des VAR Verzeichnisses. Und dann müsste da alles ins var da vdr da nicht unterscheiden kann und 95% der Configs sind ro.
    Würde ich gerne noch ein paar Meinugen zu abwarten.

    War mir auch schon durchn Kopf gegangen. Aber timers.conf und setup.conf wären imo im var-verzeichnis sehr gut aufgehoben. Evtl. noch channels.conf. Sind schon mehr als 5 %;-). Genauso gehört svdrphosts.conf nach /etc. Ist so oder so nicht sauber, aber da kann man wohl als user nix dran ändern:-(.


    grüße


    metrio

  • Alter, so lange Texte hier, richtig ansträngend *freu*


    expect, richtig. pexpect?? bin kein freund von python. Die bauen alles was es schon gibt mit noch nen p davor..... aber da gentoo phyton vorraussetzt (portage) mag das recht sein.


    Watchdog Script hat 8 sec weil das im moment nur anspringt wenn der vdr ganz weg ist. Einen Test über den Port 2001 sollte einen längeren timeout haben.


    ich stelle mir das so vor das expect eine telnet verbindung aufbaut auf port 2001 und 1 oder 2 sachen testet und die response zeit auswertet und ob es zu einem timeout kommt. Wenn keine statusmeldung kommt (nach 60sec) dann restart von vdr. Ich hab mal son script für cisco router geschrieben, aber leider ohne timeout krams....
    Wenn das expect script (oder pexpect) lüpt bau ich das in den watchdog ein.


    der su ist da drin weils auch ohne su nicht ging! Weiss der Teufel warum.


    VDR unter einen anderem User ist ebuild sache. VDR kann es, nur um das als default ins Gentoo reinzubekommen müsste das ebuild geändert werden.



    gruss mad

  • Nachgefragt:


    die devfs Geschichte? Waren bei dir die devices vorhanden nach der installation der dvbtreiber?
    Hast du die devfs.d Sachen nur wegen der Filerechte gemacht? oder warum?

    Übrigens gibt es mehrere dvb net devices:
    dvb_net.h:#define DVB_NET_DEVICES_MAX 10
    Ich glaube das auch mehrere !net devices möglich sind. Ich würde die regex auf [0-9] erhöhen. Ich hab zumindes screenshots von maschinen mit 4 KArten gesehen ;)


    gruss mad

  • Ich mag python weil die Syntax ziemlich klar ist (im Gegensatz zu perl oder bash), und es im Grunde genommen ein Lisp-Dialekt ist:-). Hab' in python aber auch nur ein paar Grundkenntnisse.


    Stimmt - dumme Frage, das mit den Sekunden..


    Gut - ich ich mach das mal mit dem pexect. Also: du rufst das script über den Watchdog auf, und spätestens nach 60 Sekunden beendet sich das Script und gibt entweder 0=ok oder was anderes zurück?


    > VDR unter einen anderem User ist ebuild sache. VDR kann es, nur um das als default ins Gentoo reinzubekommen müsste das ebuild geändert werden.

    Das hatte ich doch vorgeschlagen!? Wie schon im ersten Posting gesagt: ne Variable für den user wäre schon mal n Anfang und würde das normale Ebuild nicht stören. Könnte dann ein Readme dazu schreiben/aus dem wiki übernehmen. Hm - user+group vdr per ebuild anlegen wäre bestimmt auch nicht schlimm, und die Files für den dvfsd dürften ebenfalls nicht stören. Werde mir bei Gelegenheit mal deine Anleitung zu den ebuilds genauer ansehen. Aber erst mal die anderen Sachen machen.


    Die devices waren waren nach dem emergen/laden des Treibers vorhanden. [0-9] klingt vernünftig. Ja - nur wegen der Rechte. Ohne ging's erwartungsgemäß nicht, und ne Vorlage für 1 device hatte ich irgendwo ergoogelt.


    grüße


    metrio

  • Hi,


    ein erster Ansatz. geht auch ohne externes telnet und pexpect ganz gut.
    Habe mal jedem expect einen timeout von 60 Sekunden gegeben.
    Von einem definierten Zeitkontingent nach jedem Befehl was abzuziehen dürfte sich als schwierig erweisen, und es macht wohl auch wenig Sinn.
    Was stört: bei jedem connect ein Eintrag im syslog


    Und es ist vielleicht geschickter, das ganze innerhalb von python in einer Endlosschleife (Parameterübergabe sekunden) zu verpacken, und es nur dann aussteigen zu lassen, wenn ein Fehler aufgetreten ist.


    Am besten wäre es wohl, einen Kanal umzuschalten, und dann auf die Ausgabe zu warten. Aber wie macht man das, ohne dass es den Benutzer evtl. stört?


    Abfrage von netstat braucht LANG=en. Kann man das bei einem Aufruf im Initscript als gegeben annehmen?



    grüße


    metrio

  • Hi,


    habe gestern das portage-update [edit] und baselayout [/edit]
    gemacht, und seitdem(?) funktioniert vdrwatchdog.sh nicht mehr. Lenke ich die Ausgabe der dvb/vdr start/stop/zap-Aufrufe um, bekomme ich dies:
    /sbin/runscript.sh: line 27: /softlevel: No such file or directory
    /sbin/runscript.sh: line 384: wrap_rcscript: command not found
    /sbin/runscript.sh: line 385: eerror: command not found


    kann das noch jemand beobachten? Riecht nach fehlenden Umgebungsvariablen, denn von der Kommandozeile aus funktionieren die Aufrufe ganz normal.


    Außerdem gibt es noch /lib/init.d/started/vdr. Killt man den vdr, dann wird das nicht gelöscht, und ein erneutes
    /etc/init.d/vdr start
    * WARNING: "vdr" has already been started.
    /etc/init.d/vdr stop
    * Stopping vdr (1.1.30) - The Video Disk Recorder...
    * Failed to stop vdr.
    usw...
    Wird das beim/vorm Aufruf des wachtog abgefangen, oder sollte man die started-files in vdrwatchdog.sh löschen?
    Da ich mir das genauer ansehen wollte, bin ich überhaupt erst auf die Sache mit runscript.sh gestoßen.


    grüße


    metrio

  • Hi,


    ah - und ich hatte mich schon gefragt, wofür dieses "zap" gut ist "Kanal umschalten??" und nix gefunden. - jetzt weiß ich es;-).
    Mal gespannt, ob du den Fehler jetzt auch hast....


    grüße


    metrio

  • Hi,


    tricorder root # epm -q portage
    portage-2.0.47-r10
    tricorder root # epm -q baselayout
    baselayout-1.8.5.9


    und die Ausgabe des vdrwatchdog.sh liefert:

    Code
    tricorder bin # tail -f /tmp/vdrwatchdog.log 
    7G  [ ok ]g vdrwatchdog...
     * Stopping vdr (1.1.31-wo) - The Video Disk Recorder...
    7G  [ !! ]to stop vdr.
    
    
     * Manually resetting vdr to stopped state.
    7G  [ ok ]ng DVB Modules...
    7G  [ ok ] DVB Modules...
    7G  [ ok ]g vdr (1.1.31-wo) - The Video Disk Recorder...


    doofe Sonderzeichen, aber ansonsten funzts.


    Wie sieht das mit deinem Wathdog aus, kann der das nicht mit überprüfen? wenn kein connect auf 2001 möglich dann ist auch warscheinlich kein prozess da -> restart. Dann brauchen wir nur das phyton script.


    gruss Mad

  • xerxes root # epm -q portage
    portage-2.0.48_pre6
    xerxes root # epm -q baselayout
    baselayout-1.8.6.7


    Warum habe ich höhere Versionen?


    Am überpfüfen vom vdr liegt das ja nicht mal - dein Watchdog versucht, die Initscripts aufzurufen, und scheitert daran, dass /etc/runscript.sh dabei Funktionen nicht findet, die in /sbin/functions.sh definiert sind - wahrscheinlich weil die Variable RC_GOT_FUNCTIONS in /etc/init.d/vdrwatchdog implizit exportiert und an vdrwatchdog.sh übergeben wird, die Funktionen selbst aber nicht den Weg über vdrwatchdog.sh nehmen. Irgendwas in der Art.


    : ganz oben in funscript.sh steht:
    [ "${RC_GOT_FUNCTIONS}" != "yes" ] && source /sbin/functions.sh


    War das vorher anderst? Mal die Variable in vdrwatchdog.sh unsetten. Kann aber im Moment aber nix probieren, da ne Aufnahme läuft.


    grüße


    metrio

  • hi,


    ah - daher komen diese Versionen. Aber wenn man das ~x86 nicht drin hat, dann gib's doch keine systemspezifischen builds, oder habe ich da was falsch verstanden?


    ähm, tja - ich meinte runscript.sh


    Und ich wollte schon fast schreiben, dass ich nicht mal weiß, ob der Name deines Rechners in der Aufnahme schon vorkommt oder nicht;-).


    Bin mal grad' am gucken, wie ich nen kompletten watchdog in python hinbekomme. Also falls du noch irgendwelche Vorschläge hast....


    grüße


    metrio

  • hi,


    wenn in vdrwatchdog.sh ganz am anfang


    unset RC_GOT_FUNCTIONS RC_GOT_SERVICES \ RC_GOT_DAEMON


    einfüge, dann geht's.


    Kann wohl nix schaden, wenn du das in den ebuild übernimmst.


    grüße


    metrio

  • Hi


    metrio


    Also ich würde das ACCEPT_KEYWORDS rausnehmen, sonst holst du dir im Laufe der Zeit ein Haufen unstable Packages rein. Wenn du was unstables installieren willst (z.B. VDR :) ) dann mach das lieber temporär.


    Martini

  • Hi,


    danm, funscript.sh == runscript.sh , da hätte ich auch selber drauf kommen können ....


    Du kannst vdr installieren mit
    ACCEPT_KEYWORDS="~x86" emerge vdr
    Damit ist nur vdr aus dem unstable Tree, nicht aber die ganze distri.
    Also ich bau das in die ebulids ein wenn das im stable zeug auch auftaucht, ansonsten würde ich da erstmal warten ...


    zu dem watchdog hab ich eigendlich keine ideen mehr ausser das besprochene.
    - schauen ob der prozess da ist (alle ca. 10 sec, wegen restart aus dem menu)
    - schauen ob der proz reagiert auf "chan" und/oder "stat disk" alle 30 sec? oder 60?
    Dummerweise sieht mal glaub ich jeden connect im OSD, oder? Das wäre doof. evt. sollte man vdr patchen das connects von localhost nicht im osd angezeigt werden.


    das wars von mir ....


    gruss mad

  • Hi,


    ok - dann werde ich den Ratschlag von euch beiden mal beherzigen und ~x86 aus meinen Kisten rausmachen:-).


    Auf meinem Display sehe ich bei den Connects nichts. Also grün.


    Ich mache ne Konstante/Übergabeparameter für die Wartezeit in Sekunden nach jedem prozess-check, und nen Multiplikator für das Telnet. Andernfalls würde es etwas trickreich werden. Also nach jedem nten prozess-check wird ein Telnet gemacht - und erst mal abgewartet, timeout ebenfalls einstellbar.


    Wenn währenddessen der vdr abschmiert, dann liefert der Telnet-Check direkt nen Fehler - gerade ausprobiert.


    grüße


    metrio

  • Hi,


    im Anhang (hoffe mal, der kommt rüber) der Watchdog. Scheint ganz gut zu laufen: Habe mal die "seconds" auf 0,5 runtergesetzt und drei Watchdogs gleichzeitig gestartet (neustart-funktion natürlich auskommentiert): svdrp-mäßig gibt das keine Probleme. Vielleicht sind auf dem ein oder anderen System noch n paar Parameteränderungen angebracht.


    Also: Tester gesucht;-)


    grüße


    metrio

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!