gelöst: deb-Paket funktioniert nicht - was mach ich falsch?

  • nach User-Aussagen klappt die Erstinstallation sowie auch Install nach Deinstall


    bei einer bestehenden Installation ist aber nach "drüber"-installieren einfach das Plugin-Verzeichnis weg ?


    nach mehreren Tagen mit diversen Versuchen bin ich ratlos


    Paket wird auf Linux-Mint 17 erstellt, habe inzwischen sogar die Komprimierungsart umgestellt, alles ohne Erfolg
    Besitzer und Gruppe der Verz und Dateien sind root, Rechte sollten auch stimmen

    Code
    fakeroot dpkg-deb -b -Z=gzip verz1 verz2
  • potsrm hatte ich schon mal raus (wegen löschen in Verdacht)
    leider muss auch postinst raus - offenbar funktioniert die Paketverwaltung noch nicht richtig?


    wie wäre hierfür das dbe-Äquivalent?

    Python
    from Screens.Ipkg import Ipkg
                   	from Components.Ipkg import IpkgComponent
                   	self.cmdList = [(IpkgComponent.CMD_INSTALL, { "package": self.dlfile })]
                   	self.session.openWithCallback(self.runUpgradeFinished, Ipkg, cmdList = self.cmdList)
  • die funktioniert schon nur darfst du viele dinge in den p* Scripten nicht mehr tun, das apt ist da viel strenger wie opkg. Nicht umsonst hat Ghost geschrieben das sicherheitshalber die p* Scripte auf Schwerkraft alle erstmal rausgeschmissen hat.


    Ausserdem werden sie jetzt auch beim updaten ausgeführt weil das ist dann wie ein deinstall der vorherigen Version (was wahrscheinlich das Directory löschen bei dir verursacht).


    Ich musste da auch einiges Anpassen damit es wieder so funktioniert wie ich wollte, aber wenn man es sauberer macht geht es auch wie früher.

  • naja, was soll denn daran problematisch sein?

    Bash
    #!/bin/sh
    echo "install webradioFS"
    if [ ! -d /etc/ConfFS ]; then
    	echo "webradioFS-install: make dir ConfFS"
    	mkdir -p /etc/ConfFS
    fi


    es ist ja so, alles, was ich einmalig im script ausführen kann, belastet das Plugin nicht - so muss ich diese nachfrage bei jedem Start durchführen
    warum dann aber keine Meldung sondern sang- und klanglos alles wech? das ist eher unprofessionell wie ich finde


    vor allem gibt es für mich ein Riesen-Problem dabei: ich will bestimmte Dateien nur anlegen, wenn noch nicht vorhanden - wie soll ich sowas ohne script lösen?


    PS
    kann jemand helfen, was deb-install aus dem Plugin heraus betrifft? (ich habe keine derartige Box um da genauer reinzuleuchten oder rumzutesten...)

  • ein directory in einem script anzulegen ist aber blödsinn - einfach das directory in die struktur machen die beim deb paket bauen da ist - dann wird es durch das installieren des Plugins auch angelegt.


    Installier dir mit BA ein Debian Wheezy auf die OE 2.0 Box, dann hast du ein volles apt-get und dpkg mit dem du es testen kannst.


    Das wheezy kann man obwohl BA fürs OE 2.0 nicht mehr funktioniert weiterhin mit ba.sh chroot betreten und ganz normal benutzen. Oder halt einen Linux PC mit Debian aufsetzen und dort ein OE 2.2 Image von DMM auspacken und das /usr/lib/enigma2 reinkopieren dann kannst du dort testen solange das Plugin nur pythin sachen ausliefert.

  • Zitat

    ein directory in einem script anzulegen ist aber blödsinn

    Zitat

    ich will bestimmte Dateien nur anlegen, wenn noch nicht vorhanden - wie soll ich sowas ohne script lösen? es geht dann ja da drum....

    das ist ja der entscheidende Punkt, das Verzeichnis kann ich auch in die Struktur nehmen, da hast recht
    edit: werde versuchen, das zu lösen indem ich ein zusätzliches Modul baue welches nur bei bedarf importiert wird
    (hebelt allerdings den Sinn und Zweck der scripte komplett aus, die sind ja genau für sowas gedacht)


    Zitat

    Installier dir mit BA ein Debian Wheezy auf die OE 2.0 Box, dann hast du
    ein volles apt-get und dpkg mit dem du es testen kannst.

    ein ziemlicher Aufwand, es kann mir doch sicher jemand sagen wie das mit einem deb-Paket zu lösen ist :confused_face:


    edit: Componenten des neuen system bzw. Restriktionen usw. bekomme ich da wohl eher auch nicht zu sehen, kann halt allenfalls dpkg testen, das geht aber auch auf meinem Linux

    Einmal editiert, zuletzt von shadowrider1 ()

  • naja, soll wohl eines von den vielen Geheimnissen bleiben (so wie auch eMusicPlayer..) :winking_face:
    wat mut dat mut, ich wollte eure neuen Boxen-Modelle unterstützen - persönlich brauche ich es nicht :smiling_face:

  • ich habe dir gesagt das du manche Dinge in einem deb nicht mehr tun sollst, ich habe zusätzlich die deswegen ganzen P* scripte in den meisten meiner Plugins bis auf Sonderfälle raufgeschmissen, weil das auch den Vorteil hat das man dann sogar *.deb bauen kann die sich auch mit opkg installieren lassen.


    Wenn man die Sachen aber alle beachtet, dann geht es aber auch mit deb Paketen sinnvolle Sachen in den p* scripten zu tun.


    Mein BA hat sogar ein ziemlich grosses und komplexes preinst und postinst, um sich das Device auf dem es sich installiert selbst zu suchen und sogar zu partitionieren und zu formatieren und das funktioniert mit einigen kleinen Anpassungen auch im OE2.2 weiterhin.


    ABER es wäre ohne box ziemlich schwer gewesen diese Kleinigkeiten anzupassen.


    Ich habe deswegen im OoZooN Board einen OE 2.2 Plugin Wunschthread aufgemacht. Wenn du dort das beste *.deb das du alleine zusammengebracht hast postest und mir sagst was damit für Probleme gemeldet wurden, dann kann ich es gerne versuchen es dir zu korrigieren, wahrscheinlich sind das eh nur Kleinigkeiten.

  • die install-Dateien habe ich rausgeworfen, hatte doch geschrieben dass ich einen weg finde es zu umgehen, das deb-Paket funktioniert nun offenbar
    was noch fehlt ist die Möglichkeit der autom. Installation/Update, welche ich wie oben bisher per ipk machen konnte


    irgendwie untergegangen ist wohl diese Frage
    (an mangelnder Hilfsbereitschaft deinerseits liegt es ja offenbar nicht)

  • Ich mache solche sachen schon länger mit if os.path.exists: in der autostart sektion von den Plugins, weil früher war es einfacher das in den /etc/init.d startup scripten zu machen, jetzt mit den service files gehört das eben anders gelöst. Wenn es länger dauert kann man es ja auch dann im enigma2 im Hintergrund erledigen lassen.

    Einmal editiert, zuletzt von Lost in Translation ()

  • jetzt habe ich es verpeilt, ich meinte das hier:

    Python
    from Screens.Ipkg import Ipkg
                   	from Components.Ipkg import IpkgComponent
                   	self.cmdList = [(IpkgComponent.CMD_INSTALL, { "package": self.dlfile })]
                   	self.session.openWithCallback(self.runUpgradeFinished, Ipkg, cmdList = self.cmdList)

    wie ich das mit den debs machen könnte?


    evtl. ist dir auch was bekannt, warum shotcast-streams diesen GStreamer decoder text/html - Fehler bringen ?

  • Ich habe jetzt mal den SoftwareManager(Plugin) im oe2.2 angesehen, da ist es prinzipiell genau so gemacht. Zudem habe ich die oe2.2 gegen die oe2.0 Version gedifft und nicht wirklich Unterschiede auf diese Installationsart gefunden.

  • leider funktioniert es auf diese Weise nicht


    wenn mir da eine Lösung angeboten wird, baue ich das gerne ein
    bis zu einer Lösung müssen die DreamOE-Nutzer, welche sich mit dem Installieren nicht auskennen, außen vor bleiben

  • scvhau in OoZooN's Userscrip Plugin das kann lokale debs installieren und nicht nur welche vom Feed, aber ich denke du bist trotzdem am falschen Weg, wenn man etwas braucht muss es über die dependencies des Pakets erzwungen werden und nicht vom Plugin nachinstalliert

  • es wird ein Update/Upgrade gemacht, sicherheitshalber und damit ich nichts übersehe halt komplett drüber installiert
    nachinstalliert wird da nichts, die depends sind ja im config


    Zitat

    scvhau in OoZooN's Userscrip Plugin

    nein im Ernst, ich fang jetzt nicht an das web zu durchsuchen wo ich das herbekomme - wie gesagt ich habe keine solche Box um mir das live anzusehen, zu testen oder mal was zu probieren - das muss ich ungeprüft auf die User loslassen


    man kann mir den benötigten Code geben oder es lassen, es ist im Userinteresse und nicht in meinem

  • Das Userscripts macht es so um ein deb zu installieren und alle dependencies vom Feed zu holen.


    Code
    cmd = "apt-get update; dpkg -i %s; apt-get install -f -y --force-yes"  % (self.kit)
    self.session.open(Console,_(title),[cmd])


    Statt der console damit du den output siehst kannst du natürlich auch einen container verwenden und es im Hintergrund beim Starten machen.


    Und ich hatte dir angeboten es für dich anzupassen :loudly_crying_face:

  • das mit der erst-Installation war nach deinen Hinweisen geklärt (dein Angebot) - es geht momentan nur noch um die Möglichkeit, aus dem Plugin heraus eine neue version zu installieren, und zwar wird die heruntergeladen nach /tmp, dann md5 verglichen ob der download korrekt war, und dann install ausgeführt
    dazu muss aber lokal installiert werden, denn die neuesten Versionen sind meist nicht auf dem feed


    sehe ich es richtig, das "self.kit" durch den Pfad /var/volatile/tmp/webradioFS..deb ersetzt werden kann und damit die Installation ausgeführt wird?
    dann wäre das Problem ja im Nu behoben


    (ach ja, angeworfen wird es nicht automatisch, ich lasse dem user die Wahl, es muss dafür natürlich eine Taste gedrückt werden - was aber am Prinzip ja nichts ändert)

  • ja auf self.kit muss einfach nur der Paketname mit pfad übergeben werden


    Es geht ja nur um den command string der muss so sein das er auch mit dpkg funktioniert:


    sprich vorher der feed mit apt-get update aktualisiert werden
    dann mit dpkg -i /pfad/paket.deb das paket installiert
    und dann anschließend mit apt-get -f install .... die Anhängigkeiten nachinstallieren


    Wenn es Probleme gibt ist dann aber die console sowieso besser, weil da sieht man die Fehlermeldung und kann ggf. damit das Problem rückmeldem


    ... fertig :grinning_squinting_face: