slitaz-doc-wiki-data view pages/de/devnotes/cook-flavor-from-scratch.txt @ rev 8

Add pages/de folder.
author Christopher Rogers <slaxemulator@gmail.com>
date Sat Feb 26 12:18:00 2011 +0000 (2011-02-26)
parents
children
line source
1 ====== Eine eigene Geschmackrichtung aus den Quelltexten kochen ======
3 ===== Einleitung =====
5 Willkommen zu dieser Anleitung! Sie will die Grundlage zu einem zweiten SliTaz-//scratchbook// werden, und erklärt, wie man SliTaz vollständig aus den Quelltexten, inklusiv Werkzeugskasten neue erstellen kann. Die ganze Arbeit erfolgt unter Einsatz des //tazwok-experimental// (zur Zeit noch im Entwicklungsstadium alpha!). Selbst, wenn man zugibt, dass die Skripte einige dämliche Tücken haben, sollten nachstehende Arbeitsabschnitte mühelos zum Ziel führen. Rückmeldungen hinsichtlich der etwaige Probleme werden gern angenommen (//tazpkg info tazwok-experimental// wird Ihnen die email weitergeben).
7 Mit einigen Kenntnissen über die klassischen Werkzeuge von SliTaz und den Basisbefehlen von Linux versteht man besser, was im Verlauf dieser Anleitung passiert. Aber auch brav die Befehl kopieren/einfügen würde voraussichtlich auch genügen.
9 ===== Erläuterung =====
11 //Tazwok-experimental// schlägt die Instrumente zum Backen eines [[de:terms:W?&#Wok|Woks]] von den [[de:terms:Q?&#Quelle|Quelltexten]] bei Benützung eines minimalen //[[de:terms:C?&#Chroot|chroot]]// vor. Dabei muss man eine spezielle Wokversion einsetzen. Diese Version nennt sich wok-experimental. Es enthält die notwendigen [[de:terms:P?&#Patch|patchen]], mit welchen das //cooking//-Wok verändert werden muss. Die Erklärungen zur Einrichtung des Woks //experimental// sind hier : [[de:devnotes:prepare-experimental|Das experimentelle Wok vorbereiten]] zu finden.
13 **Was braucht man?**
14 * Ein autonom oder installiert funktionsfähiges Betriebssystem der Distribution SliTaz //cooking// ; man kann auch folgende ISO [[http://people.slitaz.org/~gokhlayeh/experimental/iso/slitaz-experimental-base.iso|slitaz-experimental-base]] benützen.
15 * //tazwok-experimental-0.0.2, tazchroot-0.0.1, libtaz-0.0.1//. Hinweis: //tazwok-experimental// installieren macht das klassische //tazwok// unbrauchbar.
16 * Eine internet-Verbindung, um die Quellen runterzuladen.
18 **Schritte**
19 * Die //chroot-Umgebung// aufbauen (bei der vorliegenden Anleitung wird von der neuen Werkzeugkette aus dem Depot //experimental// ausgegangen; aber die Werkzeugkette von //cooking// dürfte auch brauchbar sein).
20 * Eine neue Kette von temporären Werkzeuge selber backen: es handelt sich um eine Reihe von Werkzeugen aus einer verkreuzten Kompilation, mit welcher es möglich werden soll, die ‘richtigen’ künftigen Werkzeuge (aus diesen Werkzeugen entstehen dann ordentliche Pakete) ohne dass eine Bindung an Teilen des Gastgebersystems benötigt wird.
21 * Den notwendigen Vorrat von diesen endgültigen Werkzeugen backen.
22 * Einige weitere Pakete eines der Slitaz-Rezepte backen.
23 * Eine [[de:terms:I?&#ISO|ISO-Datei]] damit anfertigen.
24 * Brennen, neu starten & geniessen :).
26 ===== Instrumente installieren =====
28 <note tip>Folgende Transaktionen müssen als [[de:terms:R?&#root|root]] (Verwalter) stattfinden. Falls man die Werkzeugkette von //[[de:terms:C?&#Cooking|cooking]]// benützt braucht man die Depots von experimental nicht hinzuzufügen.</note>
30 Das [[de:terms:D?&#Depot|Depot]] zur //[[de:terms:E?&#experimentell|experimentellen]]// Version als [[de:terms:U?&#unverdaut|unverdaut]] hinzufügen:
31 <code>
32 tazpkg add-undigest experimental http://people.slitaz.org/~gokhlayeh/experimental/packages
33 </code>
35 Diesem Depot Vorang vor dem Hauptdepot geben:
36 <code>
37 echo experimental > /var/lib/tazpkg/priority
38 </code>
40 Die Rezeptzutaten installieren:
41 <code>
42 tazpkg get-install tazwok-experimental
43 tazpkg get-install tazchroot
44 </code>
46 ===== Den Vorrat an Instrumenten kochen =====
48 <note tip> Folgende Kommando-Zeilen gehen von einem [[de:terms:W?&#Wok|Woks]] aus, das man unter folgender Adresse findet: ///home/slitaz/experimental/wok//. Im Fall einer anderen Wok-Voreinstellung kann man die Option //--SLITAZ_DIR=adresse// hinzüfügen; ‘adresse’ entspricht hier ///home/slitaz//. Diese Option ist jedes Mal zu verwenden, wo //--SLITAZ_VERSION// angegeben wird. Man kann aber auch //SLITAZ_VERSION// und //SLITAZ_DIR// global via ///etc/slitaz/slitaz.conf// festlegen.</note>
50 Konfiguration für das //chroot//:
51 <code>
52 tazwok configure-chroot --SLITAZ_VERSION=experimental
53 </code>
55 Hat man weniger als 1,5Gb freien leeren RAM, dann kann man das minimal //chroot// im RAM einsetzen, um die Bearbeitungszeit zu beschleunigen:
56 <code>
57 sed 's~chroot_dir=.*~chroot_dir=/tmp/chroot-experimental~' -i /home/slitaz/experimental/tazchroot.conf
58 </code>
60 Die Pakete des Werkzeugkasten mit einem einzigen Befehl erzeugen:
61 <code>
62 tazwok cook-toolchain --SLITAZ_VERSION=experimental
63 </code>
65 Am Ende sollte das //chroot// gelöscht worden sein. Falls man seinen Platz vorher geändert hatte, muss man das jetzt von Hand machen:
66 <code>
67 rm -r /tmp/chroot-experimental
68 </code>
70 Die Pakete des Werkzeugkastens sind jetzt fertig zur Benützung. Sie liegen jetzt im Depot //packages-incoming// vor. Wenn alles korrekt ablief, kann man sie jetzt in das Depot für klassische Pakete mit
71 <code>
72 tazwok check-incoming --SLITAZ_VERSION=experimental
73 </code>
74 weiterschieben.
76 //tazpkg// muss jetzt von Ihnen erfahren, dass Sie eine lokale Version von //experimental// bereitgestellt haben:
77 <code>
78 echo "/home/slitaz/experimental/packages" > /var/lib/tazpkg/undigest/experimental/mirror
79 tazpkg recharge
80 </code>
82 Bitte dann das Werkzeugkasten mit der Ausnahme des Herzen (Übersetzung lehnt sich an die blumige Sprache der Vorlage an) //linux-api-headers/glibc/binutils/gcc// über sich selber rüberkochen, was das Ganze stabilisiert; dies ist zwar nicht unbedingt erforderlich, führt aber zu einer besseren Situation hinsichtlich der kreisförmigen Abhängigkeiten. Dies stellt die Konsistenz der Werkzeugskette vor und nach der Aktualisierung der Pakete sicher, die zum Herzen in der Werkzeugskette nicht gehören sicher. Das Herz der Werkszeugskette selber sollte aber nie derart aktualisiert werden, sondern durch die Benützung des Skripts //cook-toolchain//.
83 <code>
84 tazwok chroot --SLITAZ_VERSION=experimental
85 tazwok build-depends toolchain-cooklist | sed '1,/^gcc$/d' > /tmp/consolider.list
86 tazwok cook-list /tmp/consolider.list
87 rm /tmp/consolider.list
88 </code>
90 Da alles erneuert wurde, muss man jetzt das Depot :
91 <code>
92 tazwok check-incoming --SLITAZ_VERSION=experimental
93 </code>
94 wieder aktualisieren.
96 Das vorherige //chroot// ist jetzt nutzlos. Entfernen, damit //tazwok// nächstes Mal in der Lage ist eine neue Version der Werkzeugskette herzustellen :
97 <code>
98 # Adresse classique:
99 rm -r /home/slitaz/experimental/chroot
100 # Chroot dans /tmp:
101 rm -r /tmp/chroot-experimental
102 </code>
104 ===== Die Pakete für ein Rezept kochen =====
106 Als Erstes braucht man die Daten zum Rezept für //cooking//:
107 <code>
108 cd /home/slitaz/experimental/flavors
109 hg clone http://hg.slitaz.org/flavors .
110 </code>
112 Die Zutatenliste für das Rezept erzeugen. Hinweis: Hinterher setzt man dort, wo das Wort SAVEUR (Geschmacksnote) steht, den Namen des jeweiligen Rezepts in den Befehlen ein.
113 <code>
114 tazwok gen-cooklist --list=/home/slitaz/experimental/flavors/SAVEUR/packages.list > /tmp/SAVEUR.list
115 </code>
117 Diese Liste enthält bereits zubereitete Pakete; entfernen!
118 <code>
119 cat /tmp/SAVEUR.list | while read p; do
120 grep -q ^$p$ /home/slitaz/experimental/packages/packages.txt && \
121 sed "/^$p$/d" -i /tmp/SAVEUR.list
122 done
123 </code>
125 Die Zutatenliste ist jetzt fertig, um die Pakete zu bereiten:
126 <code>
127 tazwok cook-list /tmp/SAVEUR.list
128 </code>
130 Das Depot //packages// aktualisieren:
131 <code>
132 tazwok check-incoming
133 </code>
135 <note tip>Man kann diese Schritte so oft wiederholen, wie man neue Pakete zum eigenen Depot hinzufügen will.</note>
137 In Vorbereitung zum nänchsten Schritt, bitte jetzt in der //chroot//-Umgebung bleiben.
139 ===== Die ISO-Datei aufbauen =====
141 Am Augenblick benützt //[[de:terms:T?&#tazlito|tazlito]]// noch ///home/slitaz/flavors//. Deshalb ein symbolisches [[de:terms:L?&#link|link]] anlegen:
142 <code>
143 ln -s /home/slitaz/experimental/flavors /home/slitaz
144 </code>
146 Die [[de:terms:I?&#ISO|ISO-Datei]] als experimentelle Version konfigurieren:
147 <code>
148 cd /home/slitaz/flavors/SAVEUR
149 mkdir -p rootfs/etc
150 echo experimental > rootfs/etc/slitaz-release
151 </code>
153 Dann die [[de:terms:I?&#ISO|ISO-Datei]] so konfigurieren, dass das eigene lokale Depot zum Einsatz kommt:
154 <code>
155 mkdir -p rootfs/var/lib/tazpkg
156 echo /home/slitaz/experimental/packages > rootfs/var/lib/tazpkg/mirror
157 </code>
159 Lieber tazwok-experimental als tazwok benützen und tazchroot anhängen:
160 <code>
161 sed 's/tazwok/tazwok-experimental/' -i packages.list
162 echo tazchroot >> packages.list
163 </code>
165 Das Rezept SAVEUR einpacken:
166 <code>
167 tazlito pack-flavor SAVEUR
168 </code>
170 Das Rezept SAVEUR holen:
171 <code>
172 tazlito get-flavor SAVEUR
173 </code>
175 Die [[de:terms:I?&#ISO|ISO-Datei]] erzeugen:
176 <code>
177 tazlito gen-distro
178 </code>
180 Die [[de:terms:I?&#ISO|ISO-Datei]] im eigenen [[de:terms:H?&#home|home]] hinterlegen:
181 <code>
182 mv /home/slitaz/distro/slitaz-SAVEUR.iso /home/slitaz/distro/slitaz-SAVEUR.md5 /home/slitaz/experimental/iso
183 </code>
185 Die //chroot//-Umgebung verlassen:
186 <code>
187 exit
188 </code>