cookutils view doc/cookutils.de.html @ rev 1150

Show recent broken packages first
author Pascal Bellard <pascal.bellard@slitaz.org>
date Sat Feb 19 15:32:45 2022 +0000 (2022-02-19)
parents
children
line source
1 <!DOCTYPE html>
2 <html xmlns="http://www.w3.org/1999/xhtml" lang="en">
3 <head>
4 <meta charset="utf-8" />
5 <title>Kochwerkzeuge-Handbuch</title>
6 <link rel="stylesheet" type="text/css" href="../slitaz-doc.css" />
7 <script type="text/javascript" src="../slitaz-doc.js"></script>
8 </head>
9 <body>
11 <header>
12 <h1>Kochwerkzeuge-Handbuch</h1>
13 </header>
15 <!-- Start content -->
16 <div id="content">
18 <h2>SliTaz „Cook“ &amp; „Cooker“</h2>
20 <p>
21 Die SliTaz-Kochwerkzeuge dienen zum Erzeugen von Paketen im SliTaz-eigenen Format. Sie
22 sind schnell, genügsam, leicht zu erlernen und zu benutzen. Das Erstellen von Paketen für SliTaz
23 erfordert nur wenige Kommandos. Die Kochwerkzeuge enthalten „Cook“ und
24 <a href="#cooker">„Cooker“</a>.
25 </p>
26 <p>
27 Mit <code>cook</code> kann ein Paket aus den Quellen übersetzt und gepackt werden; dabei wird eine
28 Protokolldatei erstellt. Die Qualität des Rezeptes und des Paketes kann geprüft werden.
29 „Cooker“ ist ein Kompilierungsautomat, der als Benutzerschnittstelle mit einer Weboberfläche
30 für <code>cook</code> verwendet werden kann. Damit können auch die Protokolldateien
31 farbig aufbereitet angesehen werden. „Cook“ und „Cooker“
32 greifen auf dieselben Datenbankdateien und denselben Wok zu, sie haben <a href="#blocked">gesperrte</a>
33 und defekte Pakete wie auch alle Aktivitäten gemeinsam.
34 </p>
35 <p>
36 Technische Details, wie etwa die Programmierung usw., sind in der Datei
37 <code>/usr/share/doc/cookutils/README</code> beschrieben.
38 </p>
40 <h3>„Cook“-Anwendung</h3>
41 <p>
42 „Cook“ enthält eine Kurzanleitung, die mit
43 <code>cook usage</code> ausgegeben werden kann. Es können auch Optionen angegeben werden, mit
44 denen besondere Arbeiten vor oder nach der Paketerzeugung ausgeführt werden.
45 Anzeige der Kurzanleitung:
46 </p>
47 <pre>
48 # cook usage
49 </pre>
51 <h3>Praktische Anleitung</h3>
52 <p>
53 Bevor Pakete erzeugt werden können, muss zunächst die Umgebung dafür eingerichtet werden.
54 Es gibt zwei Möglichkeiten für die Paketerzeugung: direkt auf dem Rechner, an dem Sie
55 angemeldet sind oder in einer „chroot“-Umgebung zum Schutz der Dateien Ihres Rechners vor
56 ungewollten Veränderungen. Wenn Sie in einer „chroot“-Umgebung arbeiten wollen,
57 können Sie <code>tazdev</code> installieren und benutzen:
58 </p>
59 <pre>
60 # tazdev gen-chroot &amp;&amp; tazdev chroot
61 </pre>
62 <p>
63 Standardmäßig erzeugt tazdev eine „chroot“-Umgebung in <code>/home/slitaz/cooking/chroot</code>,
64 aber Sie können auch einen Pfad als Parameter angeben. Der Ort für die „chroot“-Umgebung ist
65 unwichtig; wenn in die „chroot“-Umgebung gewechselt wurde, werden Standard-SliTaz-Pfade
66 wie z.B. <code>/home/slitaz/wok</code> für den Wok oder <code>/home/slitaz/log</code>
67 für die Generierungsprotokolle verwendet. Wie üblich kann eine Kurzanleitung ausgegeben werden mit:
68 <pre>
69 $ tazdev usage
70 </pre>
71 </p>
72 <p>
73 Wenn Sie eine „chroot“-Umgebung verwenden, gibt es zwei besondere Verzeichnisse, die mit der
74 bind-Option eingehängt sind: <code>src</code> und <code>packages</code>. Die Quellarchive aller Pakete
75 werden standardmäßig im Verzeichnis <code>/home/slitaz/src</code> abgelegt. Dieses Verzeichnis
76 wird in der „chroot“-Umgebung eingehängt, so dass die Programme darauf zugreifen können.
77 Dadurch können Quellprogramme von mehreren „chroot“-Umgebungen gemeinsam benutzt werden,
78 etwa einer für die Entwicklungsversion und einer für die stabile Version. Das Verzeichnis für die
79 fertigen Pakete ist standardmäßig <code>/home/slitaz/[version]/packages</code>, also nicht in einer
80 „chroot“-Umgebung, wo sie sicher aufbewahrt sind für den Fall, dass die „chroot“-Umgebung
81 versehentlich verlassen wird.
82 </p>
84 <h3>Einrichten der Umgebung</h3>
85 <p>
86 Wenn Sie sich für eine der Möglichkeiten entschieden haben, kann die Umgebung für <code>cook</code>
87 eingerichtet werden.
88 „Cook“ verwendet die Konfigurationsdatei <code>cook.conf</code>. Wenn andere als die Standardpfade
89 der Verzeichnisse und Dateien verwendet werden sollen, müssen diese dort eingetragen werden.
90 Mit <code>setup</code> werden einige Verzeichnisse und Dateien erzeugt,
91 in denen Aktivitäten und Fehler festgehalten werden. Alle Dateien sind einfache Textdateien,
92 die mit einem Texteditor betrachtet werden können. Die Umgebung wird eingerichtet mit:
93 </p>
94 <pre>
95 # cook setup
96 </pre>
97 <p>
98 Bei <code>setup</code> kann mit der Option <code>--wok</code> bestimmt werden, dass beim Einrichten
99 der Umgebung der Wok <code>wok</code> aus dem SliTaz-Mercurial-Depot dupliziert werden soll.
100 Auch wenn Sie kein offizieller Entwickler sind, können Sie den Wok duplizieren und darin
101 enthaltene Pakete als Muster für Ihre eigenen Pakete verwenden.
102 Mit den folgenden Kommandos wird die Umgebung eingerichtet und der Entwicklungswok bzw. der
103 inoffizielle Wok dupliziert:
104 </p>
105 <pre>
106 # cook setup --wok
107 # cook setup --undigest
108 </pre>
110 <h3>Testen der Umgebung</h3>
111 <p>
112 „Cook“ bietet die Möglichkeit, die Umgebung zu testen, indem ein Paket erzeugt wird. Damit können
113 Sie feststellen, ob Ihre Umgebung funktionsfähig ist, und Sie haben ein Beispielpaket mit einem
114 Rezept. Dieses Pseudo-Paket heisst <code>cooktest</code> und kann nach dem Test entfernt werden.
115 Der Test wird ausgeführt mit:
116 </p>
117 <pre>
118 # cook test
119 </pre>
121 <h3>Paket erzeugen</h3>
122 <p>
123 Wenn die Umgebung korrekt eingerichtet ist, können neue Pakete für SliTaz aus dem Wok erzeugt werden.
124 Mit dem folgenden Kommando wird ein neues Paket mit einem leeren Rezept definiert:
125 <pre>
126 # cook new <em>pkgname</em>
127 </pre>
128 Mit dem folgenden Kommando wird ein neues Paket definiert, wobei das Rezept interaktiv erstellt wird:
129 <pre>
130 # cook new <em>pkgname</em> --interactive
131 </pre>
132 </p>
133 <p>
134 Wenn Sie ein neues Paket mit leerem Rezept definiert haben, muss das Rezept mit einem Texteditor
135 bearbeitet werden. Wenn das Rezept fertig ist, oder wenn das Paket schon existierte, kann es
136 anschließend erstellt werden:
137 </p>
138 <pre>
139 # cook <em>pkgname</em>
140 </pre>
141 <p>
142 Wenn alles gut ging, befindet sich das Paket im Verzeichnis <code>$SLITAZ/packages</code>
143 und weitere erzeugte Dateien im Verzeichnis <code>$SLITAZ/wok/<em>pkgname</em></code>.
144 </p>
146 <h3>Paket erzeugen und installieren</h3>
147 <p>
148 Wenn das Paket erzeugt und anschließend auch installiert werden soll, geht das mit:
149 </p>
150 <pre>
151 # cook <em>pkgname</em> --install
152 </pre>
154 <h3>Paketquellen transferieren</h3>
155 <p>
156 Wenn Sie nur die Quelldateien eines Paketes benötigen, aber das Paket nicht erstellen wollen,
157 können Sie die Option <code>getsrc</code> verwenden:
158 </p>
159 <pre>
160 # cook <em>pkgname</em> --getsrc
161 </pre>
163 <h3>Wok aufräumen</h3>
164 <p>
165 Nach dem Erzeugen und Packen eines Paketes enthält der Wok verschiedene Dateien, die
166 Plattenplatz belegen. Diese Dateien eines einzelnen Paketes können gelöscht werden mit:
167 </p>
168 <pre>
169 # cook <em>pkgname</em> --clean
170 </pre>
171 <p>
172 Es können auch die Dateien aller Pakete aus dem Wok entfernt werden, oder nur die Quelldateien:
173 </p>
174 <pre>
175 # cook clean-wok
176 # cook clean-src
177 </pre>
179 <h3>Suchen im Wok</h3>
180 <p>
181 „Cook“ bietet auch eine einfache Suchfunktion, um schnell ein Paket im Wok zu finden.
182 Diese verwendet <code>grep</code> und unterstützt damit reguläre Ausdrücke:
183 </p>
184 <pre>
185 # cook search busybox
186 </pre>
188 <h3>Rezept-Funktionen</h3>
189 <p>
190 Viele Pakete, so wie die *-dev-Pakete, enthalten gleichartige Dateien wie
191 statische Bibliotheken, pkgconfig-Dateien und include-Dateien. Dafür bietet <code>cook</code>
192 eine Funktion, die im Rezept verwendet werden kann:
193 </p>
194 <pre>
195 get_dev_files : Install /usr/lib/{lib.*a,pkgconfig} /usr/include
196 </pre>
198 <h3>Liste der Paket-Datenbank</h3>
199 <p>
200 „Cook“ kann eine Liste der Pakete im Wok ausgeben, und zwar in einem für Tazpkg geeigneten Format.
201 Damit kann sehr einfach ein lokales Paket-Depot erstellt werden; damit wird auch die offizielle
202 SliTaz-Paketliste aller Spiegel-Depots erstellt.
203 Eine Liste der Pakete im aktuellen Wok erhält auch ein nicht privilegierter Benutzer mit:
204 </p>
205 <pre>
206 $ cook list-wok
207 </pre>
208 <p>
209 Wenn die Paket-Datenbank erstellt wird, prüft <code>cook</code>, ob ein Varianten-Depot im
210 Verzeichnis <code>/home/slitaz/flavors</code> vorhanden ist. Ist dies der Fall, so werden alle
211 Varianten gemäß der letzten verfügbaren Paketliste gepackt. Das Kommando dafür ist:
212 </p>
213 <pre>
214 # cook pkgdb
215 </pre>
217 <h3 id="cooker">„Cooker“</h3>
218 <p>
219 „Cooker“ ist ein Kompilierungsautomat, der zunächst nach Übergaben in einem Wok sucht,
220 eine geordnete Liste zu erzeugender Pakete erstellt und schließlich alle geänderten Pakete erzeugt.
221 „Cooker“ kann auch als Benutzeroberfläche für <code>cook</code> verwendet werden, da beide
222 dieselben Dateien benutzen. „Cooker“ kann auch eine lange Liste von Paketen abarbeiten,
223 wie etwa alle Pakete einer Variante. „Cooker“ bietet eine gefällige Web-Oberfläche, die
224 standardmäßig auf jedem SliTaz verwendet werden kann, da die benötigte CGI-Unterstützung von dem
225 Busybox-Webserver <code>httpd</code> bereitgestellt wird.
226 </p>
227 <p>
228 „Cooker“ enthält eine Kurzanleitung, die mit folgenden Kommandos ausgegeben werden kann:
229 </p>
230 <pre>
231 # cooker usage
232 # cooker -u
233 </pre>
235 <h3>„Cooker“-Einrichtung</h3>
236 <p>
237 Wie „Cook“ benötigt auch „Cooker“ eine Arbeitsumgebung für seinen Einsatz.
238 Der wesentliche Unterschied zur Umgebung von „Cook“ ist, dass „Cooker“ zwei Woks benötigt.
239 Ein sauberer, aus einem Mercurial-Depot duplizierter Wok als Referenz und einen Wok für die
240 Paketerzeugung. Damit ist es einfach, beide Woks zu vergleichen und Änderungen festzustellen.
241 Wenn schon eine Umgebung für <code>cook</code> vorhanden ist, muss der Wok umbenannt werden,
242 bevor die Umgebung für „Cooker“ eingerichtet wird, sonst meckert „Cooker“. Bei der Einrichtung wird
243 auch eine Reihe von Entwickler-Paketen installiert, die über die Variable <code>SETUP_PKGS</code> in der
244 Konfigurationsdatei <code>cook.conf</code> angegeben werden können.
245 Das Kommando lautet:
246 </p>
247 <pre>
248 # cooker setup
249 </pre>
250 <p>
251 Wenn alles gut gegangen ist, sind jetzt zwei Woks vorhanden, die Basis-Entwickler-Pakete installiert
252 und alle benötigten Dateien erstellt. Da zunächst nach Übergaben in einem Wok gesucht wird,
253 können Sie testweise eingeben:
254 </p>
255 <pre>
256 # cooker
257 </pre>
259 <h3>„Cooker“-Paketerzeugung</h3>
260 <p>
261 Auch hier gibt es wieder zwei Möglichkeiten: Änderungen in dem sauberen, aus einem Mercurial-Depot
262 duplizierten Wok vornehmen und „Cooker“ ohne Parameter starten oder Pakete manuell erzeugen.
263 Mit „Cooker“ können ein einzelnes Paket oder alle Pakete einer Kategorie oder einer Variante erzeugt
264 werden. Sie können auch versuchen, alle noch nicht erzeugten Pakete zu erzeugen. Beachten Sie aber,
265 dass „Cooker“ nicht dafür eingerichtet ist, tausende von Paketen zu verarbeiten.
266 </p>
267 <p>
268 Ein einzelnes Paket wird (wie mit <code>cook <em>pkgname</em></code>, aber mit erweiterter
269 Protokollierung) erzeugt mit:
270 </p>
271 <pre>
272 # cooker pkg <em>pkgname</em>
273 </pre>
274 <p>
275 Es gibt verschiedene Möglichkeiten, mehrere Pakete mit einem Kommando zu erzeugen:
276 Sie können ein existierendes Paket angeben, wie es für eine Variante eines ISO-Abbildes verwendet wird,
277 oder Sie können eine Datei angeben, die je Zeile den Namen eines Paketes enthält.
278 Schließlich können Sie auch eine Kategorie angeben.
279 </p>
280 <pre>
281 # cooker flavor [<em>name</em>]
282 # cooker list [<em>/path/to/cooklist</em>]
283 # cooker cat [<em>category</em>]
284 </pre>
285 <p>
286 „Cooker“ ermöglicht es auch, einen bestimmten Änderungsstand aus einem Mercurial-Depot anzugeben.
287 Das ist nützlich, wenn der Kompilierungsautomat bei der Paketerzeugung unterbrochen wurde: Sie
288 können dann bestimmte Pakete manuell erzeugen:
289 </p>
290 <pre>
291 # cooker rev 9496
292 </pre>
294 <h3 id="blocked">Gesperrte Pakete</h3>
295 <p>
296 „Cook“ und „Cooker“ benutzen eine Datei, die eine Liste gesperrter Pakete enthält, die nicht erzeugt
297 werden, wenn Übergaben erfolgen oder eine Liste zu erzeugender Pakete verwendet wird.
298 Dies ist sehr nützlich, wenn ein Kompilierungsautomat „Cooker“ in einer Produktivumgebung eingesetzt
299 wird. Beim Sperren oder Entsperren eines Paketes kann eine Bemerkung angegeben werden.
300 Beispiel:
301 </p>
302 <pre>
303 # cook <em>pkgname</em> --block
304 # cooker block <em>pkgname</em>
305 # cooker -n "<em>pkgname</em> gesperrt, weil..."
306 </pre>
307 <p>
308 Eine Liste der gesperrten Pakete kann auch in der Web-Oberfläche von „Cooker“ angezeigt werden.
309 Zum Entsperren eines Paketes kann <code>cooker unblock</code> oder <code>cook --unblock</code>
310 verwendet werden:
311 </p>
312 <pre>
313 # cook <em>pkgname</em> --unblock
314 # cooker unblock <em>pkgname</em>
315 </pre>
317 <h3>„Cooker“-Web-Oberfläche</h3>
318 <p>
319 Mit der „Cooker“-Web-Oberfläche können Protokolldateien farbig aufbereitet angesehen,
320 Aktivitäten verfolgt und Fehler gesucht werden.
321 Die dazu benötigten Dateien befinden sich im Verzeichnis <code>/var/www/cooker</code>.
322 Wenn Sie keine „chroot“-Umgebung verwenden und der Busybox-Webserver <code>httpd</code>
323 läuft, kann die Web-Oberfläche ohne weitere Konfigurierung verwendet werden und sollte über
324 <a href="http://localhost/cooker/cooker.cgi">http://localhost/cooker/cooker.cgi</a>
325 erreichbar sein.
326 </p>
327 <p>
328 Wenn Sie eine „chroot“-Umgebung verwenden, sollten Sie <code>cookutils</code> ebenfalls auf
329 Ihrem Rechner installieren und die Pfadvariable SLITAZ anpassen. Ein Standardverfahren ist es,
330 eine chroot-Umgebung in:
331 <pre>
332 /home/slitaz/cooking/chroot
333 </pre>
334 zu haben und <code>/etc/slitaz/cook.conf</code> wie folgt zu ändern:
335 </p>
336 <pre>
337 SLITAZ="/home/slitaz/cooking/chroot/home/slitaz"
338 </pre>
339 <p>
340 Beachten Sie: Um die Web-Oberfläche zu verwenden ist es nicht erforderlich, <code>cookutils</code>
341 auf Ihrem Rechner zu installieren.
342 Wenn Sie Lighttpd verwenden, können Sie die Dateien <code>cooker.cgi</code> und
343 <code>style.css</code> beispielsweise in Ihr Verzeichnis ~/Public kopieren und eine eigene
344 Datei <code>cook.conf</code> dafür verwenden. Die Installation von <code>cookutils</code> auf Ihrem
345 Rechner hat den Vorteil, dass Sie über die Paketverwaltung Tazpkg regelmäßig Aktualisierungen
346 erhalten. Wenn Sie <code>cookutils</code> aus einem Mercurial-Depot dupliziert oder aus einem
347 Paket-Depot transferiert haben:
348 </p>
349 <pre>
350 $ cp -a cookutils/web ~/Public/cgi-bin/cooker
351 $ cp -f cookutils/cook.conf ~/Public/cgi-bin/cooker
352 </pre>
353 <p>
354 Ändern Sie in der Konfigurationsdatei <code>~/Public/cgi-bin/cooker/cook.conf</code> in der Variablen
355 SLITAZ den Pfad und alles ist erledigt!
356 </p>
358 <h3>Erzeugungsnotizen</h3>
359 <p>
360 Die Notizfunktion ermöglicht es, kleine persönliche Bemerkungen über die Paketerzeugung
361 zu hinterlegen und nutzt der Zusammenarbeit mit anderen Entwicklern.
362 Diese Funktion ist implementiert worden, um Informationen zwischen den Betreuern des
363 Kompilierungsautomaten „Cooker“ und Entwicklern auszutauschen.
364 „Cooker“ kann ein Paket sperren, so dass es nicht mehr erzeugt wird. Dann ist es hilfreich, beim
365 Sperren eine Notiz zu hinterlegen, warum das Paket gesperrt wurde.
366 Die Erzeugungsnotizen werden an der Web-Oberfläche angezeigt und können per Kommando erstellt und
367 abgerufen werden:
368 </p>
369 <pre>
370 # cooker note "<em>pkgname</em> wegen hoher CPU-Last gesperrt"
371 # cooker notes
372 </pre>
374 <h3>„Cooker“ als Kompilierungsautomat</h3>
375 <p>
376 „Cooker“ ist als Kompilierungsautomat für SliTaz gestaltet, das heißt er überwacht
377 zwei Woks, aktualisiert den Mercurial-Wok, stellt die Unterschiede fest und erzeugt alle
378 übergebenen Pakete. Die sicherere und sauberere Art, „Cooker“ als Kompilierungsautomat einzusetzen,
379 stellt die Nutzung einer „chroot“-Umgebung dar; aber auch der direkte Ablauf auf Ihrem Rechner ist
380 möglich.
381 </p>
382 <p>
383 Mit <code>cron</code> in der „chroot“-Umgebung kann „Cooker“ automatisch gestartet werden, indem in
384 die Datei <code>/var/spool/cron/crontabs/root</code> eine entsprechende Zeile eingefügt wird. Wenn
385 „Cooker“ alle zwei Stunden gestartet werden soll zum Beispiel:
386 </p>
387 <pre>
388 * */2 * * * /usr/bin/cooker
389 </pre>
391 <h3>„Cooker“-Kompilierungsautomat bei der Systemeinleitung starten</h3>
392 <p>
393 Bei der Systemeinleitung kann die Umgebung für „Cooker“ eingerichtet werden und der cron-Prozess
394 gestartet werden. Damit dies richtig funktioniert, muss das Paket <code>cookutils-daemon</code>
395 installiert sein und eine Standard-SliTaz-Installation verwendet werden (die Paketerzeugung spielt sich
396 in <code>/home/slitaz/cooking</code> ab). Die Kommandoprozedur von <code>cookutils-daemon</code>
397 hängt alle benötigten virtuellen Dateisysteme ein wie auch <code>source</code> und <code>packages</code>.
398 Quelldateien befinden sich im Verzeichnis <code>/home/slitaz/src</code> und werden in die
399 „chroot“-Umgebung eingebunden, so dass Paketquellen in verschiedenen Versionen (stabil, Entwicklung,
400 inoffiziell) gemeinsam benutzt werden können. So wird <code>cookutils-daemon</code> installiert:
401 </p>
402 <pre>
403 # tazpkg get-install cookutils-daemon
404 </pre>
405 <p>
406 Damit der Hintergrundprozess gestartet werden kann, muss in der „chroot“-Umgebung eine cron-Datei
407 für root vorhanden sein. Die Kommandoprozedur funktioniert wie die aller anderen Hintergrundprozesse
408 und wird aufgerufen mit:
409 </p>
410 <pre>
411 # /etc/init.d/cooker [start|stop|restart]
412 </pre>
414 <!-- End content -->
415 </div>
417 <footer>
418 Copyright © <span class="year"></span> <a href="http://www.slitaz.org/">SliTaz GNU/Linux</a>
419 </footer>
421 </body>
422 </html>