Eigenes Debian Repository erstellen

__ Debian ist ein geniales Betriebssystem; der Paketmanager apt ist einer der besten. Und doch hat Debian einen entscheidenden Nachteil: Die Pakete sind meist hoffnungslos veraltet.
Für die "wichtigsten" Pakete wie php, mysql, usw. bei denen man häufig updates benötigt stehen sog. "backports" zur Verfügung, das bekannteste ist etwa dotdeb.org.

Was aber, wenn man eine aktuelle Version eines anderen Pakets benötigt, z.B. Nagios oder Ganglia? -Zwar könnte man diese auch selber kompilieren, allerdings können sie dann erstens nicht mehr über den Paketmanager upgedatet werden und zweitens ist auch eine Deinstallation meist sehr schwierig.

Die Lösung ist es ein eigenes, lokales Debian Repository aufzubauen, dass man dann in die sources.list aufnehmen kann. Dort kann man dann die selbst erstellen Debian Pakate rein legen.

In diesem Workshop werden wir diese Schritte im Beispiel von Ganglia durchgehen.. __

Inhalt

Anforderungen

Folgendes brauchen wir für den Workshop:

  • Ein Linux-System
  • Installierte kompilier-Umgebung (gcc, g++, make,…)
  • checkinstall – Ein Tool um automatisiert Debian Pakete zu erstellen
  • Source (.tgz) des Programms, das man installieren möchte; in diesem falle Ganglia
  • dpkg-dev – Tools um Debian Pakete zu erstellen

Debian Paket erstellen

Als erstes installieren wir checkinstall:

wget <a href="http://asic-linux.com.mx/~izto/checkinstall/files/deb/checkinstall_1.6.1-1_i386.deb" target="blank">http://asic-linux.com.mx/~izto/checkinstall/files/deb/checkinstall_1.6.1-1_i386.deb</a>
dpkg -i checkinstall_1.6.1-1_i386.deb

Nun bereiten wir die zu installierende Software (hier Ganglia) vor; es werden alle Schritte wie sie zum kompilieren nötig sind ausgeführt, ausser den letzen ("make install") – Diesen muss man lediglich mit "checkinstall" ersetzen um das Paket zu erstellen.

 wget <a href="http://downloads.sourceforge.net/ganglia/ganglia-3.0.6.tar.gz?modtime=1197841793&big_mirror=0" target="blank">http://downloads.sourceforge.net/ganglia/ganglia-3.0.6.tar.gz?modtime=1197841793&big_mirror=0</a>
tar -xvzf ganglia-3.0.6.tar.gz
cd ganglia-3.0.6
./configure
make

Nun haben wir die kompilierten Dateien, es wurde aber noch nichts installiert. Dies ist auch gut so, denn nun kommt checkinstall zum Einsatz. Checkinstall ruft "make install" auf, fängt dabei die Schritte die hier gemacht würden ab und erstellt damit ein Debian Paket.
[stextbox id=“note“ caption=“Hinweis“]Bei Debian Paketen sollte zusätzlich der Parameter "–review-control" mitgegeben werden, um später die Abhängigkeiten festlegen zu können;
ansonsten würde nur die Software installiert ohne ggf. andere dazu benötigte Programme (Im Fall von Ganglia z.B. das RRDTool).

checkinstall --review-control make install

[/stextbox]

Danach kann man noch einige Angaben zum Paket machen wie z.B. eine Beschreibung. -Falls das Paket (in einer älteren Version) im offiziellen Debian repository enthalten ist am besten die originale übernehmen. Infos zum jeweiligen Debian Paket kann man unter: http://packages.debian.org/ nach schauen.

Am Schluss wird dann noch das sog. Controlfile aufgerufen. Dies ist eine spezielle Datei in der man die Angaben zum Paket wie Name, Abhängigkeiten, Empfehlungen, usw. bearbeiten kann.
Am wichtigsten sind hier die Abhängigkeiten (Depends). Diese findet man, wenn man unter http://packages.debian.org/ das jeweilige Paket sucht.
Diese sollte man nun so wie Sie auf der Seite stehen übernehmen, inklusive der runden Klammern.

Ein Beispiel für das Controlfile von Ganglia:
(Paketbeschreibung unter: http://packages.debian.org/stable/gmetad?lang=en )

Package: ganglia
Priority: extra
Section: checkinstall
Installed-Size: 1132
Maintainer: meine@email-adresse.tld
Architecture: i386
Version: 3.0.6-1
Depends: adduser, libart-2.0-2, libc6, libc6.1, librrd2
Suggests: ganglia-monitor, ganglia-webfrontend
Description: Ganglia is a scalable, real-time cluster monitoring environment with that collects cluster statistics in an open well-defined XML format.
 This package contains the 'gmetad', which collects information from ganglia monitor clients, and writes them to RRD databases.

[stextbox id=“note“ caption=“Hinweis“]In den eckigen Klammern steht die Architektur;
normalerweise braucht man nur die Pakete einzubinden auf dessen Architektur man sie installieren möchte;
in den meisten Fällen also i386, bzw. ia64.[/stextbox]

Wenn wir alles angepasst haben speichern und schliessen wir die Datei.

So, nun haben wir in dem Verzeichnis ein .deb File, dass wir nun mit: "dpkg -i ganglia.deb" bereits installieren könnten.

Wir wollen aber noch einen Schritt weiter gehen und gleich ein lokales repository einrichten, so dass wir ab nun die selbst erstellten Pakete ganz einfach mittels "apt-get NAME" installieren und updaten können.

{209:left} !Debian repository Erstellen
Hierzu müssen wir noch zuerst die dpkg-dev Tools installieren:

apt-get install dpkg-dev

Nun können wir die Verzeichnisstruktur anlegen. Die sieht bei i386 Systemen so aus:

dists/etch/main/binary-i386/

Eine genaue Beschreibung wie eine Debian Repository aussehen muss findet sich im Debian repository-howto ; hier werden deshalb nur auf die nötigsten Schritte eingegangen.

Diese erstellen wir nun:

mkdir -p /repo/dists/etch/main/binary-i386/

Hier kopieren wir nun das .deb File hin:

cp -pv ganglia_3.0.6-1_i386.deb /repo/dists/etch/main/binary-i386/

Nun wechseln wir in dieses Verzeichnis und erstellen mit dem tool "dpkg-scanpackages" die Index Datei für den packetmanager:

cd /repo/dists/etch/main/binary-i386/
dpkg-scanpackages /repo/dists/etch/main/binary-i386/ /dev/null | gzip -9c > /repo/dists/etch/main/binary-i386/Packages.gz

Diese Datei hat genau den gleichen Aufbau wie die das Controlfile plus evtl. noch einige weitere Angaben, wie z.B. wo sich das deb-file befindet.

Diese kontrollieren und ergänzen wir nun ggf.:

vi /repo/dists/etch/main/binary-i386/Packages.gz

Für Ganglia sieht dies z.B. so aus:

Package: ganglia
Priority: extra
Section: checkinstall
Installed-Size: 1132
Maintainer: meine@email-adresse.tld
Architecture: i386
Version: 3.0.6-1
Depends: adduser, libart-2.0-2 (>= 2.3.16), libc6 (>= 2.3.5-1), librrd2
Suggests: ganglia-monitor, ganglia-webfrontend
Description: Ganglia is a scalable, real-time cluster monitoring environment with that collects cluster statistics in an open well-defined XML format.
 This package contains the 'gmetad', which collects information from ganglia monitor clients, and writes them to RRD databases.
Filename: dists/etch/main/binary-i386/ganglia_3.0.6-1_i386.deb

Repository aufnehmen

Nun muss man eigentlich das Repository nur noch in die /etc/apt/sources.list eintragen:

echo "deb file:///repo/ etch main" >> /etc/apt/sources.list

Ab jetzt kann man die aktuelle Software ganz einfach mittels:

apt-get install NAME

installieren.

Related Links

|| Link | Beschreibung
[http://www.linux-user.de/ausgabe/2006/07/047-checkinstall/index.html|Linux-User Beitrag 07/2006] | Dieser Beitrag erklärt die Bedienung von checkinstall.
[http://linuxwiki.de/CheckInstall|Tips&Tricks zu Checkinstall] | Kleine Tips-Seite auf linuxwiki.de
[http://www.debian.org/doc/debian-policy/ch-relationships.html|Debian Packaging Manual] | Informationen über das Erstellen von Debian Paketen
[http://www.debian.org/doc/manuals/repository-howto/repository-howto.de.html|Debian repository-howto] | Eine detaillierte Anleitung wie man Debian repositorys erstellt
[http://www.apt-get.org/|apt-get.org] | Beispiele von "echten" Debian repositorys
||

Related Downloads

|| File | Beschreibung
[http://asic-linux.com.mx/~izto/checkinstall/|CheckInstall] | Ein Programm um automatisch Debian und RPM-Pakete zu erstellen. Sehr nützlich!
||

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert