Arch Linux - Pakete selbst erstellen

Ein großer Vorteil von Arch Linux ist ohne Zweifel das Arch User Repository (AUR), welches der Community ermöglicht Pakete in Form von PKGBUILDs bereit zu stellen.

Logo of Arch Linux

Hierbei handelt es sich um „Vorschriften“ zur Erzeugung der Pakete und beinhalten das Herunterladen und Bearbeiten der Quellen sowie die Installation in einer Fakeroot-Umgebung sowie die Erstellung des Pakets. Natürlich könnte man danach aufhören und mit pacman -U das erzeugte Paket einfach installieren, jedoch kann die Übersetzungszeit bei großen Bibliotheken auf schwächeren Systemen schon mal eine halbe Ewigkeit dauern. Weiterhin können die Pakete aus dem AUR durchaus instabil arbeiten und/oder neue Funktionen enthalten, die das Arbeiten im bisherigen Sinne verkomplizieren oder unmöglich machen. Um mir zu mindestens nur einmal die Zeit für die Erstellung der Pakete nehmen zu müssen, war der Entschluss für ein eigenes privates Repository (plus folgendem Spiegelserver im LAN) schnell gefasst.

Wie oben beschrieben, gibt es im AUR schon vorgefertigte Kochrezepte für die Erstellung Pakete.

Also sollte man dort zunächst mit der Suche starten. Als Beispiel habe ich mit die Bibliothek „MAT File I/O Library“ ausgesucht, da ich sie auch des Öfteren für eigene Programme benötige. Das dazugehörige PKGBUILD sieht dabei wie folgt aus:

ruby

# Maintainer: Stefan Husmann <stefan-husmann@t-online.de>
# Contributor: Alexander Rødseth <rodseth@gmail.com>
# Contributor: William Rea <sillywilly@gmail.com>

pkgname=libmatio
pkgver=1.5.2
pkgrel=3
pkgdesc='C library with a fortran 90/95 module interface for reading/writing MATLAB MAT-files'
arch=('x86_64' 'i686')
license=('custom:BSD')
url='http://sourceforge.net/projects/matio'
depends=('zlib' 'hdf5')
options=('!libtool' '!emptydirs')
source=("http://downloads.sourceforge.net/matio/matio-$pkgver.tar.gz")
sha1sums=('d5a83a51eb2550d75811d2dde967ef3e167d4f52')

build() {
  cd matio-$pkgver
  ./configure --prefix=/usr --enable-shared --with-hdf5
  make
}
 
package() {
  cd matio-$pkgver
  make DESTDIR="$pkgdir" install
  install -Dm644 COPYING "$pkgdir"/usr/share/licenses/$pkgname/COPYING
}

Die einzige Bedingung für das Gelingen sind also nur ein Internetanschluss und das Paket „base-devel“ (eventuell auch abs) installiert ist und die Abhängigkeiten (siehe depends Zeile) geklärt sind. Lädt man sich diese hier herunter, speichert man es sinnvollerweise in einem Verzeichnis eurer Wahl. wichtig ist dabei, dass es die einzige Datei im Verzeichnis ist. Dies ist notwendig da das Skript, welches von Arch Linux ausgeliefert wird, den notwendigen Verzeichnisbaum für die Paketierung selbstständig erzeugt und es somit zwangsläufig Probleme bei mehr als einem Paket geben wird. Anschließend wechselt man mit dem Terminal in das Verzeichnis und startet das Skript: 

bash

makepkg -s

Das Skript erledigt die im PKGBUILD definierten Aufgaben und komprimiert anschließend das Paket, so das es für pacman verdaubar wird. Ist der Vorgang abgeschlossen, sollte eine Datei mit der Endung „*.xz“ im Verzeichnis vorliegen, welche ihr wie oben beschrieben installieren könnt.

bash

==> Säubere Installation...
  -> Bereinige ungewollte Dateien...
  -> Entferne libtool Dateien...
  -> Entferne static library Dateien...
  -> Entferne leere Verzeichnisse... 
  -> Komprimiere Man-Pages und Info-Seiten...
  -> Entferne unnötige Symbole aus Binär-Dateien und Bibliotheken...
==> Erstelle Paket "libmatio"...
  -> Erstelle .PKGINFO Datei...
  -> Erstelle .MTREE-Datei
  -> Komprimiere Paket ... 
==> Verlasse fakeroot Umgebung.
==> Beendete make: libmatio 1.5.2-2 (Do 18. Sep 10:27:01 CEST 2014)

Weiter mit dem eigenen Repository geht es dann im nächsten Beitrag zu dem Thema. Bei Fragen nutzt bitte die Kommentarfunktion.