Table of Contents

Rezepte

Dieses Dokument beschreibt, welche Möglichkeiten Rezepte bieten, mit den Kochwerkzeugen („cookutils“) in einem Wok und mit Tazpkg Pakete für SliTaz zu erzeugen. Rezepte werden auch von Tazpkg beim Installieren und Deinstallieren von Paketen sowie zur Ausgabe von Informationen über ein Paket verwendet. Jedes Rezept beginnt mit einem Kommentar in Englisch:

# SliTaz package receipt

Variablen

Die ersten fünf Variablen sollten immer vorhanden und nicht leer sein. Der Paketname wird in der Variablen PACKAGE angegeben, danach folgt die Version, die Kategorie zu der das Paket gehört, eine kurze Beschreibung und der Name des Betreuers. Für das Paket clex, eine Dateiverwaltung, kann das so aussehen:

PACKAGE="clex"
VERSION="3.16"
CATEGORY="base-apps"
SHORT_DESC="Text mode file manager."
MAINTAINER="pankso@slitaz.org"

optionale Variablen

Die Kochwerkzeuge kennen noch weitere, optionale Variablen. So kann beispielsweise der Name anderer Quellcode-Pakete angegeben werden. Weitere Variablen werden von Tazpkg benötigt, um Abhängigkeiten aufzulösen oder Informationen über das Paket bereitzustellen.

DEPENDS="ncurses"
BUILD_DEPENDS="ncurses-dev"
TARBALL="$PACKAGE-$VERSION.tar.gz"
WEB_SITE="http://www.clex.sk/"
WGET_URL="http://www.clex.sk/download/$TARBALL"
CONFIG_FILES="/etc/netatalk/AppleVolumes.* /etc/netatalk/*.conf"

Mithilfe dieser Variablen können auch virtuelle Pakete definiert werden. Die Zeilen PROVIDE=“libgl” im Rezept des Paketes mesa und PROVIDE=“libgl:nvidia” in dem von nvidia-glx legen fest, dass libgl eine optimierte Version ist, wenn das Paket nvidia installiert ist.

Von den Kochwerkzeugen erzeugte Variablen

Bestimmte Tatsachen sind nur bei oder nach der Erzeugung eines Paketes bekannt. Die Kochwerkzeuge fügen die entsprechenden Variablen automatisch in das Rezept ein.

Variablen, die in Funktionen verwendet werden

Die Kochwerkzeuge setzen mehrere Variablen, die die Übersetzung und Erzeugung von Paketen für SliTaz erleichtern. Diese Variablen werden automatisch von den Kochwerkzeugen anhand der Informationen in einem Rezept gesetzt; sie können von den Funktionen compile_rules und genpkg_rules genutzt werden, die im Abschnitt Funktionen beschrieben sind.

Funktionen

Ein Rezept kann vier Funktionen enthalten. Die Kochwerkzeuge verwenden die Funktionen compile_rules, die Regeln für die Übersetzung von Quellprogrammen enthält und genpkg_rules, die Regeln für das Packen des Paketes enthält. Diese Funktionen können alle möglichen GNU/Linux-Standard-Kommandos enthalten, z.B. sed, awk, patch und die automatisch gesetzten Variablen verwenden.

compile_rules()

Um die Quellprogrammene eines Paketes zu übersetzen, kann mit der Variablen src das Verzeichnis, das die Quellprogramme enthält, als Arbeitsverzeichnis eingestellt werden (cd) und dann aus CONFIGURE_ARGS Parameter aus der Konfigurationsdatei der Kochwerkzeuge übernommen werden. Normalerweise wird das Paket dann mit make ohne irgendwelche Argumente erzeugt, soll es im Verzeichnis $DESTDIR installiert werden, so ist make DESTDIR=$DESTDIR install anzugeben. Allgemeines Beispiel:

# Rules to configure and make the package.
compile_rules()
{
	cd $src
	./configure --prefix=/usr --infodir=/usr/share/info \
	--mandir=/usr/share/man $CONFIGURE_ARGS
	make
	make DESTDIR=$DESTDIR install (oder einfach make install)
}

genpkg_rules()

Um ein SliTaz-Paket zu erzeugen, müssen entsprechende Kommandos in der Funktion genpkg_rules angegeben werden. In diesem Beispiel wird ein Pseudo-Verzeichnis /usr in dem Dateisystem des Paketes erstellt, dorthin alle Objektdateien kopiert und daraus die Symbolinformationen entfernt:

# Rules to gen a SliTaz package suitable for Tazpkg.
genpkg_rules()
{
	mkdir -p $fs/usr
	cp -a $install/usr/bin $fs/usr
	strip -s $fs/usr/bin/*
}

pre_install() und post_install()

Diese Funktionen werden von Tazpkg ausgeführt, wenn ein Paket installiert wird. Sie müssen im Rezept enthalten sein, bevor das Paket mit den Kochwerkzeugen erstellt wird. Wenn diese Funktionen keine Regeln enthalten, sind sie sinnlos und können entfernt werden. Ein Beispiel mit echo zur Ausgabe von irgendwelchem Text (keine FunKtion sollte leer sein):

# Pre and post install commands for Tazpkg.
pre_install()
{
	echo "Processing pre-install commands..."
}
post_install()
{
	echo "Processing post-install commands..."
}

pre_remove() und post_remove()

Diese Funktionen werden von Tazpkg ausgeführt, wenn ein Paket deinstalliert wird. Sie müssen im Rezept enthalten sein, bevor das Paket mit den Kochwerkzeugen erstellt wird. Wenn diese Funktionen keine Regeln enthalten, sind sie sinnlos und können entfernt werden. Ein Beispiel mit echo zur Ausgabe von irgendwelchem Text (keine FunKtion sollte leer sein):

# Pre and post remove commands for Tazpkg.
pre_remove()
{
	echo "Processing pre-remove commands..."
}
post_remove()
{
	echo "Processing post-remove commands..."
}