This shows you the differences between two versions of the page.
mld:entwicklung:401entwicklungsumgebung [2014/05/09 13:41] clausmuus angelegt |
mld:entwicklung:401entwicklungsumgebung [2014/10/02 16:28] (current) |
||
---|---|---|---|
Line 1: | Line 1: | ||
- | ====== Einführung in den Bau der MLD 4.0.1 - 64Bit ====== | + | ====== Einführung in den Bau der MLD 4 ====== |
===== 1 Vorwort ===== | ===== 1 Vorwort ===== | ||
Line 7: | Line 7: | ||
===== 2 Vorbereitung ===== | ===== 2 Vorbereitung ===== | ||
- | Da MLD-4.x auf Ubuntu basiert, ist es sinnvoll, auch ein neueres Ubuntu zum Entwickeln zu nutzen. Im Folgenden gehe ich auf den neusten Entwicklungszweig ein und deswegen wird ein Ubuntu (14.04) Derivat benötigt. Hierbei ist es egal ob es Kubuntu, Ubuntu, Linux Mint usw. ist. Es muss einfach nur auf Version 14.04 aufbauen. | + | Da MLD-4.x auf Ubuntu basiert, ist es sinnvoll, auch ein neueres Ubuntu zum Entwickeln zu nutzen. Im Folgenden gehe ich auf den neusten Entwicklungszweig ein und deswegen wird ein Ubuntu Trusty (14.04) Derivat benötigt. Hierbei ist es egal ob es Kubuntu, Ubuntu, Linux Mint usw. ist. Es muss einfach nur auf Version 14.04 aufbauen. Dabei ist es unerheblich welche Develumgebung man haben möchte. Als Empfehlung geben wir 64-Bit Variante vor, damit wird die MLD 4 automatisch als 64-Bit System aufgebaut. |
+ | ==== 2.1 Ubuntu 14.04 installieren (Minimal wird nicht empfohlen) ==== | ||
- | Alles weitere ist in den Anleitungen für MLD-4.0.0 beschrieben. Lediglich beim Auschecken der MLD Entwicklungsumgebung muss abweichend der "14.04-64" Branch gewählt werden und die dort angegebene "git clone ..." Zeile durch diese ersetzt werden: | + | Wie man ein System installiert muss ich hoffentlich nicht beschreiben, ansonsten ist man wohl falsch im Wiki abgebogen oder muss sich z.B. [[http://wiki.ubuntuusers.de/Installation|hier]] durchwühlen. |
- | <code bash>git clone http://minidvblinux.de/git-4/MLD.git MLD -b 14.04-64</code> | + | ==== 2.2 Ubuntu vorbereiten ==== |
- | * [[mld:entwicklung:400_entwicklungsumgebung|4.0.0 Entwicklungsumgebung aufsetzen]] | + | Nach der Installation ist es wichtig, Ubuntu auf den neusten Stand zu bringen. Das ist wichtig, da die Entwicklungsumgebung so auch Zugriff auf die neusten Libraries und Binaries hat. Also in der Shell oder im Terminal folgendes eingeben: |
+ | <code bash>sudo apt-get update | ||
+ | sudo apt-get dist-upgrade</code> | ||
+ | Nun noch einige Basis Pakete installieren, um an die Entwicklungsumgebung zu kommen: | ||
+ | <code bash>sudo apt-get install subversion make mercurial git-core python-software-properties cvs squashfs-tools ipsvd gettext</code> | ||
+ | ===== 3 MLD Entwicklungsumgebung installieren ===== | ||
+ | ==== 3.1 Holen der Entwicklungsumgebung ==== | ||
+ | So nun haben wir Ubuntu soweit vorbereitet für unsere Sachen und können anfangen uns die Entwicklungsumgebung zu holen. Die folgenden Befehle wieder in einer Shell oder Terminal ausführen. Als erstes clonen wir die Entwicklungsumgebung. | ||
+ | |||
+ | <code bash>git clone http://minidvblinux.de/git-4/MLD.git MLD</code> | ||
+ | |||
+ | Wenn dabei etwas schief geht, hat man sicherlich etwas bei Ubuntu vorbereiten vergessen. Nun Wechseln wir in den Ordner MLD, welcher schon die wichtigsten Werkzeuge für uns beinhaltet. Man könnte jetzt ein make starten dieses würde aber sofort abbrechen, weil einige benötigte Ubuntu Pakete fehlen. Um nun nicht immer wieder weitere fehlende Ubuntu Pakete installieren zu müssen, rate ich dazu, sich erst einmal die ganze Entwicklungsumgebung zu laden und alle Beziehungen (ab sofort deps) aufzulösen. Klingt schlimmer als es ist: | ||
+ | |||
+ | <code bash>cd MLD</code> | ||
+ | |||
+ | Nun holen wir erst mal alle Pakete: Hier kann es vorkommen das man bei manchen Paketen einen error bekommt und sie nicht heruntergeladen werden können. Ein Grund dafür kann der Internetanbieter sein und zwar die Telekom (Deutschland auch Österreich) einfach den Befehl noch ein paar mal durchlaufen lassen, bis alles Pakete heruntergeladen worden sind und dann mit dem nächsten Schritt fortfahren. | ||
+ | |||
+ | <code bash>make checkout_all</code> | ||
+ | |||
+ | Als nächstes lassen wir die deps der Pakete auflösen. | ||
+ | <code bash>sudo apt-get update | ||
+ | sudo apt-get install $(make deps)</code> | ||
+ | |||
+ | Nachdem das durchgelaufen ist, haben wir eine fertig eingerichtete Entwicklungsumgebung. | ||
+ | |||
+ | |||
+ | ==== 3.2 Bauen der Entwicklungsumgebung ==== | ||
+ | |||
+ | |^ Hinweis |Bei einem "make all" wurde bei mir nach dem Namen und der E-Mail-Adresse gefragt. Dies wird insbesondere benötigt, wenn man Änderungen einchecken möchte. Dann werden diese Informationen ins Logfile geschrieben. Möchte man nur ausgecheckte Pakete bauen und keine Änderungen im GIT ablegen, kann das umgangen werden, wenn im MLD-Ordner ein "make Makefile.config" durchführt wird. Die Diskussion zum Thema gibt es [[http://www.minidvblinux.de/forum/index.php/topic,5681.msg41068/topicseen.html|hier]] | | ||
+ | |||
+ | |||
+ | Einzelnes Paket bauen (Beispiel hier nun dvb): | ||
+ | <code bash>cd dvb | ||
+ | make</code> | ||
+ | |||
+ | Sämtliche verfügbaren Pakete werden so erstellt: | ||
+ | <code bash>make all</code> | ||
+ | |||
+ | |||
+ | So werden die vordefinierten ISOs erstellt: | ||
+ | <code bash>make</code> | ||
+ | |||
+ | |^ Tipp |Um geziehlt nur ein bestimmtes ISO zu bauen, geht das so:| | ||
+ | <code bash>cd ISO | ||
+ | make collection=NAME_DES_ISO #(z.b. standard)</code> | ||
+ | |||
+ | ==== 3.3 Aktualisieren der Entwicklungsumgebung ==== | ||
+ | |||
+ | Alles auf den aktuellen Stand bringen lässt sich per: | ||
+ | <code bash>make update_all | ||
+ | make all</code> | ||
+ | |||
+ | Alles neu bauen lässt sich so: | ||
+ | <code bash>make clean_all | ||
+ | make all</code> | ||
+ | |||
+ | Abfragen welche Ubuntu Pakete für die ausgecheckten MLD Pakete benötigt werden: | ||
+ | <code bash>make deps</code> | ||
+ | |||
+ | Wenn die benötigten Ubuntu Pakete installiert werden sollen geht das so: | ||
+ | <code bash>sudo apt-get install $(make deps)</code> | ||
+ | |||
+ | Ein Paket neu kompilieren und bauen lassen (Beispiel dvb): | ||
+ | <code bash>cd dvb | ||
+ | make clean</code> | ||
+ | |||
+ | Ein Paket neu bauen ohne das es neu kompiliert wird (Beispiel dvb): | ||
+ | <code bash>cd dvb | ||
+ | make_clean</code> | ||
+ | |||
+ | |^ Tipp |Beim Paket vdr und kernel ist es möglich, die vom vdr oder kernel abhängigen Pakete (z.b. beim vdr die plugins) neu bauen zu lassen ohne das diese neu kompiliert werden müssen (Beispiel vdr):| | ||
+ | <code bash>cd vdr | ||
+ | make all_depends</code> | ||
+ | |||
+ | ===== 4 Einzelne Pakete erstellen ===== | ||
+ | |||
+ | Ein einzelnes Paket lässt sich so auschecken: | ||
+ | <code bash>make checkout name=PACKAGENAME</code> | ||
+ | |||
+ | Es lassen sich auch alte MLD Addon auschecken und für die Verwendung unter der MLD-4 vorbereiten: | ||
+ | <code bash>make checkout_old name=PACKAGENAME</code> | ||
+ | |||
+ | Einzelne Pakete werden erstellt, indem in dem Ordner des Paketes ein make aufgerufen wird: | ||
+ | <code bash>cd PACKAGENAME | ||
+ | make</code> | ||
+ | |||
+ | Ein lokales Repository für ein neues Paket anlegen, nachdem es vorbereitet wurde, geht per: | ||
+ | <code bash>make import name=PACKAGENAME</code> | ||
+ | |||
+ | Ein neues Paket (für das zuvor ein locales Repository angelegt wurde) auf den Server stellen geht so (nur für registrierte Entwickler möglich): | ||
+ | <code bash>make export name=PACKAGENAME</code> | ||
+ | |||
+ | Zugangsdaten für Upload von Änderungen auf den MLD Server konfigurieren | ||
+ | (nur für registrierte Entwickler möglich): | ||
+ | <code bash>make auth</code> | ||
+ | |||
+ | ===== 5 Tipps ===== | ||
+ | ==== 5.1 Eigene Konfig in der MLD ==== | ||
+ | Eigene Anpassungen der Konfiguration werden in der Datei Makefile.config vorgenommen. | ||
+ | |||
+ | ==== 5.2 Migdnight Comander ==== | ||
+ | mc anpassen, damit er opk Dateien (Pakete) öffnen/anzeigen kann: | ||
+ | Im mc im Menü "Befehl / Erweiterungsdatei bearbeiten" aufrufen. | ||
+ | Nach "regex/\.u?deb$" suchen und durch "regex/\.(u?deb|opk)$" ersetzen. | ||
+ | |||
+ | ==== 5.3 GIT ==== | ||
+ | Ein kleines Tutorial findest du [[mld:tutorials:git|hier]] | ||
+ | |||
+ | ===== 6 Änderungen und Neuerungen bei der MLD-4 ===== | ||
+ | ==== 6.1 Der Ordner control ==== | ||
+ | Die Datei INSTALL gibt es nicht mehr und wird durch den Ordner control ersetzt. | ||
+ | In diesem Ordner befindet sich eine Datei control in der einige Informationen zum | ||
+ | Paket enthalten sind: | ||
+ | |||
+ | |Package:|=> Paketname| | ||
+ | |Version:| => Paketversion (wird normalerweise automatisch ermittelt)| | ||
+ | |Section:|=> Paketgruppe| | ||
+ | |Priority:|=> ???| | ||
+ | |Maintainer:|=> Name des Paketerstellers| | ||
+ | |Architecture:|=> auf welcher Umgebung das Paket laufen kann (z.b. i386)| | ||
+ | |Depends:|=> Abhängikkeiten (z.b. vdr)| | ||
+ | |Description:|=> Kurze Beschreibung des Paketes| | ||
+ | |=> Ausführliche Beschreibung, die über mehrere Zeilen gehen darf|| | ||
+ | |||
+ | Des Weiteren findet man (wenn gebraucht) die Dateien postinst. Diese enthält das, was | ||
+ | sich vorher in der INSTALL unter install) befand. | ||
+ | |||
+ | Dann findet man (wenn gebraucht) die Dateien prerm. Diese enthält das, was sich vorher | ||
+ | in der INSTALL unter uninstall) befand. | ||
+ | |||
+ | |^ WICHTIG |Sofern im Paket ein init script existiert (/etc/init.d/NAME), muss dieses im controls/postinst Script per "start NAME" (z.b. start alsa) aufgerufen werden. Wenn auch nen stop erforderlich ist, wird der im controls/prerm Script aufgerufen (z.b. stop alsa). Das ist notwendig, damit Dienste nach dem Installieren sofort gestartet werden, und nicht erst beim nächsten Reboot. Dies ist natürlich nur für die Pakete notwendig, bei denen ein aufruf des init Scripts erforderlich ist z.b. alsa wobei hier zwar das starten erforderlch ist, das stoppen aber nicht.| | ||
+ | |||
+ | Zu guter letzt gibt es noch (wenn gebraucht) die Datei conffiles. Da werden alle Datein drin eingetragen (z.b. /etc/vdr/setup.conf), die im Paket enthalten und Konfigurations Dateien sind. Die werden dann bei nem deinstallieren und vor allem beim Updaten besonders behandelt. | ||
+ | |||
+ | |^ Tipp |Im control Ordner werden beim checkout_old gerne einige prerm und postinst Dateien angelegt, die fast leer sind (11 Byte groß). Die können bedenkenlos gelöscht werden, bevor das neue Paket eingecheckt wird.| | ||
+ | |||
+ | ==== 6.2 Der Ordner .packages ==== | ||
+ | |||
+ | In der MLD-4.x wurde der Ordner !_addons durch den Ordner .packages ersetzt. | ||
+ | |||
+ | |^ Tipp |Je nach Einstellung eures Systems kann es passieren das ihr Ihn nicht seht. Dazu einfach im Dateimanager alle Dateien anzeigen einstellen und schon seht ihr ihn.| | ||
+ | |||
+ | Im Ordner .packages/4.0.0/ befinden sich die erstellten ISOs sowie 2 Ordner mit Namen base und libs. | ||
+ | |||
+ | === 6.2.1 Ordner base === | ||
+ | In diesem befinden sich 2 Ordner: | ||
+ | |control|=> Hier befinden sich die control Datei aus dem jeweiligen Paketordner ({PACKAGES}/control/control) nur das sie hier nicht als control sondern unter dem Namen-Version des Paketes abgelegt sind( z.b. alsa-1.0.25-3)| | ||
+ | |packages|=> Darin befinden sich die ganzen Standartpakete (z.b. kernel, alsa, vdr...)| | ||
+ | |||
+ | === 6.2.2 Ordner libs === | ||
+ | |control|=> (siehe base)| | ||
+ | |packages|=> Darin befinden sich alle von den Paketen benötigten libs| |