Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Debian Pakete selber erstellen

Ähnliche Präsentationen


Präsentation zum Thema: "Debian Pakete selber erstellen"—  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
Debian Pakete sind „ar“ Archive $ 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

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 $ 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 …- 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.

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"

Ähnliche Präsentationen


Google-Anzeigen