dm900 "build-essential"

  • du kannst dir mit Barry Allen ein ganzes Debian Jessie drauf machen....das reich eigentlich fuer alles was man so braucht weil alle noetigen libs am feed sind.

  • 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 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.


    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!Habe die checks durchgeführt (dejagnu) und folgendes Ergebnis (gut oder schlecht????):


    Viel Spaß and happy coding
    MCPat

  • 1. 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:


    • nginx
    • php-fpm
    • mysqld

    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.



    2. 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.



    3. 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.



    4. 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!



    Gruß
    MCPat

  • Hallo,
    ich möchte gerne direkt auf der dm900 kompilieren

    habe was für mipsel gesucht und bin auf diese Seite gestossen, http://ellcc.org/releases/ gcc vorkompiliert, einfach auf die Hardisk entpacken, nur mips32r2el ist leider kein mips32el, kommt der "(" unexpected Fehler, ist nicht die gleiche Prozessorfamilie, aber auf der DM900 sollte doch der arm32v7-linux laufen, denke ich mal, einfach ausprobieren, nach unten scrollen!

  • Ich installiere mit Barry Allen eine Debian Jessie auf allen meinen DreamOS boxen (sowohl mipsel als auch armhf) und da sind dann alle compiler, build tools und libs fertig am feed um ganz ohne x-compiling mir alles was ich will zu bauen.

  • Wie viele Monate brauchst du da, wenn du ein komplettes OE einrichtest? Das geht ja schon auf meinem PC einige Stunden.

    Gruss
    Dre


    Boxen (im Einsatz): DM920, DM900, DMOne
    Developer Project Merlin - we are OpenSource

  • ich compilere kein OE, wozu auch, das was ich so mache geht auch ohne.

  • error while loading shared libraries: libpcsclite.so.1: cannot open shared object file: No such file or directory

    Einmal editiert, zuletzt von Xtrem.73 ()

  • 1 - Nachsitzen


    Deine Frage (resp. das, was du bauen willst) verstösst gegen die Boardregeln, die du vor ein paar Minuten akzeptiert hast.

    Gruss
    Dre


    Boxen (im Einsatz): DM920, DM900, DMOne
    Developer Project Merlin - we are OpenSource

  • warum wird geredet von das probleme was habe ich verstössen????

  • sorry


    ok wie kann diese fehlend error while loading shared libraries: libpcsclite.so.1: cannot open shared object file: No such file or directory

  • also was dann ich sehe das chatt ist hilfe los für was dreambox forum wenn alles ist verstöss

  • Dafür sind Regeln da ...


    Und nur weil dir meine bisherigen Antworten zu deinem Problem nicht gefallen sind sie nicht falsch.