[[Vorlage(Getestet, general)]] [[Vorlage(Fortgeschritten)]] {{{#!vorlage Wissen [:Pakete_installieren: Installation von Programmen] [:Terminal: Ein Terminal öffnen] [:Editor: Dateien editieren] [:Metapakete:] }}} [[Inhaltsverzeichnis(2)]] = 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: {{{#!vorlage Paketinstallation 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: {{{#!vorlage Befehl 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. {{{#!vorlage Befehl 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 [[Vorlage(Tasten, Enter)]] 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 Mo, 30 Jul 2006 13:14:52 +0200 xorg-edit (06.06.11-2) unstable; urgency=low * fix languagesupport -- Georg W. Leonhardt 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 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: {{{#!code control Source: opera-ubuntu Section: multiverse/web Priority: optional Maintainer: Georg W. Leonhardt 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 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 {{{#!code make . . # 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. {{{#!vorlage Befehl cd meta/meta-0.1 }}} Das Binary-Paket selbst wird dann mittels {{{#!vorlage Befehl 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 [:GnuPG: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_Paketquellen: lokale Paketquelle] zu integrieren. = Links = * [:Metapakete:] * [:Grundlagen_der_Paketerstellung:] (inkl. weiterführender Links) * [:dpkg-buildpackage:] # tag: Paketverwaltung, Paketbau