website view de/devel/forge.php @ rev 1312

german pages de/devel/ and de/artwork/ updated according to english pages
author Hans-G?nter Theisgen
date Sun Apr 23 17:06:09 2017 +0100 (2017-04-23)
parents 702cf77de7a6
children 38797c549c69
line source
1 <!DOCTYPE html>
2 <html lang="de">
3 <head>
4 <meta charset="UTF-8">
5 <title>SliTaz-Schmiede</title>
6 <meta name="description" content="slitaz Entwickler Schmiede">
7 <meta name="keywords" lang="en" content="slitaz, devel, hg, bugs">
8 <meta name="author" content="Christophe Lincoln, HGT">
9 <?php include("../../lib/html/meta-link.html"); ?>
10 </head>
11 <body>
13 <?php
14 include("../../lib/html/header.de.html");
15 include("../../lib/html/nav.de.html");
16 include("../../lib/lang.php");
17 ?>
19 <!-- Content -->
20 <section id="content">
22 <h2>Gemeinschaftliche Verwaltung</h2>
24 <ul>
25 <li><a href="#kiss">„KISS“ und Standards respektieren.</a></li>
26 <li><a href="#tank">Rechner für die Entwicklung und die Internetpräsenz.</a></li>
27 <li><a href="#repos">Mercurial-Depots.</a></li>
28 <li><a href="#gui">Grafische Oberflächen in GTK und CGI</a></li>
29 <li><a href="#iconv">Implementierung von iconv().</a></li>
30 <li><a href="#pkgs">SliTaz-Pakete erzeugen.</a></li>
31 <li><a href="#website">Verwaltung der Internetpräsenz.</a></li>
32 </ul>
34 <h2 id="kiss">„KISS“ und Standards respektieren</h2>
36 <p>
37 „Keep it simple (KISS)“: befolgen Sie die besten Standards, entwerfen und schreiben
38 Sie sorgfältig Dokumentation von hoher Qualität, erzeugen Sie ein stabiles und robustes System und
39 halten Sie das Wurzeldateisystem <code>rootfs</code> in dem Direktstatrt-ISO-Abbild so klein, dass
40 es auf Rechnern mit mindestens 128 MiB Arbeitsspeicher geladen werden kann. Dennoch ist es möglich
41 GTK+2, Dialog, Kommandoprozeduren oder PHP-Werkzeuge in die Distribution zu übernehmen. Die Idee ist
42 keine Doppelarbeit zu leisten und nicht schmalspurig zu denken...
43 </p>
45 <h2 id="tank">Entwicklungstank - Rechner für die Entwicklung und die Internetpräsenz</h2>
47 <p>
48 Jeder Mitwirkende kann sich über einen sicheren Zugang an dem Projekt-Rechner anmelden, kann dort
49 Plattenplatz belegen, ein Verzeichnis <code>Public</code> anlegen und all Entwicklerwerkzeuge nutzen.
50 Entwickler können Pakete erzeugen und Verwalter der Spiegel-Depots können diese synchronisieren.
51 Auf diesem Rechner befindet sich auch der Kompilierungsautomat, die Dateien zum Laden über das
52 Netzwerk und „SliTaz Pro“: <a href="http://tank.slitaz.org/">tank.slitaz.org</a>
53 </p>
55 <p>
56 Anleitungen zum Erstellen von Paketen auf diesem Rechner finden sich im Kochbuch:
57 <a href="http://doc.slitaz.org/de:cookbook:buildhost">Entwicklungstank</a>.
58 </p>
60 <h2 id="repos">Mercurial-Depots</h2>
62 <p>
63 SliTaz-Mercurial- (oder Hg-) Depots können von jedem unter dem URL
64 <a href="http://hg.slitaz.org/">http://hg.slitaz.org/</a> angesehen und dupliziert werden.
65 Benutzer mit Schreibrecht können über die Adresse <code>repos.slitaz.org</code> direkt auf
66 die Depots zugreifen. Beim Schreiben müssen ein Benutzername und ein Kennwort angegeben werden.
67 Mercurial verwendet Python. Es kann auf SliTaz mit <code>tazpkg get-install mercurial</code>
68 installiert werden.
69 </p>
71 <h3>~/.hgrc</h3>
73 <p>
74 Vor dem Transfer des ersten Beitrags auf den Entwicklungsrechner (mit <code>hg push</code>)
75 muss eine korrekte Konfigurationsdatei <code>~/.hgrc</code> erstellt werden. Darin sollte
76 Ihre E-Mail-Adresse und Ihr richtiger Name enthalten sein. Hier ein Beispiel:
77 </p>
78 <pre class="script">
79 [ui]
80 username = Vorname Nachname &lt;name@example.de&gt;
81 </pre>
83 <h4>Duplizieren, Ändern, Änderungen lokal übernehmen und Änderungen transferieren</h4>
85 <p>
86 Ein Depot, z.B. der Wok <code>wok</code>, wird wie folgt lokal dupliziert:
87 </p>
88 <pre>
89 $ hg clone http://repos.slitaz.org/wok
90 </pre>
91 <p>
92 Jetzt muss das Verzeichnis <code>wok</code> als Arbeitsverzeichnis eingestellt werden, sonst funktionieren die
93 <code>hg</code>-Kommandos nicht. Zum Anzeigen aller oder nur der letzten Änderungen:
94 </p>
95 <pre>
96 $ hg log
97 $ hg head
98 </pre>
99 <p>
100 Nach dem Hinzufügen oder Ändern von einer oder auch mehrerer Dateien den Änderungsstatus anzeigen und die Änderungen
101 lokal übernehmen:
102 </p>
103 <pre>
104 $ hg add
105 $ hg status
106 $ hg commit -m "kurze beschreibung der vorgenommenen änderungen"
107 $ hg log
108 </pre>
109 <p>
110 Mit <code>hg rollback</code> können Sie die letzte Änderung rückgängig machen. Bevor Sie die
111 Änderungen in das Depot transferieren, sollten Sie zwischenzeitliche Änderungen anderer übernehmen:
112 </p>
113 <pre>
114 $ hg pull
115 $ hg push
116 </pre>
117 <p>
118 Das ist schon alles; Ihre Änderungen, Quellprogramme oder Korrekturen sind jetzt im Depot.
119 </p>
121 <h4>Ein lokal dupliziertes Depot aktualisieren</h4>
123 <p>
124 Ein lokal dupliziertes Depot kann aus dem SliTaz-Depot aktualisiert werden mit:
125 </p>
126 <pre>
127 $ hg pull -u
128 </pre>
130 <h4>Weitere nützliche Kommandos</h4>
132 <p>
133 Weitere <code>hg</code>-Kommandos:
134 </p>
135 <ul>
136 <li><code>hg help</code> : Zeigt alle möglichen Kommandos.</li>
137 <li><code>hg rollback</code> : Die letzte Aktion (commit, pull, push) rückgängig machen.</li>
138 <li><code>hg log &lt;package&gt;</code> : Das Änderungsprotokoll eines Paketes zeigen.</li>
139 <li><code>hg head</code> : Die letzte Änderung anzeigen.</li>
140 </ul>
142 <h2 id="gui">Grafische Oberflächen - reines C/GTK, Yad, Vala/Genie und CGI</h2>
144 <p>
145 Es gibt viele Möglichkeiten, mit „open source“-Produkten eine Benutzeroberfläche zu erzeugen.
146 Bis zur Version 3.0 von SliTaz haben wir hauptsächlich Gtkdialog verwendet, um gefällige
147 und komplexe Oberflächen in GTK zu erstellen, wobei die Anweisungen ausgeführt wurden ohne
148 übersetzt werden zu müssen. Aber gtkdialog wird nicht mehr gewartet und es fehlen viele
149 neuere GTK-Funktionalitäten. Daher sind wir bei einfachen Grafikfenstern auf Yad umgestiegen.
150 Bei der Verwaltung des Systems und der Pakete sowie bei den Konfigurationswerkzeugen sind wir
151 auf TazPanel umgestiegen, eine Web-Oberfläche mit CGI-Nutzung, die mit xHTML&nbsp;5 und CSS&nbsp;3
152 programmiert wird.
153 </p>
154 <p>
155 Yad ist sehr einfach, kann aber keine komplexen Oberflächen erzeugen: schon
156 zwei oder drei Einträge mit Marken und einige Schaltflächen sind nicht möglich. Daher mussten
157 wir eine andere Möglichkeit suchen. Der Vorteil eines Interpreters ist, dass die Anweisungen
158 nicht übersetzt werden müssen sondern zur Laufzeit verarbeitet werden, was die Anwendung
159 allerdings verlangsamt.
160 Programme in C zu schreiben ist komplex und daran werden sich weniger Mitwirkende beteiligen, da
161 Kommandoprozeduren leichter zu verstehen sind. Daher lautet die Richtlinie jetzt:
162 unsere Kommandoprozeduren beibehalten und verbessern und Benutzeroberflächen dafür in GTK oder CGI
163 zur Verfügung stellen.
164 </p>
165 <p>
166 Es gibt viele neue Programmiersprachen, die GTK verwenden, z.B. Genie, Vala oder GTKaml.
167 Beachten Sie aber, dass sie nicht so verbreitet sind wie C und GTK und nicht wirklich
168 leichter zu erlernen und zu nutzen sind. Für einfache Grafikfenster können Sie Kommandoprozeduren
169 benutzen. Sie können auch Vala benutzen, aber reines GTK braucht für ein einzelnes Fenster auch nur 14
170 Anweisungszeilen:
171 </p>
172 <pre>
173 #include &lt;gtk/gtk.h&gt;
175 int main(int argc, char *argv[])
176 {
177 GtkWidget *window;
179 gtk_init(&amp;argc, &amp;argv);
180 window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
181 g_signal_connect (G_OBJECT (window), "destroy",
182 G_CALLBACK (gtk_main_quit), NULL);
184 gtk_widget_show(window);
185 gtk_main();
186 return 0;
187 }
188 </pre>
189 <p>
190 Wenn Sie sich nicht sicher sind, welche Programmiersprache Sie verwenden sollen, können Sie Ihre Wahl
191 bei der „Mailing“-Liste zur Diskussion stellen.
192 Wenn Sie nur eine einfache grafische Oberfläche brauchen, können Sie sich <code>tazbox</code> im
193 Depot <code>slitaz-tools</code> ansehen; das Paket enthält kleine Programme für die grafische Oberfläche
194 wie z.B. ein Abmeldefenster. TazWeb ist das erste Teilprojekt von SliTaz, das in reinem GTK geschrieben wurde.
195 Sie können es ansehen um zu lernen, wie man die Funktion <code>system()</code> in einer grafischen
196 Oberfläche verwenden kann. So verwendet TazWeb beispielsweise <code>wget</code> zum Dateitransfer und
197 <code>sed</code> um Lesezeichen hinzuzufügen.
198 </p>
199 <p>
200 Yad-Anweisungsprozeduren sollten die TazYad-Richtlinien befolgen:
201 <a href="http://hg.slitaz.org/slitaz-dev-tools/raw-file/tip/tazyad/README">README</a> und
202 <a href="http://hg.slitaz.org/slitaz-dev-tools/raw-file/tip/tazyad/tazyad">Programmierbeispiele</a>
203 </p>
205 <h2 id="iconv">Implementierung von iconv()</h2>
207 <p>
208 SliTaz verwendet iconv() aus der GNU glibc - alle Pakete, die <code>libiconv</code> anbieten,
209 müssen die Bibliothek aus <code>glibc-locale</code> verwenden.
210 Daher gibt es kein Paket <code>libiconv</code> (1.2 MB) mehr in SliTaz.
211 </p>
213 <h2 id="pkgs">SliTaz-Pakete erzeugen</h2>
215 <p>
216 Für die offizielle Paketerzeugung werden die Kochwerkzeuge verwendet. Diese sind in dem Paket <code>cookutils</code>
217 enthalten, das in jedem SliTaz-System installiert ist, wie auch das
218 <a href="http://hg.slitaz.org/cookutils/raw-file/tip/doc/cookutils.de.html">Kochwerkzeuge-Handbuch</a> für die Verwendung der Kochwerkzeuge. Damit werden Pakete erzeugt, die von TazPKG verwaltet werden können.
219 </p>
220 <p>
221 Die Pakete werden bei SliTaz automatisch von <a href="http://cook.slitaz.org/">„Cooker“</a> aus einem
222 Quellpaket und einem Rezep im Wok erzeugt. Im Kochbuch ist das Format der
223 <a href="http://doc.slitaz.org/de:cookbook:receipt">Rezepte</a> beschrieben.
224 Die Beschreibung der Kochwerkzeuge und der Rezepte sollten Sie gelesen haben, bevor Sie mit der
225 Paketerzeugung beginnen.
226 </p>
227 <p>
228 Bei der Auswahl eines Paketes für SliTaz sollten nur solche in Betracht kommen, die
229 nützlich sind und funktionieren. Davon sollten Sie das kleinste verfügbare auswählen.
230 Es sollten nicht mehrere Pakete mit gleicher Funktionalität erstellt werden.
231 Die aktuelle Auswahl der Pakete ist aber nicht festgeschrieben. Wenn es eine Alternative zu einem Paket
232 gibt, die noch kleiner ist, mehr Funktionen enthält oder mit ein paar KB mehr <em>attraktiver</em> ist,
233 kann die Übernahme bei der „Mailing-Liste“ diskutiert werden.
234 Besondere Anforderungen werden an Pakete gestellt, die in Direktstart-ISO-Abbilder
235 übernommen werden sollen. Bei diesen sollten Symbolinformationen aus den Objektprogrammen
236 sowie unnötige Abhängigkeiten und Übersetzeroptionen entfernt werden.
237 Im Allgemeinen werden solche Pakete vor der Freigabe ebenfalls bei der „Mailing-Liste“ zur
238 Diskussion gestellt.
239 </p>
240 <p>
241 Bevor Sie beginnen, Pakete für SliTaz zu übersetzen und erzeugen, stellen Sie zur Vermeidung von
242 Doppelarbeit sicher, dass es etwas entsprechendes nicht schon im
243 <a href="http://download.tuxfamily.org/slitaz/packages/undigest/">inoffiziellen Wok</a>
244 gibt. Die Mitglieder der „Mailing-Liste“ geben gerne Hinweise und das
245 <a href="http://hg.slitaz.org/cookutils/raw-file/tip/doc/cookutils.de.html">Kochwerkzeuge-Handbuch</a>
246 sollte für Anfänger hilfreich sein.
247 </p>
249 <h3 id="pkgs-naming">Benennung von Paketen</h3>
251 <p>
252 In den meisten Fällen stimmt der Name des Paketes mit dem Namen des Quellpaketes überein. Ausnahmen sind
253 Python, Perl, PHP, Ruby und Lua-Module. Beispielsweise heisst das Paket,
254 das ein „Kid template system“, in Python und XML geschrieben, enthält:
255 <code>python-kid</code>.
256 </p>
258 <h2 id="website">Verwaltung der Internetpräsenz</h2>
260 <p>
261 Die Internetpräsenz wird über das Mercurial-Depot <code>website</code> administriert. Dieses kann dupliziert
262 werden mit:
263 </p>
264 <pre>
265 $ hg clone http://hg.slitaz.org/website
266 oder wenn Sie die entsprechende Berechtigung haben:
267 $ hg clone http://repos.slitaz.org/website
268 </pre>
270 <h3>xHTML-Programmierstil</h3>
272 <p>
273 Die Seiten und verschiedene <em>Handbücher</em> sind in xHTML&nbsp;1.0&nbsp;transitional
274 programmiert. Die Überschrift der Stufe 1 wird nur einmal (ganz oben) verwendet,
275 Stufe 2 ist der Titel des Dokuments und die Stufen 3 und 4 werden für weitere Abstufungen
276 der Überschriften benutzt. Wenn eine Liste statt „smart anchors“ verwendet wird,
277 beginnt sie oben, direkt unterhalb einer Überschrift der Stufe 2.
278 Absätze werden in die Markierungen <code>&lt;p&gt;&lt;/p&gt;</code> eingeschlossen.
279 Für Einrückungen werden Tabulatoren verwendet. Dies ist in der Semantik begründet und sie
280 benötigen weniger Speicherplatz. Zur Darstellung von Kommandonamen oder ähnlichem innerhalb
281 eines Absatzes wird vorzugsweise <code>&lt;code&gt;</code> verwendet.
282 Beispiele für die Anwendung von Kommandos in einem Terminal werden als formatierter Text mit
283 <code>&lt;pre&gt;</code> ausgegeben, z.B.:
284 </p>
285 <pre>
286 $ command
287 </pre>
288 <p>
289 Zur Anzeige von Text, der kopiert und eingefügt werden kann, wie etwa Kommandoprozeduren,
290 Quellprogrammausschnitte, Konfigurationsdateien usw. wird ebenfalls
291 <code>&lt;pre&gt;</code> verwendet, aber mit einer CSS-Klasse namens “script”. Beispiel:
292 </p>
293 <pre class="script">
294 &lt;pre class="script"&gt;
296 code...
298 &lt;/pre&gt;
299 </pre>
300 <p>
301 <em>Hervorgehobene</em> Wörter erhalten das Merkmal <code>&lt;em&gt;</code>
302 und interne Verknüpfungen sind stets relativ. Denken Sie auch daran, Ihr Programm
303 mit dem <em>„validator“</em> des W3C auf Konformität zu prüfen.
304 </p>
306 <h2 id="diff">Diff und patch</h2>
308 <p>
309 Die Programme <code>diff</code> und <code>patch</code> dienen der Erstellung einer Datei, die
310 Unterschiede zwischen zwei Dateien enthält und mit deren Hilfe die Änderungen angewendet werden können.
311 Diese Technik wird oft angewendet, wenn mehrere Personen an einem Projekt arbeiten, damit Änderungen
312 an einer Originaldatei klar extrahiert werden können. Um eine <code>diff</code>-Datei zu erstellen,
313 die mit einem Texteditor für Menschen gut lesbar ist, muss die Option <code>-u</code> angegeben werden:
314 </p>
315 <pre>
316 $ diff -u file.orig file.new &gt; file.diff
317 </pre>
318 <p>
319 Zum Anbringen der Änderungen an der Originaldatei:
320 </p>
321 <pre>
322 $ patch file.orig file.diff
323 </pre>
325 <!-- End of content -->
326 </section>
328 <?php include("../../lib/html/footer.html"); ?>
330 </body>
331 </html>