cookutils.de.html
Kochwerkzeuge-Handbuch Kochwerkzeuge-Handbuch
SliTaz „Cook“ & „Cooker“
Die SliTaz-Kochwerkzeuge dienen zum Erzeugen von Paketen im SliTaz-eigenen Format. Sie sind schnell, genügsam, leicht zu erlernen und zu benutzen. Das Erstellen von Paketen für SliTaz erfordert nur wenige Kommandos. Die Kochwerkzeuge enthalten „Cook“ und „Cooker“.
Mit
cookkann ein Paket aus den Quellen übersetzt und gepackt werden; dabei wird eine Protokolldatei erstellt. Die Qualität des Rezeptes und des Paketes kann geprüft werden. „Cooker“ ist ein Kompilierungsautomat, der als Benutzerschnittstelle mit einer Weboberfläche fürcookverwendet werden kann. Damit können auch die Protokolldateien farbig aufbereitet angesehen werden. „Cook“ und „Cooker“ greifen auf dieselben Datenbankdateien und denselben Wok zu, sie haben gesperrte und defekte Pakete wie auch alle Aktivitäten gemeinsam.Technische Details, wie etwa die Programmierung usw., sind in der Datei
/usr/share/doc/cookutils/READMEbeschrieben.„Cook“-Anwendung
„Cook“ enthält eine Kurzanleitung, die mit
cook usageausgegeben werden kann. Es können auch Optionen angegeben werden, mit denen besondere Arbeiten vor oder nach der Paketerzeugung ausgeführt werden. Anzeige der Kurzanleitung:# cook usagePraktische Anleitung
Bevor Pakete erzeugt werden können, muss zunächst die Umgebung dafür eingerichtet werden. Es gibt zwei Möglichkeiten für die Paketerzeugung: direkt auf dem Rechner, an dem Sie angemeldet sind oder in einer „chroot“-Umgebung zum Schutz der Dateien Ihres Rechners vor ungewollten Veränderungen. Wenn Sie in einer „chroot“-Umgebung arbeiten wollen, können Sie
tazdevinstallieren und benutzen:# tazdev gen-chroot && tazdev chrootStandardmäßig erzeugt tazdev eine „chroot“-Umgebung in
/home/slitaz/cooking/chroot, aber Sie können auch einen Pfad als Parameter angeben. Der Ort für die „chroot“-Umgebung ist unwichtig; wenn in die „chroot“-Umgebung gewechselt wurde, werden Standard-SliTaz-Pfade wie z.B./home/slitaz/wokfür den Wok oder/home/slitaz/logfür die Generierungsprotokolle verwendet. Wie üblich kann eine Kurzanleitung ausgegeben werden mit:$ tazdev usageWenn Sie eine „chroot“-Umgebung verwenden, gibt es zwei besondere Verzeichnisse, die mit der bind-Option eingehängt sind:
srcundpackages. Die Quellarchive aller Pakete werden standardmäßig im Verzeichnis/home/slitaz/srcabgelegt. Dieses Verzeichnis wird in der „chroot“-Umgebung eingehängt, so dass die Programme darauf zugreifen können. Dadurch können Quellprogramme von mehreren „chroot“-Umgebungen gemeinsam benutzt werden, etwa einer für die Entwicklungsversion und einer für die stabile Version. Das Verzeichnis für die fertigen Pakete ist standardmäßig/home/slitaz/[version]/packages, also nicht in einer „chroot“-Umgebung, wo sie sicher aufbewahrt sind für den Fall, dass die „chroot“-Umgebung versehentlich verlassen wird.Einrichten der Umgebung
Wenn Sie sich für eine der Möglichkeiten entschieden haben, kann die Umgebung für
cookeingerichtet werden. „Cook“ verwendet die Konfigurationsdateicook.conf. Wenn andere als die Standardpfade der Verzeichnisse und Dateien verwendet werden sollen, müssen diese dort eingetragen werden. Mitsetupwerden einige Verzeichnisse und Dateien erzeugt, in denen Aktivitäten und Fehler festgehalten werden. Alle Dateien sind einfache Textdateien, die mit einem Texteditor betrachtet werden können. Die Umgebung wird eingerichtet mit:# cook setupBei
setupkann mit der Option--wokbestimmt werden, dass beim Einrichten der Umgebung der Wokwokaus dem SliTaz-Mercurial-Depot dupliziert werden soll. Auch wenn Sie kein offizieller Entwickler sind, können Sie den Wok duplizieren und darin enthaltene Pakete als Muster für Ihre eigenen Pakete verwenden. Mit den folgenden Kommandos wird die Umgebung eingerichtet und der Entwicklungswok bzw. der inoffizielle Wok dupliziert:# cook setup --wok # cook setup --undigestTesten der Umgebung
„Cook“ bietet die Möglichkeit, die Umgebung zu testen, indem ein Paket erzeugt wird. Damit können Sie feststellen, ob Ihre Umgebung funktionsfähig ist, und Sie haben ein Beispielpaket mit einem Rezept. Dieses Pseudo-Paket heisst
cooktestund kann nach dem Test entfernt werden. Der Test wird ausgeführt mit:# cook testPaket erzeugen
Wenn die Umgebung korrekt eingerichtet ist, können neue Pakete für SliTaz aus dem Wok erzeugt werden. Mit dem folgenden Kommando wird ein neues Paket mit einem leeren Rezept definiert:
# cook new pkgnameMit dem folgenden Kommando wird ein neues Paket definiert, wobei das Rezept interaktiv erstellt wird:# cook new pkgname --interactiveWenn Sie ein neues Paket mit leerem Rezept definiert haben, muss das Rezept mit einem Texteditor bearbeitet werden. Wenn das Rezept fertig ist, oder wenn das Paket schon existierte, kann es anschließend erstellt werden:
# cook pkgnameWenn alles gut ging, befindet sich das Paket im Verzeichnis
$SLITAZ/packagesund weitere erzeugte Dateien im Verzeichnis$SLITAZ/wok/pkgname.Paket erzeugen und installieren
Wenn das Paket erzeugt und anschließend auch installiert werden soll, geht das mit:
# cook pkgname --installPaketquellen transferieren
Wenn Sie nur die Quelldateien eines Paketes benötigen, aber das Paket nicht erstellen wollen, können Sie die Option
getsrcverwenden:# cook pkgname --getsrcWok aufräumen
Nach dem Erzeugen und Packen eines Paketes enthält der Wok verschiedene Dateien, die Plattenplatz belegen. Diese Dateien eines einzelnen Paketes können gelöscht werden mit:
# cook pkgname --cleanEs können auch die Dateien aller Pakete aus dem Wok entfernt werden, oder nur die Quelldateien:
# cook clean-wok # cook clean-srcSuchen im Wok
„Cook“ bietet auch eine einfache Suchfunktion, um schnell ein Paket im Wok zu finden. Diese verwendet
grepund unterstützt damit reguläre Ausdrücke:# cook search busyboxRezept-Funktionen
Viele Pakete, so wie die *-dev-Pakete, enthalten gleichartige Dateien wie statische Bibliotheken, pkgconfig-Dateien und include-Dateien. Dafür bietet
cookeine Funktion, die im Rezept verwendet werden kann:get_dev_files : Install /usr/lib/{lib.*a,pkgconfig} /usr/includeListe der Paket-Datenbank
„Cook“ kann eine Liste der Pakete im Wok ausgeben, und zwar in einem für Tazpkg geeigneten Format. Damit kann sehr einfach ein lokales Paket-Depot erstellt werden; damit wird auch die offizielle SliTaz-Paketliste aller Spiegel-Depots erstellt. Eine Liste der Pakete im aktuellen Wok erhält auch ein nicht privilegierter Benutzer mit:
$ cook list-wokWenn die Paket-Datenbank erstellt wird, prüft
cook, ob ein Varianten-Depot im Verzeichnis/home/slitaz/flavorsvorhanden ist. Ist dies der Fall, so werden alle Varianten gemäß der letzten verfügbaren Paketliste gepackt. Das Kommando dafür ist:# cook pkgdb„Cooker“
„Cooker“ ist ein Kompilierungsautomat, der zunächst nach Übergaben in einem Wok sucht, eine geordnete Liste zu erzeugender Pakete erstellt und schließlich alle geänderten Pakete erzeugt. „Cooker“ kann auch als Benutzeroberfläche für
cookverwendet werden, da beide dieselben Dateien benutzen. „Cooker“ kann auch eine lange Liste von Paketen abarbeiten, wie etwa alle Pakete einer Variante. „Cooker“ bietet eine gefällige Web-Oberfläche, die standardmäßig auf jedem SliTaz verwendet werden kann, da die benötigte CGI-Unterstützung von dem Busybox-Webserverhttpdbereitgestellt wird.„Cooker“ enthält eine Kurzanleitung, die mit folgenden Kommandos ausgegeben werden kann:
# cooker usage # cooker -u„Cooker“-Einrichtung
Wie „Cook“ benötigt auch „Cooker“ eine Arbeitsumgebung für seinen Einsatz. Der wesentliche Unterschied zur Umgebung von „Cook“ ist, dass „Cooker“ zwei Woks benötigt. Ein sauberer, aus einem Mercurial-Depot duplizierter Wok als Referenz und einen Wok für die Paketerzeugung. Damit ist es einfach, beide Woks zu vergleichen und Änderungen festzustellen. Wenn schon eine Umgebung für
cookvorhanden ist, muss der Wok umbenannt werden, bevor die Umgebung für „Cooker“ eingerichtet wird, sonst meckert „Cooker“. Bei der Einrichtung wird auch eine Reihe von Entwickler-Paketen installiert, die über die VariableSETUP_PKGSin der Konfigurationsdateicook.confangegeben werden können. Das Kommando lautet:# cooker setupWenn alles gut gegangen ist, sind jetzt zwei Woks vorhanden, die Basis-Entwickler-Pakete installiert und alle benötigten Dateien erstellt. Da zunächst nach Übergaben in einem Wok gesucht wird, können Sie testweise eingeben:
# cooker„Cooker“-Paketerzeugung
Auch hier gibt es wieder zwei Möglichkeiten: Änderungen in dem sauberen, aus einem Mercurial-Depot duplizierten Wok vornehmen und „Cooker“ ohne Parameter starten oder Pakete manuell erzeugen. Mit „Cooker“ können ein einzelnes Paket oder alle Pakete einer Kategorie oder einer Variante erzeugt werden. Sie können auch versuchen, alle noch nicht erzeugten Pakete zu erzeugen. Beachten Sie aber, dass „Cooker“ nicht dafür eingerichtet ist, tausende von Paketen zu verarbeiten.
Ein einzelnes Paket wird (wie mit
cook pkgname, aber mit erweiterter Protokollierung) erzeugt mit:# cooker pkg pkgnameEs gibt verschiedene Möglichkeiten, mehrere Pakete mit einem Kommando zu erzeugen: Sie können ein existierendes Paket angeben, wie es für eine Variante eines ISO-Abbildes verwendet wird, oder Sie können eine Datei angeben, die je Zeile den Namen eines Paketes enthält. Schließlich können Sie auch eine Kategorie angeben.
# cooker flavor [name] # cooker list [/path/to/cooklist] # cooker cat [category]„Cooker“ ermöglicht es auch, einen bestimmten Änderungsstand aus einem Mercurial-Depot anzugeben. Das ist nützlich, wenn der Kompilierungsautomat bei der Paketerzeugung unterbrochen wurde: Sie können dann bestimmte Pakete manuell erzeugen:
# cooker rev 9496Gesperrte Pakete
„Cook“ und „Cooker“ benutzen eine Datei, die eine Liste gesperrter Pakete enthält, die nicht erzeugt werden, wenn Übergaben erfolgen oder eine Liste zu erzeugender Pakete verwendet wird. Dies ist sehr nützlich, wenn ein Kompilierungsautomat „Cooker“ in einer Produktivumgebung eingesetzt wird. Beim Sperren oder Entsperren eines Paketes kann eine Bemerkung angegeben werden. Beispiel:
# cook pkgname --block # cooker block pkgname # cooker -n "pkgname gesperrt, weil..."Eine Liste der gesperrten Pakete kann auch in der Web-Oberfläche von „Cooker“ angezeigt werden. Zum Entsperren eines Paketes kann
cooker unblockodercook --unblockverwendet werden:# cook pkgname --unblock # cooker unblock pkgname„Cooker“-Web-Oberfläche
Mit der „Cooker“-Web-Oberfläche können Protokolldateien farbig aufbereitet angesehen, Aktivitäten verfolgt und Fehler gesucht werden. Die dazu benötigten Dateien befinden sich im Verzeichnis
/var/www/cooker. Wenn Sie keine „chroot“-Umgebung verwenden und der Busybox-Webserverhttpdläuft, kann die Web-Oberfläche ohne weitere Konfigurierung verwendet werden und sollte über http://localhost/cooker/cooker.cgi erreichbar sein.Wenn Sie eine „chroot“-Umgebung verwenden, sollten Sie
cookutilsebenfalls auf Ihrem Rechner installieren und die Pfadvariable SLITAZ anpassen. Ein Standardverfahren ist es, eine chroot-Umgebung in:/home/slitaz/cooking/chrootzu haben und/etc/slitaz/cook.confwie folgt zu ändern:SLITAZ="/home/slitaz/cooking/chroot/home/slitaz"Beachten Sie: Um die Web-Oberfläche zu verwenden ist es nicht erforderlich,
cookutilsauf Ihrem Rechner zu installieren. Wenn Sie Lighttpd verwenden, können Sie die Dateiencooker.cgiundstyle.cssbeispielsweise in Ihr Verzeichnis ~/Public kopieren und eine eigene Dateicook.confdafür verwenden. Die Installation voncookutilsauf Ihrem Rechner hat den Vorteil, dass Sie über die Paketverwaltung Tazpkg regelmäßig Aktualisierungen erhalten. Wenn Siecookutilsaus einem Mercurial-Depot dupliziert oder aus einem Paket-Depot transferiert haben:$ cp -a cookutils/web ~/Public/cgi-bin/cooker $ cp -f cookutils/cook.conf ~/Public/cgi-bin/cookerÄndern Sie in der Konfigurationsdatei
~/Public/cgi-bin/cooker/cook.confin der Variablen SLITAZ den Pfad und alles ist erledigt!Erzeugungsnotizen
Die Notizfunktion ermöglicht es, kleine persönliche Bemerkungen über die Paketerzeugung zu hinterlegen und nutzt der Zusammenarbeit mit anderen Entwicklern. Diese Funktion ist implementiert worden, um Informationen zwischen den Betreuern des Kompilierungsautomaten „Cooker“ und Entwicklern auszutauschen. „Cooker“ kann ein Paket sperren, so dass es nicht mehr erzeugt wird. Dann ist es hilfreich, beim Sperren eine Notiz zu hinterlegen, warum das Paket gesperrt wurde. Die Erzeugungsnotizen werden an der Web-Oberfläche angezeigt und können per Kommando erstellt und abgerufen werden:
# cooker note "pkgname wegen hoher CPU-Last gesperrt" # cooker notes„Cooker“ als Kompilierungsautomat
„Cooker“ ist als Kompilierungsautomat für SliTaz gestaltet, das heißt er überwacht zwei Woks, aktualisiert den Mercurial-Wok, stellt die Unterschiede fest und erzeugt alle übergebenen Pakete. Die sicherere und sauberere Art, „Cooker“ als Kompilierungsautomat einzusetzen, stellt die Nutzung einer „chroot“-Umgebung dar; aber auch der direkte Ablauf auf Ihrem Rechner ist möglich.
Mit
cronin der „chroot“-Umgebung kann „Cooker“ automatisch gestartet werden, indem in die Datei/var/spool/cron/crontabs/rooteine entsprechende Zeile eingefügt wird. Wenn „Cooker“ alle zwei Stunden gestartet werden soll zum Beispiel:* */2 * * * /usr/bin/cooker„Cooker“-Kompilierungsautomat bei der Systemeinleitung starten
Bei der Systemeinleitung kann die Umgebung für „Cooker“ eingerichtet werden und der cron-Prozess gestartet werden. Damit dies richtig funktioniert, muss das Paket
cookutils-daemoninstalliert sein und eine Standard-SliTaz-Installation verwendet werden (die Paketerzeugung spielt sich in/home/slitaz/cookingab). Die Kommandoprozedur voncookutils-daemonhängt alle benötigten virtuellen Dateisysteme ein wie auchsourceundpackages. Quelldateien befinden sich im Verzeichnis/home/slitaz/srcund werden in die „chroot“-Umgebung eingebunden, so dass Paketquellen in verschiedenen Versionen (stabil, Entwicklung, inoffiziell) gemeinsam benutzt werden können. So wirdcookutils-daemoninstalliert:# tazpkg get-install cookutils-daemonDamit der Hintergrundprozess gestartet werden kann, muss in der „chroot“-Umgebung eine cron-Datei für root vorhanden sein. Die Kommandoprozedur funktioniert wie die aller anderen Hintergrundprozesse und wird aufgerufen mit:
# /etc/init.d/cooker [start|stop|restart]
SliTaz Cooker · i486