Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Debian Pakete selber erstellen Steffen Möller Night of Open Knowledge Lübeck 2013.

Ähnliche Präsentationen


Präsentation zum Thema: "Debian Pakete selber erstellen Steffen Möller Night of Open Knowledge Lübeck 2013."—  Präsentation transkript:

1 Debian Pakete selber erstellen Steffen Möller Night of Open Knowledge Lübeck 2013

2 Debian – was ist das? Ein Miteinander von Entwicklern Society mit Infrastruktur für Mitglieder, einem gewählten Project Leader, Abstimmungen Weltweite Präsenz Organisierte Treffen (Sprints) bis hin zu Konferenzen Grundstimmung ähnelt der NooK – Paketierung von Wissen – Software – Workflows – Verteilung an alle Interessierte – Integration von Feedback

3 Debian – was ist das? Technisches Referenz-Archiv mit freier Software Viele Spiegel in aller Welt.deb Format für Pakete – Binary – Source apt zur Paket-Verwaltung Bug reporting und management System Automatisches Bauen von Source Paketen – >10 Architekturen (ARM, MIPS, PowerPC, Intel 32 und 64 bit, …) – Linux, FreeBSD und HURD kernel

4 In den kommenden 20 Minuten Direkt installierbare (.deb) Pakete Erstellen eigener Pakete Hochladen der Pakete zur Distribution

5 .deb Paket-Format reverse engineered $ ar -t boinc-app-examples_ dfsg-1exp1_amd64.deb debian-binary control.tar.gz data.tar.xz Informationen zum Paket selbst Abhängigkeiten Maintainer Full-text zur Beschreibung Tar Archiv, wird direkt von root aus entpackt Debian Pakete sind ar Archive

6 .deb Paket-Format reverse engineered $ ar -t boinc-app-examples_ dfsg-1exp1_amd64.deb debian-binary control.tar.gz data.tar.xz

7 .deb Paket-Format: data.tar.xz $ tar Jtf data.tar.xz $././usr/./usr/share/./usr/share/doc/./usr/share/doc/boinc-app-examples/./usr/share/doc/boinc-app-examples/README.Debian./usr/share/doc/boinc-app-examples/changelog.Debian.gz./usr/share/doc/boinc-app-examples/copyright./usr/lib/./usr/lib/boinc-server-maker/./usr/lib/boinc-server-maker/apps/./usr/lib/boinc-server-maker/apps/upper_case./usr/lib/boinc-server-maker/apps/sleeper./usr/lib/boinc-server-maker/apps/worker./usr/lib/boinc-server-maker/apps/concat./usr/lib/boinc-server-maker/apps/wrapper./usr/lib/boinc-server-maker/apps/uc2./usr/lib/boinc-server-maker/apps/1sec

8 .deb Paket-Format: control.tar.gz $ tar zxvf control.tar.gz $ cat md5sums $ cat control././md5sums./control Package: boinc-app-examples Source: boinc Version: dfsg-1exp1 Architecture: amd64 Maintainer: Debian BOINC Maintainers Installed-Size: 2095 Depends: libc6 (>= 2.15), libgcc1 (>= 1:4.1.1), libstdc++6 (>= 4.1.1) Recommends: boinc-server-maker Section: net Priority: optional Homepage: Description: example binaries for BOINC servers The Berkeley Open Infrastructure for Network Computing (BOINC) is a software platform for distributed computing using volunteered computer resources. For every scientific problem its own distinct project-server must be provided. The users only run a common client with project-specific additions (if not self-compiled or available as a Linux distribution's package itself) being downloaded from the server.. This package extends the boinc-server-maker package. It features a series of small applications that a newly installed environment may decide to use for testing purposes. Having them separated has the neat side effect that those binaries may be retrieved more easily for foreign platforms to feed the local servers with.. The package also features the wrapper application, which is likely to find its audience also in real projects. $ cat md5sums b16212c9224fdf ca85b642a3 usr/lib/boinc-server-maker/apps/1sec dfdffb385c1aca44c250ef8b9495fc8e usr/lib/boinc-server-maker/apps/concat ecfb42818bb1f18d21af5919d usr/lib/boinc-server-maker/apps/sleeper 4ac e29a4fc178661a1ea6 usr/lib/boinc-server-maker/apps/uc2 9d04ba9c fa2a47ccb9fb17eed usr/lib/boinc-server-maker/apps/upper_case …-

9 Package: boinc-app-examples Source: boinc Version: dfsg-1exp1 Architecture: amd64 Maintainer: Debian BOINC Maintainers Installed-Size: 2095 Depends: libc6 (>= 2.15), libgcc1 (>= 1:4.1.1), libstdc++6 (>= 4.1.1) Recommends: boinc-server-maker Section: net Priority: optional Homepage: Description: example binaries for BOINC servers The Berkeley Open Infrastructure for Network Computing (BOINC) is a software platform for distributed computing using volunteered computer resources. For every scientific problem its own distinct project-server must be provided. The users only run a common client with project-specific additions (if not self-compiled or available as a Linux distribution's package itself) being downloaded from the server.. This package extends the boinc-server-maker package. It features a series of small applications that a newly installed environment may decide to use for testing purposes. Having them separated has the neat side effect that those binaries may be retrieved more easily for foreign platforms to feed the local servers with.. The package also features the wrapper application, which is likely to find its audience also in real projects.

10 Binäre (installierbare) Pakete Lassen sich von – Hand herstellen oder – Skripten Aber – Sie lassen sich nicht nachbauen und deswegen nicht portieren auf andere Architekturen – Die Parameter zur Kompilation des Quellcode sind nicht angegeben, Veränderungen sind schwerer möglich – Es findet nicht die Interaktion zwischen Entwicklern und Anwendern statt, die möglich wäre bei Weitergabe des Quellcodes zusammen mit Automatisierbare lesebare Anwendungen zur Erstellung des Pakets

11 Source Pakete Original tarball debian folder – control – changelog – rules – Optionales watch menu manpages …

12 Untersuchung des upstream Tarballs Nur das von Hand erstellte bleibt – Keine vergessene Objekt-Dateien – Keine externen.jar Dateien Copyright-Überprüfung anhand Debian Free Software Guidelines (DFSG) – Fallen alle Dateien darunter? – Sind Weitergabe und Veränderungen gestattet?

13 Erstellen des debian directory von Hand – machbar dh_make – leichter – Prima für alle Programme mit Makefile – Kennt auch autoconf, automake – Analoge Helfer für Perl und Java es bleibt – Separieren von Architektur-abhängigen und Architektur-unabhängigen Programmteilen –Installation nach /usr/share oder /usr/lib Paketier-Schritten – advanced – Erklärung von Abhängigkeiten zur Paketerstellung und zur Laufzeit – Manpages erstellen – Testen der Funktionalität – Ausfüllen von Lücken aus dh_make Textuelle Beschreibung der binären Pakete README.Debian, README.source – Je nach Programm-Typ Pre- und Post-install Skripte Menü-Integration

14 debian/rules Jedes Programm, das binary als Argument versteht und die in debian/control beschriebenen Pakete erzeugt Üblicherweise als Makefile implementiert Funktioniert direkt für – configure – make; make install override targets für Sonderfälle / Ergänzungen

15 debian/rules – funktioniert erstmal %: dh --parallel

16 debian/rules – später mehr %: dh --parallel CFGFLAGS = --disable-static-client --disable-static --enable-shared --enable-client \ --disable-server --enable-dependency-tracking --with-gnu-ld $(SETIEXTRAFLAGS) override_dh_auto_configure: aclocal -I m4 && autoheader && automake && autoconf # use two directories for graphics/nographics CFLAGS="$(CFLAGS)" CXXFLAGS="$(CXXFLAGS)" CPPFLAGS="$(CPPFLAGS) \ -- $(CFGFLAGS) --enable-graphics BOINCDIR=/usr/include/boinc \ dh_auto_configure --builddirectory=graphics -- $(CFGFLAGS) --enable-graphics CFLAGS="$(CFLAGS)" CXXFLAGS="$(CXXFLAGS)" CPPFLAGS="$(CPPFLAGS)" \ LDFLAGS="$(LDFLAGS)" BOINCDIR=/usr/include/boinc \ dh_auto_configure --builddirectory=nographics -- $(CFGFLAGS) --disable-graphics

17 Source tree direkt nach Bauen regulärer Quellcode | |--- debian | |---- changelog |---- control |---- rules |---- binary-package-name 1 |---- binary-package-name 2 |.... Verzeichnisse in Debian mit Namen der binären Pakete enthalten den schliesslich als data.tar.xz der entsprechenden.deb Pakete präsentiert.

18 debian/rules – später mehr %: dh --parallel CFGFLAGS = --disable-static-client --disable-static --enable-shared --enable-client \ --disable-server --enable-dependency-tracking --with-gnu-ld $(SETIEXTRAFLAGS) override_dh_auto_configure: aclocal -I m4 && autoheader && automake && autoconf # use two directories for graphics/nographics CFLAGS="$(CFLAGS)" CXXFLAGS="$(CXXFLAGS)" CPPFLAGS="$(CPPFLAGS) \ -- $(CFGFLAGS) --enable-graphics BOINCDIR=/usr/include/boinc \ dh_auto_configure --builddirectory=graphics -- $(CFGFLAGS) --enable-graphics CFLAGS="$(CFLAGS)" CXXFLAGS="$(CXXFLAGS)" CPPFLAGS="$(CPPFLAGS)" \ LDFLAGS="$(LDFLAGS)" BOINCDIR=/usr/include/boinc \ dh_auto_configure --builddirectory=nographics -- $(CFGFLAGS) --disable-graphics

19 debian/rules – später mehr %: dh --parallel CFGFLAGS = --disable-static-client --disable-static --enable-shared --enable-client \ --disable-server --enable-dependency-tracking --with-gnu-ld $(SETIEXTRAFLAGS) override_dh_auto_configure: aclocal -I m4 && autoheader && automake && autoconf # use two directories for graphics/nographics CFLAGS="$(CFLAGS)" CXXFLAGS="$(CXXFLAGS)" CPPFLAGS="$(CPPFLAGS) \ -- $(CFGFLAGS) --enable-graphics BOINCDIR=/usr/include/boinc \ dh_auto_configure --builddirectory=graphics -- $(CFGFLAGS) --enable-graphics CFLAGS="$(CFLAGS)" CXXFLAGS="$(CXXFLAGS)" CPPFLAGS="$(CPPFLAGS)" \ LDFLAGS="$(LDFLAGS)" BOINCDIR=/usr/include/boinc \ dh_auto_configure --builddirectory=nographics -- $(CFGFLAGS) --disable-graphics

20 dpkg-buildpackage ruft debian/rules auf separiert Paketierung von upstream tarball Erstellt.dsc und.changes Dateien als – Zusammenfassung aller source und binary Pakete – gestattet Signatur durch Paket-Ersteller – Garantie der Unveränderlichkeit durch Dritte

21 Hochladen ftp zu incoming.debian.org/pub/UploadQueue – Alle zwei Minuten wird das Verzeichnis nach neuen Paketen untersucht. – Signierte Pakete werden akzeptiert, – wenn der Unterschreiber auf der Liste steht von Debian Entwicklern oder Akzeptierten Maintainern dieses Pakets – Erstmalige Submissions werden manuell gecheckt auf Verletzungen von Copyrights Paketierungs-Fehlern

22

23 Zum Mitmachen Debian oder Derivate wie Ubuntu/Mint/… nutzen – Tägliche Routine mit verfügbaren Paketen abgleichen – Paketierungs-Techniken nutzen auch bei eigenen Entwicklungen Austausch von Programm-Versionen Sauberes Entfernen Maintenance von Paketen nur von solchen, die Ihr selber oft nutzt – Uploads kosten keine Zeit – Paket-Updates auch nicht wirklich – Testen schon

24 Weg zum eigenen Upload Paket erstellen und um Upload durch Entwickler bitten (mentors.debian.net) GPG Schlüssel erstellen Durch zwei Debian Entwickler signieren lassen (Schleswig-Holstein hat vier) Antrag auf Akzeptanz als Paket-Maintainer stellen - dauert 2-4 Wochen

25 Weg in die Community Blends – gemeinsame Paketbetreuung Patches an upstream GPG Key sigining – im Urlaub / auf Dienstreisen – stets sehr freundlich, Debian slang beer signing Diskussionsforen / Mailing lists

26 Patches Veränderungen sollte es nicht geben, gibt es aber – Fehlermeldungen des Compilers – Skripte sind ausführbar, die nur als Bibliothek dienen – Erleichterung der Installation für Debian – …. Veränderungen sind als Patch zu verwalten – Damit updates leichter fallen – Entwickler werden auf die Veränderung hingewiesen – Werkzeuge wie quilt unterstützen den Prozess

27


Herunterladen ppt "Debian Pakete selber erstellen Steffen Möller Night of Open Knowledge Lübeck 2013."

Ähnliche Präsentationen


Google-Anzeigen