Metapakete erstellen
Dieser Artikel wurde für die folgenden Ubuntu-Versionen getestet:
Dieser Artikel ist größtenteils für alle Ubuntu-Versionen gültig.
Artikel für fortgeschrittene Anwender
Dieser Artikel erfordert mehr Erfahrung im Umgang mit Linux und ist daher nur für fortgeschrittene Benutzer gedacht.
Zum Verständnis dieses Artikels sind folgende Seiten hilfreich:
Einleitung¶
Metapakete enthalten selbst keine Software, sondern definieren nur Abhängigkeiten von anderen Paketen. Installiert man das Metapaket, werden automatisch alle direkten und indirekten Abhängigkeiten installiert. Da Metapakete selber keinerlei Daten enthalten, können sie gefahrlos deinstalliert werden.
Beispiele sind die Pakete:
ubuntu-desktop - Beinhaltet alles, was bei der Installation von Ubuntu für die komplette GNOME-Desktop-Umgebung installiert wird
build-essential - Enthält die wichtigsten Pakete zum Kompilieren
Mit Hilfe eines eigenen Metapakets kann man sich selber Gruppen von Paketen zusammenstellen, die man dann unkompliziert auf anderen Rechnern installieren kann. Man spart sich also bspw. das Abarbeiten von langen Paketlisten auf frisch installierten Systemen.
Vorbereitung¶
Zum erstellen eines Metapakets müssen folgende Pakete installiert werden:
fakeroot
dpkg-dev
dh-make
Befehl zum Installieren der Pakete:
sudo apt-get install fakeroot dpkg-dev dh-make
Oder mit apturl installieren, Link: apt://fakeroot,dpkg-dev,dh-make
Erstellen der Ordnerstruktur¶
Die Ordner, aus denen Debs erstellt werden, unterliegen Namenskonventionen. Der Ordnername setzt sich aus dem Programmnamen und der Versionsnummer zusammen. Bsp. meta-0.1.
Aus Gründen der Übersicht ist es sinnvoll, den Ordner meta-0.1 in einem weiteren Ordner anzulegen. In diesem befinden sich später auch die erstellten Debs.
Im Terminal [2] gibt man dazu Folgendes ein:
mkdir -p meta/meta-0.1
Erstellen der Steuerungsdateien¶
Für die Erstellung eines Debs werden Steuerungsdateien benötigt. Diese werden mit dem Befehl dh_make erstellt. dh_make erstellt dazu im Ordner meta-0.1 einen Ordner debian und legt die Dateien dort ab. Im Terminal [2] wird dazu in den Ordner meta-0.1 gewechselt und dh_make ausgeführt.
cd meta/meta-0.1 dh_make -e "MAIL@ADRESSE" -c gpl --createorig
dh_make fragt dann nach dem gewünschten Typ des Debs. Hier ist s
für Single anzugeben. Danach wird eine Zusammenfassung angezeigt und nach einer Bestätigung mit
⏎ werden die Steuerungsdateien erstellt. Die Meldung, dass keine configure-Datei gefunden wurde und die make-Dateien eventuell per Hand angepasst werden müssen, kann ignoriert werden.
Bearbeiten der Steuerungsdateien¶
Die Steuerungsdateien befinden sich im Ordner debian im Ordner meta-0.1. Unbedingt notwendig für die Deb-Erstellung sind die Dateien changelog, compat, control, copyright und rules. Die restlichen Dateien können für eine bessere Übersicht gelöscht werden.
Die Datei changelog¶
Wie der Name schon sagt, werden hier die Änderungen am Paket vermerkt. Aus dieser Datei wird auch die neue Versionsnummer ausgelesen, falls das Paket verändert wurde. Bei Debian-Paketen für den privaten Gebrauch muss zumindest die Versionsnummer angehoben werden.
Beispiel einer changelog-Datei:
xorg-edit (06.07.30-1) unstable; urgency=low * added integrated modeline generator (using gtf) * added automatical detection of DisplaySize (using xdpyinfo) * added automatical detection of monitor refresh rates (using ddcprobe) -- Georg W. Leonhardt <mail@domain.tld> Mo, 30 Jul 2006 13:14:52 +0200 xorg-edit (06.06.11-2) unstable; urgency=low * fix languagesupport -- Georg W. Leonhardt <mail@domain.tld> Mo, 26 Jun 2006 15:43:48 +0200 xorg-edit (06.06.11-1) unstable; urgency=low * Initial release Closes: #nnnn (nnnn is the bug number of your ITP) -- Georg W. Leonhardt <mail@domain.tld> Tue, 13 Jun 2006 11:31:31 +0200
Die Datei compat¶
In dieser Datei müssen keine Änderungen vorgenommen werden. Wichtig ist nur ihre Existenz im Ordner debian.
Die Datei control¶
In der Datei control werden die Abhängigkeiten, Konflikte, Ersetzungen und Empfehlungen zu anderen Paketen und eine Beschreibung des Paketes vermerkt. Der Text
${shlibs:Depends}, ${misc:Depends}
nach Depends in der neu erstellten control-Datei kann gelöscht werden.
Erläuterung der Einträge¶
Depends: Pakete werden installiert
Conflicts: Pakete werden deinstalliert
Replaces: Pakete werden ersetzt
Recommends: Pakete, die zusätzlich zur Installation dieses Paketes empfohlen werden
Suggests: Pakete, die ebenfalls nützlich sein könnten
Provides: Abhängigkeiten auf diese Pakete werden ebenfalls erfüllt. Beispiele sind allgemeine Bezeichnungen wie www-browser oder Pakete, deren Funktionalität vollständig übernommen wird.
Beispiel einer control-Datei:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | Source: opera-ubuntu Section: multiverse/web Priority: optional Maintainer: Georg W. Leonhardt <mail@domain.tld> Build-Depends: debhelper (>= 4.0.0) Standards-Version: 3.6.1 Package: opera-ubuntu Architecture: i386 Depends: lesstif-bin, lesstif1, libc6 (>= 2.1.3), libmotif3, libqt3-mt (>= 3.3.4) | libqt3c102-mt (>= 3.3.4), libstdc++6 Conflicts: opera-static, mozilla-plugin-vlc Replaces: opera-static, opera, opera-de Provides: opera-static, www-browser Description: Opera Web Browser with Motif-Support Welcome to the .... |
Die Datei copyright¶
Die Datei copyright beinhaltet Rechteinhaber, eventuelle Webseite und die Lizenz. Bei privaten Paketen kann man diese Datei auch unverändert lassen.
Beispiel einer copyright-Datei:
This package was debianized by Georg W. Leonhardt <mail@domain.tld> on Tue, 17 Jan 2006 20:27:49 +0100. It was downloaded from http://www.tvbrowser.org/ Copyright Holder: Martin Oberhauser, Til Schneider, Bodo Tasche, René Mach License: GPL
Die Datei rules¶
Diese Datei ist ein Shellskript, das bei der Deb-Erstellung ausgeführt wird und den Kompilier-Vorgang steuert. Da es bei Metapaketen nichts zu kompilieren gibt, müssen hier die drei $(MAKE)-Befehle auskommentiert werden.
Auszug des entsprechenden Bereiches aus der rules-Datei
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | . . # Add here commands to compile the package. #$(MAKE) #docbook-to-man debian/meta.sgml > meta.1 touch build-stamp clean: dh_testdir dh_testroot rm -f build-stamp configure-stamp # Add here commands to clean up after the build process. #-$(MAKE) clean dh_clean install: build dh_testdir dh_testroot dh_clean -k dh_installdirs # Add here commands to install the package into debian/meta. #$(MAKE) install DESTDIR=$(CURDIR)/debian/meta . . |
Erstellen des Metapaketes¶
Dazu wird wieder ein Terminal [2] geöffnet und in den Ordner meta-0.1 gewechselt.
cd meta/meta-0.1
Das Binary-Paket selbst wird dann mittels
dpkg-buildpackage -uc -us
erstellt. Die Schalter -uc
und -us
verhindern ein Signieren des Paketquellcodes und der Änderungsdatei, falls ein GPG-Key vorhanden ist. Falls das Paket zusammen mit dem Quellcode in ein Repository aufgenommen werden soll, ist eine Signatur per GPG auf jeden Fall zu empfehlen.
Das fertige Paket befindet sich jetzt im Ordner meta.
Weiterführende Infos¶
Um das deb-Paket dauerhaft zu nutzen, besteht z.B. die Möglichkeit, es in eine lokale Paketquelle zu integrieren.
Links¶
Grundlagen der Paketerstellung (inkl. weiterführender Links)