ubuntuusers.de

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

Diese Revision wurde am 4. Juni 2015 20:52 von MoonKid erstellt.
Die folgenden Schlagworte wurden dem Artikel zugewiesen: Paketverwaltung, Paketbau