deb Dateien erstellen / eigener Feed / Programme kompilieren / PHP, MySQL und Nginx Server

  • Nachdem ich Stunden damit verbracht habe auf diversen Seiten alle Informationen zusammenzutragen um deb Dateien erstellen zu können, bzw. diese dann auf einem Feed beizustellen, möchte ich nun die Erkenntnisse teilen.


    1. DEB Dateien entpacken/erstellen


    Das einzige was im OE 2.5 für das Erstellen der DEB Dateien direkt auf der Dreambox fehlt, ist das volle tar statt dem von der Busybox, aber das kann man nachinstallieren

    Code
    apt-get install tar


    Noch eine kleine Anmerkung: Nach dem Installieren des tar wird der busybox link zum tar entfernt, daher sollte man das tar Paket NICHT mehr deinstallieren wenn euch das Image lieb ist, denn ohne tar funktioniert die Paketverwaltung nicht mehr.


    Um die Struktur zu sehen, kann man eine ähnliche Datei von einem Feed herunterladen, also wenn ich einen Skin erstellen will, lade ich mir mal einen Skin herunter und entpacke diesen um die volle Struktur zu erhalten.


    Code
    cd /media/usb
    apt-get download -d packetname
    dpkg-deb -R packetdateiname.deb directory1


    mit diesem Beispiel befindet sich nun im Verzeichnis "directory1" der Aufbau der Dateien bzw. auch der Ordner "DEBIAN". In diesem Ordner sind die Dateien je nach Wunsch anzupassen. Siehe auch Quelle.


    Anschließend kann die Datei wieder zu einer deb Datei umgewandelt werden und wie gewohnt installiert werden.


    Code
    dpkg-deb -b directory1


    womit man eine directory1.deb erhält


    2. Feed erstellen


    Vorausgesetzt man hat einen laufenden Webserver (hier gehe ich nicht näher darauf ein) können wir nun mit dem Feed starten. Dafür installieren wir ein paar Pakete und kopieren noch ein paar Dateien



    Und installiert die unten angehängte Pakete:

    Code
    dpkg -i perl-module-config-file-1.50_armhf.deb
    dpkg -i dpkg-sig-0.13.1+nmu2_armhf.deb


    Jetzt wird es tricky. Um den Feed als vertrauenswürdig zu erhalten, müssen wir Dateien signieren. Den notwendigen Schlüssel erzeugen wir uns und fügen ihn anschließend der DM900 hinzu. Wer es nachlesen will, hier die Quelle.
    Damit genug zufällige Bytes entstehen können, musste ich 2 Terminals öffnen. In einem startete ich folgenden Befehl und führte ihn nach Ende wieder aus (Pfeil nach oben und Enter Taste)

    Code
    find / > /dev/null


    Im zweiten Fenster starten wir

    Code
    cd /media/usb
    gpg --gen-key


    Geben ein (nach jeder Eingabe Enter drücken)

    • 5
    • 4096
    • 0
    • y
    • Repository
    • (keine Eingabe, nur Enter drücken)
    • (keine Eingabe, nur Enter drücken)
    • o
    • (gewünschtes Passwort)
    • (gewünschtes Passwort)


    Danach sollten wir den Schlüssel haben :winking_face:


    Jetzt herausfinden wie er heißt

    Code
    gpg --list-keys


    und die Zahlen/Buchstabenkombi merken (zB C0000CCB)
    danach den Public Key exportieren mit der gemerkten Nummer

    Code
    gpg --output keyFile --armor --export C0000CCB


    Nun können wir uns den Schlüssel importieren um den Feed auch als vertrauenswürdig zu erhalten

    Code
    apt-key add keyFile


    Nun erstellen wir uns einen Ordner wo wir alle deb Dateien ablegen werden, legen die Dateien hinein und wechseln in das Verzeichnis

    Code
    mkdir debian
    cd debian


    Nun werden wir in den einzelnen Schritten die deb Dateien signieren (mit dem oben gewählten Passwort!), und danach die Packages und Release Dateien erzeugen.

    Code
    dpkg-sig --sign builder meinerstesdebfile.deb
    apt-ftparchive packages . > Packages
    gzip -c Packages > Packages.gz
    apt-ftparchive release . > Release
    gpg --clearsign -o InRelease Release
    gpg -abs -o Release.gpg Release


    Fast geschafft :kaffee:


    Jetzt können wir die Dateien auf den Webserver legen, können zB den gleichen Unterordner "debian" verwenden. Folgende Dateien müssen am Webserver liegen:

    • meinerstesdebfile.deb (natürlich eure deb bzw. auch mehrere deb's)
    • InRelease
    • keyFile (optional, erkläre ich später)
    • Packages
    • Packages.gz
    • Release
    • Release.gpg


    3. Feed an der Dreambox bekanntmachen


    Der letzte Part ist relativ leicht, dazu erstellen wir eine Datei mcpat.list (oder wie ihr sie auch nennen wollt) unter /etc/apt/sources.list.d/ mit folgenden Inhalt:

    Code
    deb http://ipoderadresseeureswebservers/debian ./


    Danach geht ihr in das BP unter Addons und ihr solltet euer Depfile finden können (am besten geht ihr gleich unter "Alle")...


    4. Feed mittels deb Datei verteilen (optional)


    Wer will kann seinen Feed auch verteilen, dafür habe ich schon mal oben das nötige keyFile auf den Webserver gelegt. Die Struktur ist im Anhang, muss natürlich angepaßt werden, sollte selbsterklärend sein, schaut einfach in alle Dateien rein... Danach erstellt ein deb-File (siehe ganz oben) und los gehts...



    Bei Fragen einfach Fragen, ich hoffe für den ersten Wurf ist es verständlich...


    Gruß
    MCPat

  • 5. Auf der Box kompilieren


    Nachdem wir schon DEB's erstellen und am eigenen Feed verteilen können, fehlt nur mehr selbst Programme auf der Box kompilieren zu können...
    Nachdem ich Stunden damit verbracht habe um ein schlankes Paket zu erstellen, möchte ich nun die Erkenntnisse teilen.


    Auf der Box sind ein paar Pakete vorab zu installieren:

    Code
    apt-get install coreutils ncurses grep wget libz-dev make binutils libssl1.0.0 openssl openssl-dev libcrypto1.0.0 libusb-1.0-0 libusb-1.0-dev
    apt-get -f install


    Danach nehmt meinen neuen Feed (Datei im Anhang), macht ein Update und installiert meine Pakete:

    Code
    dpkg -i gp-feed-build_1.0-r0.1_armhf.deb
    apt-get update
    apt-get install subversion libpcsclite1 libccid dialog sshpass upx-ucl
    apt-get install enigma2-plugin-systemplugins-mcpat-build-essentials
    apt-get -f install


    Ich habe GCC 5.3.0 kompiliert, läuft soweit, hab zum Test alle benötigten Programme welche nicht am Feed liegen und auch ein nicht näher genanntes Programm kompiliert.


    Noch eine kleine Anmerkung: Nach dem Installieren der Pakete vom offiziellen Feed werden einige busybox links entfernt (zB bei "wget" um eines zu nennen), daher sollte man die Pakete NICHT mehr deinstallieren wenn man keine unerwünschten Folgen im Image haben möchte. Das gilt nicht für meine Pakete, da wird nichts am System herumgerührt...


    Bei mir läuft es für meine Zwecke, vielleicht gebt ihr mir Bescheid wie es bei euch läuft und etwaige Fehlermeldungen?! Alle unten genannten Programme habe ich bereits mit GCC 5.3.0 kompiliert und sollten soweit laufen.


    Im Feed enthalten:

    • gcc-5.3.0 (enable-languages=c,c++, with-float=hard, disable-softfloat, with-system-zlib, disable-multilib)
    • dialog-1.3
    • subversion-1.9.5-r3 (nutzt meine apr und apr-util da ich UTF8 Fehler hatte, k.A. warum...)
    • libapr1-1.5.2-r1
    • libapr1-dev-1.5.2
    • libaprutil1-1.5.4-r2
    • libaprutil1-dev-1.5.4
    • libserf1-1.3.9-r2
    • libserf-dev-1.3.9
    • upx-ucl-3.94-git-483db31acd0a (ucl-1.03, zlib-1.2.8, LZMA SDK 4.43)
    • libucl1-1.03
    • libpcsclite-1.8.20-r1 und libccid-1.4.26-r1
    • sshpass-1.0.6
    • autoconf-2.69-r1
    • podlators-4.09
    • texinfo-6.3
    • dejagnu_1.6.1
    • expect-5.45
    • tcl-8.6.6
    • ssmtp-2.64-r2 (patched by me and debian patches - siehe auch ssmtp on GIT)
    • mailutils-3.1.1
    • automake-1.15-r1
    • help2man-1.47.4
    • lzma-dev-16.04
    • perl-module-pod-pod2html-5.22.1-r1
    • perl-module-pod-pod2man-5.22.1
    • perl-module-pod-pod2text-5.22.1
    • cmake-3.7.2
    • Perl-Module-xml-parser-2.44
    • Intltool-0.51.0
    • Pkg-config-0.29.1
    • gdb-7.12.1
    • dpkg-sig-0.13.1+nmu2
    • perl-module-config-file-1.50
    • perl-module-test-pod-coverage-1.10
    • perl-module-test-Pod-1.51
    • inotify-tools_3.14-git
    • gperf-3.1
    • gc-7.6.0
    • guile-2.1.7
    • guile-dev-2.1.7
    • libunistring0-0.9.7
    • libunistring0-dev-0.9.7
    • libiconv-1.15
    • libiconv-dev-1.15
    • autogen-5.18.12
    • nginx1-1.11.12 (with openssl 1.1)
    • openssl1-1.1.0e
    • openssl1-dev-1.1.0e
    • openssl1-engines_1.1.0e
    • libssl1.1_1.1.0e
    • libcrypto1.1_1.1.0e
    • apache2-1_2.4.26-dev (with openssl 1.1 support)
    • libcurl41_7.53.1 (with openssl 1.1)
    • curl1_7.53.1 (with openssl 1.1)
    • curl1-dev_7.53.1 (with openssl 1.1)
    • re2c-0.16
    • libmysqlclient20_5.7.17 (getestet mit nginx >= 1.11.12 - siehe oben)
    • mysql-5.7.17 (getestet mit nginx >= 1.11.12 - siehe oben)
    • mysql-dev-5.7.17
    • php-fpm1_7.1.3 (getestet mit nginx >= 1.11.12 - siehe oben)
    • php-fpm-apache21_7.1.3
    • php-phar1_7.1.3
    • php-pear1_7.1.3
    • php-modphp1_7.1.3
    • php-cli1_7.1.3
    • php-cgi1_7.1.3
    • lynx-cur_2.8.8dev.12
    • logrotate-3.11.0
    • php1-dev_7.1.3
    • php1_7.1.3
    • libgd3-dev-2.1.1 (wurde vom Originalfeed entfernt...)
    • libmcrypt4-dev-2.5.8 (wurde vom Originalfeed entfernt...)

    Es werden keine vorhandenen Dateien überschrieben!


    Viel Spaß and happy coding
    MCPat

  • Beispiel für das Kompilieren von Progammen anhand stbup:
    Angehängte Dateien in ein Verzeichnis packen, danach kompilieren

    Code
    gcc stbup.c -o stbup


    Ergebnis ist ein fertiges "stbup", mittels

    Code
    ldd stbup


    kann man kontrollieren ob alle libs gefunden werden.


    Configdatei und S80uptime anpassen und danach starten mit

    Code
    ./S80uptime start
  • 6. PHP und MySQL auf der Dream


    Nachdem wir jetzt schon viel gelernt haben, geht es weiter mit PHP/MySQL/Nginx auf der DM900. Ich weiß, die Box stößt da bald an die Grenzen, aber zum Testen einer eigenen Wordpress Seite funktioniert es bei mir ganz gut.


    Um die Standardports verwenden zu können (sofern man das will), sollte man das Webinterface der Box auf andere Ports legen (zb 8080 für den http Zugang und 8443 für den https Zugang).


    Danach installieren wir uns die notwendigen Pakete (vorausgesetzt ihr habt meinen Feed von oben installiert). Dabei ist zu beachten, dass das php-fpm1 Paket und die MySQL Datenbank sehr groß sind und ich daher einen Teil auf /media/usb schreibe. D.h. ihr benötigt einen USB Stick auf /media/usb gemountet oder (wenn ihr den Speicherplatz der Box belegen wollt) zumindest einen Ordner /media/usb.
    "Mein" Nginx nutzt Openssl 1.1.0 und um die vorhandene offizielle Version mit meiner Version nicht zu überschreiben heißt das Paket "nginx1".
    Wenn das alles klar und ok ist, dann installiert man wie folgt:

    Code
    apt-get install nginx1 php-fpm1 mysql
    apt-get -f install

    Beachtet, dass mysql nun automatisch auf /media/usb eine Datenbank ohne Passwort anlegt. Nach der Installation legt man das Passwort wie folgt fest (verwendet keine Sonderzeichen wie zB "#", da ging bei mir nichts mehr):

    Code
    mysqladmin password

    Und passen folgende Configs an:
    /etc/nginx/nginx.conf

    /etc/php-fpm.d/www.conf

    Code
    ...
    user = www-data
    group = www-data
    ...
    listen = /var/run/php-fpm.sock
    ...
    listen.owner = www-data
    listen.group = www-data
    ...

    /etc/my.cnf

    Code
    [client]
    ...
    password = EUERPASSWORT
    ...
    [mysqld]
    ...
    datadir = /media/usb/mysql/database #ist der Pfad der Standardinstallation
    ...

    Macht am besten danach einen reboot der Box und schaut ob alle Prozesse laufen:

    Code
    ps -d

    Da sollten laufen:[list=1]
    [*]nginx
    [*]php-fpm
    [*]mysqld
    [/list=1] Erstellt noch eine index.php Datei in eurem "www" Ordner mit folgenden Inhalt:

    PHP
    <?php
    phpinfo();
    ?>

    Nun der Test, öffnet euren Browser und gebt eure Seite ein:

    Code
    http://IPDERBOX:EUERPORT

    und es kommt hoffentlich eine NGINX Seite. Prüft ob PHP läuft indem ihr folgende Adresse eingebt:

    Code
    http://IPDERBOX:EUERPORT/index.php

    wo hoffentlich eine lange PHP Seite erscheint.


    7. phpmyadmin


    Nachdem nun der Server erfolgreich läuft, laden wir uns phpmyadmin herunter und entpacken es in das www Verzeichnis in den Unterordner "phpmyadmin". Ob es klappt seht ihr wenn ihr in eurem Browser folgende Seite öffnet:

    Code
    http://IPDERBOX:EUERPORT/phpmyadmin/setup

    Ihr müsst nun eure Daten eingeben ("Neuer Server" und danach "localhost" mit "127.0.0.1" und Port 3306 und Verbindung komprimieren -> "Übernehmen" und im zweiten Fenster "deutsch", "localhost" und "unix/linux" und auf "download" klicken) und ihr erhält die Konfigurationsdatei. Kopiert diese als config.inc.php Datei in den phpmyadmin Ordner. Beispielinhalt:

    Ob es klappt seht ihr wenn ihr in eurem Browser folgende Seite öffnet:

    Code
    http://IPDERBOX:EUERPORT/phpmyadmin

    und euch ein Loginbildschirm begrüßt. Nachdem ihr euch mit root und EUERPASSWORT angemeldet habt, solltet ihr die Datenbank sehen können.


    8. wordpress


    Als erstes legen wir uns die notwendige Datenbank und Benutzer an (ändert yourpassword auf euer Wunschpasswort um). Nach Eingabe der ersten Zeile werdet ihr um das oben festgelegte Passwort gefragt, danach gebt die Zeilen einzeln ein und beendet mit exit:

    Code
    mysql -u root mysql -p
    
    
    CREATE DATABASE wordpress;
    CREATE USER 'ideuser'@'localhost' IDENTIFIED BY 'yourpassword';
    GRANT ALL PRIVILEGES ON wordpress.* TO 'ideuser'@'localhost';
    FLUSH PRIVILEGES;
    exit

    und laden uns wordpress herunter, erstellen im WWW Verzeichnis einen Ordner "wordpress" und entpacken es dorthin. Anschließend öffnen wir die Startseite mit

    Code
    http://IPDERBOX:EUERPORT/wordpress

    Nun müssen wir auch hier alle Datenbankdaten eingeben und erhalten als Resultat einen Vorschlag für die Datei "wp-config.php" mit folgenden Beispielinhalt:

    Danach sollte uns Wordpress mit dem Standardinhalt unter

    Code
    http://IPDERBOX:EUERPORT/wordpress

    begrüssen. Geht dann in den Adminbereich

    Code
    http://IPDERBOX:EUERPORT/wordpress/wp-admin

    loggt euch ein und ihr landet im Dashport.


    9. SSL Zugriff auf eure Homepage


    Dieser Schritt ist sicherlich notwendig wenn ihr vom Internet aus erreichbar seid und kostenlos ein Zertifikat erhalten wollt. Vorausgesetzt ihr habt einen Domainnamen und nicht nur eine IP-Adresse. Domainnamen kosten ca. 10€/Jahr, bei dynamischen IP's kann man zB kostenlose Services wie spdyn nutzen.


    Wenn ihr die obigen Voraussetzungen erfüllt, kann es schon fast losgehen...


    Damit das ganze funktioniert, muss eure Dreambox von außen via Standardport 80 erreichbar sein. D.h. ihr müsst eine Portweiterleitung am Router einrichten (80 Port) auf den http Port den ihr oben gewählt habt (kann 80 sein, oder jeder beliebige).


    Installiert dehydrated:

    Code
    apt-get install dehydrated
    apt-get -f install

    Für tägliche Prüfungen führt den folgenden Befehl aus und fügt die nachstehende Zeile ein ("a" drücken, danach eingeben, danach "ESC" drücken und ":wq"):

    Code
    crontab -e
    
    
    0 4 * * * /bin/run-parts /etc/cron.daily


    Folgende configs werden angepasst:
    /etc/dehydrated/config: - gemäß euren Daten

    Code
    #CA="https://acme-v01.api.letsencrypt.org/directory" #erst aktivieren wenn alles läuft
    CA="https://acme-staging.api.letsencrypt.org/directory" # testing server
    ...
    WELLKNOWN="/var/www/.well-known/acme-challenge" #euer pfad zu www
    ...


    /etc/dehydrated/domains.txt: - gemäß euren Daten

    Code
    www.eure-domain.com


    /etc/dehydrated/hook.sh: - wenn man spezielle Dienste nach Update starten will

    Code
    ...
    deploy_cert() {
    ....
    systemctl restart nginx.service
    ....


    /etc/nginx/nginx.conf:
    Fügt einen zweiten "server" nach dem "ersten" Server ein, damit habt ihr dann zwei Ports, einmal http und einmal https.

    Erstellt in eurem www Verzeichnis den Ordner .well-known (mit Punkt!) mit Unterordner acme-challenge
    Wir erstellen die Datei dhparams.pem:

    Code
    openssl dhparam -out /etc/nginx/dhparam.pem 2048


    Bevor ihr jetzt nginx neustartet (was nicht gelingen wird ohne certs) starten wir mal den Versuch ob wir Zertifikate bekommen:

    Code
    /etc/cron.daily/renew_certs

    Wenn er bis "DONE" runterläuft, sollte nginx automatisch starten und eure Seite via https erreichbar sein.... Es wird ein Zertifikatsfehler erscheinen, denn noch war es Trockentraining. Wir müssen neu konfigurieren, /etc/dehydrated/config:

    Code
    CA="https://acme-v01.api.letsencrypt.org/directory" #erst aktivieren wenn alles läuft
    #CA="https://acme-staging.api.letsencrypt.org/directory" # testing server
    ...

    Und startet nochmals

    Code
    /etc/cron.daily/renew_certs

    Es müsste nun nochmals bis "DONE" runterlaufen, nginx neustarten und eure Homepage sollte nun ein gültiges Zertifikat haben. Mit dem täglichen Cronjob sollte dies auch so bleiben. Keine Angst, es kommen nicht täglich neue Zertifikate, erst wenn die Gültigkeit <30 Tage ist, wird ein neues Zertifikat angefordert...


    Herzlichen Glückwunsch, ihr habt nun eine sichere Seite!


    10. Referenz - Meine Homepage


    Damit ihr auch seht, dass sowas ganz gut läuft, schaut auf meiner Seite vorbei. Sie ist in SSL bzw. seht euch Wordpress und die PHP-Info an.


    Gruß
    MCPat

    DM 900 UHD Triple Tuner
    1 TB WD HDD
    16GB USB
    16GB SD (Barry Allen)
    Original DMM oe2.5 mit GP3.3 (aktiv)
    VU+ solo
    VTI

    12 Mal editiert, zuletzt von mcpat ()

  • Sorry wenn ich mich in deinen HowTo Threat einmische! Wenn du es unpassend findest, kannst du dein Beitrag gerne von einem Mod/Admin löschen lassen oder ich lösch das wieder raus ...


    Mit den bzw. eigenen initscirpten ist das so eine Sache, die funktonieren im OE2.5 unter systemd nicht richtig, die werden meiner Meinung nach viel zu früh gestartet. Lt. DMM soll mian überhaupt die Finger von init scripten unter OE2.5 lassen.


    Ich starte/manage z.B. stbup mit systemd - das init script startete bei mir immer zu früh, auch mit S99stbup lief der daemon nach reboot nicht


    /lib/systemd/system/stbup.service


    Aber selbst damit klappte es nicht bei jedem Neustart, und lasse deshalb das sbtup.servcie über stbup.timer um 15 Sekunden verzögert starten, dann wird stbup erst gestartet, wenn auch die Systemzeit aktuell ist (OE2.5 holt sich die Zeit vom Transponder nach dem Enigma2 gestartet ist):


    /lib/systemd/system/stbup.timer


    den automatischen Start beim Boot über stbup.timer enablen, der startet dann das stbup.service mit der eingestellen Verzögerung


    Code
    systemctl enable stbup.timer


    und den daemon über stbup.service managen

    Code
    systemctl [start|stop|restart|status] stbup.service


    wenn man den autotart deaktivieren möchte:

    Code
    systemctl disable stbup.timer



    Am status (Startzeit) sieht man schön, das stbup.timer gestartet wird, bevor sich die Box die Zeit geholt hat:

    Code
    root@dm900:~# systemctl status stbup.timer
    * stbup.timer - Run stbup on boot
       Loaded: loaded (/lib/systemd/system/stbup.timer; enabled; vendor preset: enabled)
       Active: active (running) since Do 1970-01-01 01:00:03 CET; 47 years 2 months ago
    
    
    Warning: Journal has been rotated since unit was started. Log output is incomplete or unavailable.


    beim Start von stbup.service war die Zeit schon aktuell ...

    Code
    root@dm900:~# systemctl status stbup.service
    * stbup.service - embedded uptime project daemon
       Loaded: loaded (/lib/systemd/system/stbup.service; enabled; vendor preset: enabled)
       Active: active (running) since So 2017-03-05 18:04:14 CET; 1 weeks 2 days ago
     Main PID: 432 (stbup)
       CGroup: /system.slice/stbup.service
               '- 432 /usr/bin/stbup -C /etc/stbup.conf 1>/dev/null &

    Gruß Fred


    Die Dreambox ist tot, es lebe die Dreambox


    3 Mal editiert, zuletzt von Fred Bogus Trumper ()

  • Hi Fred!


    Danke dir! Das hilft beim geplanten Release von MySQL...


    Würde mich freuen wenn du es testen würdest?!


    Wahrscheinlich geht morgen php-fpm und MySQL online :winking_face:


    LG
    McPat

    DM 900 UHD Triple Tuner
    1 TB WD HDD
    16GB USB
    16GB SD (Barry Allen)
    Original DMM oe2.5 mit GP3.3 (aktiv)
    VU+ solo
    VTI

    • Offizieller Beitrag

    P.S. ist aber alles schon lange auf dem BP (php7, mariadb, nginx, ...)

    no brain no pain! :495:
    Auf gar keinen Fall die GP-Wiki lesen!!
    sie könnte Deinen Kopf zu schwer für Deinen Hals machen :grinning_squinting_face:
    :sonne:458859-modellist-gif


    attachment.php?attachmentid=158292 Wir wollen uns für das Update bedanken!!
    attachment.php?attachmentid=204594

  • Zitat

    Original von emanuel
    P.S. ist aber alles schon lange auf dem BP (php7, mariadb, nginx, ...)


    Jein, php7 in der alten Version und ich bekam ständig ein sigsegv beim ausführen von speziellem php code... Ich verwende MySQL und nicht mariadb und nginx läuft bei mir in der aktuellsten Version mit Openssl 1.1.0.


    Und ich hab keine Anleitung dafür gefunden, bin gerade so im Anleitungen schreiben, da hab ich mir gedacht es passt hier rein...

    DM 900 UHD Triple Tuner
    1 TB WD HDD
    16GB USB
    16GB SD (Barry Allen)
    Original DMM oe2.5 mit GP3.3 (aktiv)
    VU+ solo
    VTI

  • muss den alten Threat mal raus kramen
    muss ich jede einzelne deb mit dpkg-sig --sign builder meinerstesdebfile.deb signieren oder gibt es eine möglichkeit mehrere auf einmal zu signieren

  • Wie wär's mit sowas?


    Code
    for i in $(ls *.deb); do echo "mach was mit " $i; done


    Wenn alles "ordentlich" in einem Ordner ist.


    Grüße