Imported Upstream version 1.16.10
[services/dpkg.git] / man / de / dpkg-gensymbols.1
1 .\" dpkg manual page - dpkg-gensymbols(1)
2 .\"
3 .\" Copyright © 2007-2011 Raphaël Hertzog <hertzog@debian.org>
4 .\" Copyright © 2009-2010 Modestas Vainius <modestas@vainius.eu>
5 .\"
6 .\" This is free software; you can redistribute it and/or modify
7 .\" it under the terms of the GNU General Public License as published by
8 .\" the Free Software Foundation; either version 2 of the License, or
9 .\" (at your option) any later version.
10 .\"
11 .\" This is distributed in the hope that it will be useful,
12 .\" but WITHOUT ANY WARRANTY; without even the implied warranty of
13 .\" MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14 .\" GNU General Public License for more details.
15 .\"
16 .\" You should have received a copy of the GNU General Public License
17 .\" along with this program.  If not, see <http://www.gnu.org/licenses/>.
18 .
19 .\"*******************************************************************
20 .\"
21 .\" This file was generated with po4a. Translate the source file.
22 .\"
23 .\"*******************************************************************
24 .TH dpkg\-gensymbols 1 2012\-04\-22 Debian\-Projekt dpkg\-Hilfsprogramme
25 .SH NAME
26 dpkg\-gensymbols \- erstelle Symboldateien (Abhängigkeitsinformationen für
27 Laufzeitbibliotheken)
28 .
29 .SH ÜBERSICHT
30 \fBdpkg\-gensymbols\fP [\fIOption\fP ?]
31 .
32 .SH BESCHREIBUNG
33 \fBdpkg\-gensymbols\fP durchsucht einen temporären Baubaum (standardmäßig
34 debian/tmp), sucht nach Bibliotheken und erstellt eine Datei \fIsymbols\fP, die
35 diese beschreibt. Diese Datei wird, falls sie nicht leer ist, in das
36 Unterverzeichnis DEBIAN des Baubaums installiert, so dass sie schlussendlich
37 in der Steuerinformation des Pakets auftaucht.
38 .P
39 Beim Erstellen dieser Dateien verwendet es als Eingabe einige vom Betreuer
40 bereitgestellte Symboldateien. Es sucht nach den folgenden Dateien (und
41 verwendet die erste, die gefunden wird):
42 .IP \(bu 4
43 debian/\fIPaket\fP.symbols.\fIArchitektur\fP
44 .IP \(bu 4
45 debian/symbols.\fIArchitektur\fP
46 .IP \(bu 4
47 debian/\fIPaket\fP.symbols
48 .IP \(bu 4
49 debian/symbols
50 .P
51 Der Hauptzweck dieser Dateien besteht darin, die minimale Version
52 bereitzustellen, die mit jedem von der Bibliothek bereitgestellten Symbol
53 verknüpft ist. Normalerweise entspricht dies der ersten Version des Pakets,
54 die dieses Symbol bereitgestellt hat, kann aber vom Betreuer erhöht werden,
55 falls die ABI des Symbols ohne Brechen der Rückwärtskompatibilität erweitert
56 wurde. Es liegt in der Verwantwortung des Betreuers, diese Dateien aktuell
57 zu halten, aber \fBdpkg\-gensymbols\fP hilft ihm.
58 .P
59 Wenn die erstellten Symboldateien sich von denen, die der Betreuer
60 bereitgestellt hat, unterscheiden, wird \fBdpkg\-gensymbols\fP ein Diff zwischen
61 den zwei Versionen anzeigen. Falls die Unterschiede desweiteren zu
62 gravierend sind, wird es sogar fehlschlagen (Sie können einstellen, wie
63 große Unterschiede Sie tolerieren können, sehen Sie hierzu die Option
64 \fB\-c\fP).
65 .SH "SYMBOLDATEIEN PFLEGEN"
66 Die Symboldateien sind nur wirklich nützlich, falls sie die Entwicklung
67 eines Paketes über mehrere Veröffentlichungen hinweg wiedergeben. Daher muss
68 der Betreuer sie immer aktualisieren, wenn eine neues Symbol hinzugefügt
69 wird, so dass die zugeordnete minimale Version der Realität entspricht. Um
70 dies vernünftig durchzuführen, kann er Diffs aus den Bauprotokolle
71 verwenden. Meistens kann der Diff direkt auf die Datei
72 debian/\fIPaket\fP.symbols angewandt werden. Allerdings werden normalerweise
73 weitere Anpassungen notwendig: es wird beispielsweise empfohlen, die
74 Debian\-Revision von der minimalen Version zu entfernen, so dass Backports
75 mit einer niedrigeren Versionsnummer aber der gleichen Version der
76 Originalautoren immer noch die erstellten Abhängigkeiten erfüllen. Falls die
77 Debian\-Revision nicht entfernt werden kann, da das Symbol wirklich von der
78 Debian\-spezifischen Änderung hinzugefügt wurde, dann sollte der Version »~«
79 angehängt werden.
80 .P
81 Bevor irgendein Patch auf die Symboldatei angewendet wird, sollte der
82 Betreuer zweimal prüfen, dass der Patch vernünftig ist. Öffentliche Symbole
83 sollten nicht verschwinden, daher sollte der Patch idealerweise nur neue
84 Zeilen hinzufügen.
85 .P
86 Beachten Sie, dass Sie in Symboldateien Kommentare einfügen können: jede
87 Zeile, die mit »#« als ersten Zeichen beginnt, ist ein Kommentare, falls sie
88 nicht mit »#include« beginnt (siehe Abschnitt \fBIncludes
89 verwenden\fP). Zeilen, die mit »#MISSING:« anfangen, sind besondere
90 Kommentare, die verschwundene Symbole dokumentieren.
91 .SS "Verwendung der #PACKAGE#\-Ersetzung"
92 .P
93 In einigen seltenen Fällen unterscheidet sich der Name der Bibliothek auf
94 verschiedenen Architekturen. Um zu vermeiden, dass der Paketname in der
95 Symboldatei fest kodiert wird, können Sie die Markierung \fI#PACKAGE#\fP
96 verwenden. Während der Installation der Symboldatei wird sie durch den
97 echten Paketnamen ersetzt. Anders als die Markierung \fI#MINVER#\fP wird
98 \fI#PACKAGE#\fP nie in der Symboldatei innerhalb eines Binärpakets auftauchen.
99 .SS "Verwendung von Symbolkennzeichnungen"
100 .P
101 Symbolkennzeichnungen sind nützlich, um Symbole zu markieren, die in
102 irgendeiner Weise besonders sind. Jedes Symbol kann eine beliebige Anzahl
103 zugeordneter Kennzeichnungen besitzen. Während alle Kennzeichnungen
104 ausgewertet und gespeichert werden, werden nur einige von \fBdpkg\-gensymbols\fP
105 verstanden und lösen eine Spezialbehandlung der Symbole aus. Lesen Sie den
106 Unterabschnit \fBStandardsymbolkennzeichnungen\fP für eine Referenz dieser
107 Kennzeichnungen.
108 .P
109 Kennzeichnungsspezifikationen kommen direkt vor dem Symbolnamen (dazwischen
110 sind keine Leerzeichen erlaubt). Sie beginnen immer mit einer öffnenden
111 Klammer \fB(\fP, enden mit einer schließenden Klammer \fB)\fP und müssen
112 mindestens eine Kennzeichnung enthalten. Mehrere Kennzeichnungen werden
113 durch das Zeichen \fB|\fP getrennt. Jede Kennzeichnungen kann optional einen
114 Wert enthalten, der von der Kennzeichnung durch das Zeichen \fB=\fP getrennt
115 wird. Kennzeichennamen und \-werte können beliebige Zeichenketten sein, sie
116 dürfen allerdings keine der der besonderen Zeichen \fB)\fP \fB|\fP \fB=\fP
117 enthalten. Symbolnamen, die einer Kennzeichnungsspezifikation folgen, können
118 optional mit den Zeichen \fB'\fP oder \fB"\fP zitiert werden, um Leerzeichen darin
119 zu erlauben. Falls keine Kennzeichnungen für das Symbol spezifiziert sind,
120 werden Zitatzeichen als Teil des Symbolnamens behandelt, der bis zum ersten
121 Leerzeichen geht.
122 .P
123  (Kennz1=bin markiert|Name mit Leerraum)"zitiertes gekennz Symbol"@Base 1.0
124  (optional)gekennzeichnet_unzitiertes_Symbol@Base 1.0 1
125  ungekennzeichnetes_Symbol@Base 1.0
126 .P
127 Das erste Symbol im Beispiel heißt \fIzitiertes gekennz Symbol\fP und hat zwei
128 Kennzeichnungen: \fIKennz1\fP mit dem Wert \fIbin markiert\fP und \fIName mit
129 Leerraum\fP ohne Wert. Das zweite Symbol heißt
130 \fIgekennzeichnet_unzitiertes_Symbol\fP und ist nur mit dem Kennzeichen namens
131 \fIoptional\fP gekennzeichnet. Das letzte Symbol ist ein Beispiel eines
132 normalen, nicht gekennzeichneten Symbols.
133 .P
134 Da Symbolkennzeichnungen eine Erweiterung des Formats \fIdeb\-symbols(5)\fP
135 sind, können sie nur Teil der in Quellpaketen verwandten Symboldateien sein
136 (diese Dateien sollten dann als Vorlagen zum Bau der Symboldateien, die in
137 Binärpakete eingebettet werden, gesehen werden). Wenn \fBdpkg\-gensymbols\fP
138 ohne die Option \fI\-t\fP aufgerufen wird, wird es alle Symbole ausgeben, die
139 zum Format \fIdeb\-symbols(5)\fP kompatibel sind: Es verarbeitet die Symbole
140 entsprechend der Anforderungen ihrer Standardkennzeichnungen und entfernt
141 alle Kennzeichnungen aus der Ausgabe. Im Gegensatz dazu werden alle Symbole
142 und ihre Kennzeichnungen (sowohl die Standardkennzeichnungen als auch die
143 unbekannten) im Vorlagenmodus (\fI\-t\fP) in der Ausgabe beibehalten und in
144 ihrer Originalform wie sie geladen wurden auch geschrieben.
145 .SS Standard\-Symbolkennzeichnungen
146 .TP 
147 \fBoptional\fP
148 Ein als »optional« gekennzeichnetes Symbol kann jederzeit von der Bibliothek
149 verschwinden und wird nie zum Fehlschlag von \fBdpkg\-gensymbols\fP
150 führen. Verschwundene optionale Symbole werden kontinuierlich als MISSING
151 (Fehlend) in dem Diff in jeder neuen Paketversion auftauchen. Dieses
152 Verhalten dient als Erinnerung für den Betreuer, dass so ein Symbol aus der
153 Symboldatei entfernt oder wieder der Bibliothek hinzugefügt werden
154 muss. Wenn das optionale Symbol, dass bisher als MISSING bezeichnet gewesen
155 war, plötzlich in der nächsten Version wieder auftaucht, wird es wieder auf
156 den Status »existing« (existierend) gebracht, wobei die minimale Version
157 unverändert bleibt.
158
159 Diese Markierung ist für private Symbole nützlich, deren Verschwinden keinen
160 ABI\-Bruch auslöst. Beispielsweise fallen die meisten
161 C++\-Template\-Instanziierungen in diese Kategorie. Wie jede andere Markierung
162 kann auch diese einen beliebigen Wert haben: sie könnte angeben, warum
163 dieses Symbol als optional betrachtet wird.
164 .TP 
165 \fBarch=\fP\fIArchitekturliste\fP
166 Die Markierung erlaubt es, den Satz an Architekturen einzugrenzen, auf denen
167 das Symbol existieren sollte. Wenn die Symbolliste mit den in der Bibliothek
168 entdeckten Symbolen aktualisiert wird, werden alle architekturspezifischen
169 Symbole, die nicht auf die aktuelle Host\-Architektur passen, so behandelt,
170 als ob sie nicht existierten. Falls ein architekturspezifisches Symbol, das
171 auf die aktuelle Host\-Architektur passt, in der Bibliothek nicht existiert,
172 werden die normalen Regeln für fehlende Symbole angewandt und
173 \fBdpkg\-gensymbols\fP könnte dadurch fehlschlagen. Auf der anderen Seite, falls
174 das architekturspezifische Symbol gefunden wurde, wenn es nicht existieren
175 sollte (da die aktuelle Host\-Architektur nicht in der Markierung aufgeführt
176 ist), wird sie architekturneutral gemacht (d.h. die Architekturmarkierung
177 wird entfernt und das Symbol wird im Diff aufgrund dieser Änderung
178 auftauchen), aber es wird nicht als neu betrachtet.
179
180 Beim Betrieb im standardmäßigen nicht\-Vorlagen\-Modus werden unter den
181 architekturspezifischen Symbolen nur die in die Symboldatei geschrieben, die
182 auf die aktuelle Host\-Architektur passen. Auf der anderen Seite werden beim
183 Betrieb im Vorlagenmodus alle architekturspezifischen Symbole (darunter auch
184 die von fremden Architekturen) immer in die Symboldatei geschrieben.
185
186 Das Format der \fIArchitekturliste\fP ist das gleiche wie das des Feldes
187 \fIBuild\-Depends\fP in \fIdebian/control\fP (außer den einschließenden eckigen
188 Klammern []). Beispielsweise wird das erste Symbol aus der folgenden Liste
189 nur auf den Architekturen Alpha, Any\-amd64 und Ia64 betrachtet, das zweite
190 nur Linux\-Architekturen, während das dritte überall außer auf Armel
191 betrachtet wird.
192
193  (arch=alpha any\-amd64 ia64)a_64bit_specific_symbol@Base 1.0
194  (arch=linux\-any)linux_specific_symbol@Base 1.0
195  (arch=!armel)symbol_armel_does_not_have@Base 1.0
196 .TP 
197 \fBignore\-blacklist\fP
198 dpkg\-gensymbols verfügt über eine interne Ausschußliste (»blacklist«) von
199 Symbolen, die nicht in Symboldateien auftauchen sollten, da sie
200 normalerweise nur Seiteneffekte von Implementierungsdetails in der
201 Werkzeugkette darstellen. Falls Sie aus irgendeinem Grund wollen, dass diese
202 Symbole in der Symboldatei aufgenommen werden, sollten Sie das Symbol mit
203 \fBignore\-blacklist\fP kennzeichnen. Dies kann für einige grundlegende
204 Bibliotheken der Werkzeugkette wie libgcc notwendig sein.
205 .TP 
206 \fBc++\fP
207 Gibt \fIc++\fP\-Symbolmuster an. Lesen Sie den Unterabschnitt \fBVerwendung von
208 Symbolmuster\fP unten.
209 .TP 
210 \fBsymver\fP
211 Gibt \fIsymver\fP (Symbolversion)\-Symbolmuster an. Lesen Sie den Unterabschnitt
212 \fBVerwendung von Symbolmuster\fP unten.
213 .TP 
214 \fBregex\fP
215 Gibt \fIregex\fP\-Symbolmuster an. Lesen Sie den Unterabschnitt \fBVerwendung von
216 Symbolmuster\fP unten.
217 .SS "Verwendung von Symbolmustern"
218 .P
219 Anders als die Standardsymbolspezifikation kann ein Muster mehrere reale
220 Symbole aus der Bibliothek abdecken. \fBdpkg\-gensymbols\fP wird versuchen,
221 jedes Muster auf jedes reale Symbol, für das \fIkein\fP spezifisches
222 Symbolgegenstück in der Symboldatei definiert ist, zu passen. Wann immer das
223 erste passende Muster gefunden wurde, werden alle Kennzeichnungen und
224 Eigenschaften als Basisspezifikation des Symbols verwandt. Falls keines der
225 Muster passt, wird das Symbol als neu betrachtet.
226
227 Ein Muster wird als verloren betrachtet, falls es auf kein Symbol in der
228 Bibliothek passt. Standardmäßig wird dies ein Versagen von
229 \fBdpkg\-gensymbols\fP in der Stufe \fI\-c1\fP oder höher auslösen. Falls der
230 Fehlschlag allerdings unerwünscht ist, kann das Muster mit der Kennzeichnung
231 \fIoptional\fP markiert werden. Falls das Muster dann auf nichts passt wird es
232 im Diff nur als MISSING (fehlend) auftauchen. Desweiteren kann das Muster
233 wie jedes Symbol auf die spezielle Architektur mit der Kennzeichnung \fIarch\fP
234 beschränkt werden. Bitte lesen Sie den Unterabschnitt \fBStandard
235 Symbolkennzeichnungen\fP oben für weitere Informationen.
236
237 Muster sind eine Erweiterung des Formats \fIdeb\-symbols(5)\fP; sie sind daher
238 nur in Symboldatei\-Vorlagen gültig. Die Musterspezifikationssyntax
239 unterscheidet sich nicht von der eines spezifischen Symbols. Allerdings
240 dient der Symbolnamenteil der Spezifikation als Ausdruck, der gegen
241 \fIName@Version\fP eines realen Symbols gepasst wird. Um zwischen den
242 verschiedenen Mustertypen zu unterscheiden, wird es typischerweise mit einer
243 speziellen Kennzeichnung gekennzeichnet.
244
245 Derzeit unterstützt \fBdpkg\-gensymbols\fP drei grundlegene Mustertypen:
246 .TP  3
247 \fBc++\fP
248 Dieses Muster wird durch die Kennzeichnung \fIc++\fP verzeichnet. Es passt nur
249 auf die entworrenen (»demangled«) Symbolnamen (wie sie vom Hilfswerkzeug
250 \fBc++filt\fP(1) ausgegeben werden). Dieses Muster ist sehr hilfreich um auf
251 Symbole zu passen, bei dem die verworrenen (»mangled«) Namen sich auf
252 verschiedenen Architekturen unterscheiden während die entworrenen die
253 gleichen bleiben. Eine Gruppe solcher Symbole ist \fInon\-virtual thunks\fP, die
254 einen architekturspezifischen Versatz in ihren verworrenen Namen eingebettet
255 haben. Eine häufige Instanz dieses Falles ist ein virtueller Destruktur, der
256 unter rautenförmiger Vererbung ein nicht\-virtuelles Thunk\-Symbol
257 benötigt. Selbst wenn beispielsweise _ZThn8_N3NSB6ClassDD1Ev@Base auf 32
258 Bit\-Architekturen _ZThn16_N3NSB6ClassDD1Ev@Base auf 64 Bit\-Architekturen
259 ist, kann es mit einem einzigen \fIc++\fP\-Muster gepasst werden:
260 .RS
261 .PP
262 libdummy.so.1 libdummy1 #MINVER#
263  [?]
264  (c++)"non\-virtual thunk to NSB::ClassD::~ClassD()@Base" 1.0
265  [?]
266 .P
267 Der entworrene Name oben kann durch Ausführung folgenden Befehls erhalten
268 werden:
269 .PP
270  $ echo '_ZThn8_N3NSB6ClassDD1Ev@Base' | c++filt
271 .P
272 Bitte beachten Sie, dass per Definition zwar der verworrene Name in der
273 Bibliothek eindeutig ist, die aber nicht notwendigerweise für die
274 entworrenen Namen zutrifft. Ein Satz von unterschiedlichen realen Symbolen
275 können den gleichen entworrenen Namen haben. Beispielsweise ist das der Fall
276 bei nicht\-virtuellen Thunk\-Symbolen in komplexen Vererbungskonfigurationen
277 oder bei den meisten Konstruktoren und Destruktoren (da g++ typischerweise
278 zwei reale Symbole für sie generiert). Da diese Kollisionen aber auf dem
279 ABI\-Niveau passieren, sollten sie nicht die Qualität der Symboldatei
280 reduzieren.
281 .RE
282 .TP 
283 \fBsymver\fP
284 Dieses Muster wird durch die Kennzeichnung \fIsymver\fP verzeichnet. Gut
285 betreute Bibliotheken verfügen über versionierte Symbole, wobei jede Version
286 zu der Version der Originalautoren passt, in der dieses Symbol hinzugefügt
287 wurde. Falls das der Fall ist, können SIe ein \fIsymver\fP\-Muster verwenden, um
288 auf jedes zu einer spezifizierten Version zugeordnete Symbol zu
289 passen. Beispiel:
290 .RS
291 .PP
292 libc.so.6 libc6 #MINVER#
293  (symver)GLIBC_2.0 2.0
294  [?]
295  (symver)GLIBC_2.7 2.7
296  access@GLIBC_2.0 2.2
297 .PP
298 Alle Version GLIBC_2.0 und GLIBC_2.7 zugeordneten Symbole werden zu einer
299 minimalen Version 2.0 bzw. 2.7 führen, wobei das Symbol access@GLIBC_2.0 die
300 Ausnahme darstellt. Es wird zu einer minimalen Abhängigkeit auf libc6
301 Version 2.2 führen, obwohl es im Geltungsbereich des Musters
302 »(symver)GLIBC_2.0« passt, da spezielle Symbole vor Mustern Vorrang haben.
303 .P
304 Bitte beachten Sie, dass Platzhaltermuster im alten Format (angezeigt durch
305 »*@version« im Symbolnamenfeld) zwar noch unterstützt werden, sie aber durch
306 die Syntax im neuen Format »(symver|optional)version« abgelöst
307 wurden. Beispielsweise sollte »*@GLIBC_2.0 2.0« als
308 »(symver|optional)GLIBC_2.0 2.0« geschrieben werden, falls das gleiche
309 Verhalten benötigt wird.
310 .RE
311 .TP 
312 \fBregex\fP
313 Muster mit regulären Ausdrücken werden durch die Kennzeichnung \fIregex\fP
314 verzeichnet. Sie passen auf den regulären Ausdruck von Perl, der im
315 Symbolnamenfeld angegeben ist. Ein regulärer Ausdruck wird wie er ist
316 gepasst. Denken Sie daher daran, ihn mit dem Zeichen \fI^\fP zu beginnen, da er
317 ansonsten auf jeden Teil der Zeichenkette des realen Symbols \fIname@version\fP
318 passt. Beispiel:
319 .RS
320 .PP
321 libdummy.so.1 libdummy1 #MINVER#
322  (regex)"^mystack_.*@Base$" 1.0
323  (regex|optional)"private" 1.0
324 .P
325 Symbole wie »mystack_new@Base«, »mystack_push@Base«, »mystack_pop@Base«
326 usw. werden vom ersten Muster gepasst, während dies z.B. für
327 »ng_mystack_new@Base« nicht der Fall ist. Das zweite Muster wird auf alle
328 Symbole, die die Zeichenkette »private« in ihren Namen enthalten, passen und
329 die gepassten Symbole erben die Kennzeichnung \fIoptional\fP vom Muster.
330 .RE
331 .P
332 Die oben aufgeführten grundlegenden Muster können \- wo es Sinn ergibt \-
333 kombiniert werden. In diesem Fall werden sie in der Reihenfolge verarbeitet,
334 in der die Kennzeichnungen angegeben sind. Im Beispiel
335 .PP
336  (c++|regex)"^NSA::ClassA::Private::privmethod\ed\e(int\e)@Base" 1.0
337  (regex|c++)N3NSA6ClassA7Private11privmethod\edEi@Base 1.0
338 .P
339 werden die Symbole »_ZN3NSA6ClassA7Private11privmethod1Ei@Base« und
340 »_ZN3NSA6ClassA7Private11privmethod2Ei@Base« gepasst. Beim Passen der ersten
341 Musters wird das rohe Symbol erst als C++\-Symbol entworren, dann wird der
342 entworrende Name gegen den regulären Ausdruck gepasst. Auf der anderen Seite
343 wird beim Passen des zweiten Musters der reguläre Ausdruck gegen den rohen
344 Symbolnamen gepasst, dann wird das Symbol überprüft, ob es ein C++\-Symbol
345 ist, indem das Entwirren versucht wird. Ein Fehlschlag eines einfachen
346 Musters wird zum Fehlschlag des gesamten Musters führen. Daher wird
347 beispielsweise »__N3NSA6ClassA7Private11privmethod\edEi@Base« keines der
348 Muster passen, da es kein gültiges C++\-Symbol ist.
349 .P
350 Im Allgemeinen werden die Muster in zwei Kategorien eingeteilt: Aliase
351 (grundlegende \fIc++\fP\- und \fIsymver\fP\-Muster) und generische Muster (\fIregex\fP
352 und alle Kombinationen grundlegender Muster). Passen von grundlegenden
353 alias\-basierenden Mustern ist schnell (O(1)), während generische Muster O(N)
354 (wobei N die Anzahl der generischen Muster ist) für jedes Symbol ist. Daher
355 wird empfohlen, generische Muster nicht zu viel zu verwenden.
356 .P
357 Wenn mehrere Muster auf das gleiche Symbol passen, werden Aliase (zuerst
358 \fIc++\fP, dann \fIsymver\fP) gegenüber den generischen Mustern
359 bevorzugt. Generische Muster werden in der Reihenfolge, in der sie in der
360 Symboldateivorlage gefunden werden, gepasst, bis zum ersten Erfolg. Beachten
361 Sie aber, dass das manuelle Anordnen der Vorlagendateieinträge nicht
362 empfohlen wird, da \fBdpkg\-gensymbols\fP Diffs basierend auf der
363 alphanumerischen Reihenfolge ihrer Namen erstellt.
364 .SS "Includes verwenden"
365 .P
366 Wenn der Satz der exportierten Symbolen sich zwischen Architekturen
367 unterscheidet, kann es ineffizient werden, eine einzige Symboldatei zu
368 verwenden. In diesen Fällen kann sich eine Include\-Direktive in einer Reihe
369 von Arten als nützlich erweisen:
370 .IP \(bu 4
371 Sie können den gemeinsamen Teil in eine externe Datei auslagern und diese
372 Datei dann in Ihre \fIPaket\fP.symbols.\fIArch\fP\-Datei mit einer
373 include\-Direktive wie folgt einbinden:
374
375 #include "\fIPakete\fP.symbols.common"
376 .IP \(bu
377 Die Include\-Direktive kann auch wie jedes Symbol gekennzeichnet werden:
378
379 (Kennzeichen|?|KennzeichenN)#include "einzubindende\-Datei"
380
381 Als Ergebnis werden alle Symbole aus \fIeinzubindende\-Datei\fP standardmäßig
382 als mit \fIKennzeichen\fP ? \fIKennzeichenN\fP gekennzeichnet betrachtet. Sie
383 können diese Funktionalität benutzen, um eine gemeinsame Datei
384 \fIPaket\fP.symbols zu erstellen, die architekturspezifische Symboldateien
385 einbindet:
386
387   common_symbol1@Base 1.0
388  (arch=amd64 ia64 alpha)#include "Paket.symbols.64bit"
389  (arch=!amd64 !ia64 !alpha)#include "Paket.symbols.32bit"
390   common_symbol2@Base 1.0
391 .P
392 Die Symboldateien werden Zeile für Zeile gelesen und include\-Direktiven
393 werden bearbeitet, sobald sie erkannt werden. Das bedeutet, dass der Inhalt
394 der Include\-Datei jeden Inhalt überschreiben kann, der vor der
395 Include\-Direktive aufgetaucht ist und Inhalt nach der Direktive alles aus
396 der Include\-Datei überschreiben kann. Jedes Symbol (oder sogar weitere
397 #include\-Direktiven) in der Include\-Datei kann zusätzliche Kennzeichnungen
398 spezifizieren oder Werte der vererbtgen Kennzeichnungen in ihrer
399 Kennzeichnungsspezifikation überschreiben. Allerdings gibt es keine
400 Möglichkeit für ein Symbol, die ererbten Kennzeichnungen zu überschreiben.
401 .P
402 Eine eingebundene Datei kann die Kopfzeile wiederholen, die den SONAME der
403 Bibliothek enthält. In diesem Fall überschreibt sie jede vorher gelesene
404 Kopfzeile. Allerdings ist es im Allgemeinen am Besten, die Wiederholung von
405 Kopfzeilen zu vermeiden. Ein Weg dies zu erreichen, ist wie folgt:
406 .PP
407 #include "libirgendwas1.symbols.common"
408  arch_spezifisches_Symbol@Base 1.0
409 .SS "Gute Bibliotheksverwaltung"
410 .P
411 Eine gut verwaltete Bibliothek hat die folgenden Eigenschaften:
412 .IP \(bu 4
413 seine API ist stabil (öffentliche Symbole entfallen nie, nur neue
414 öffentliche Symbole werden hinzugefügt) und inkompatible Änderungen erfolgen
415 nur, wenn sich der SONAME ändert,
416 .IP \(bu 4
417 idealerweise verwendet sie Symbolversionierung, um ABI\-Stabilität trotz
418 interner Änderungen und API\-Erweiterungen zu erreichen,
419 .IP \(bu 4
420 sie exportiert nie private Symbole (als Hilfslösung können diese als
421 optional gekennzeichnet werden).
422 .P
423 Bei der Verwaltung der Symboldatei kann das Auftauchen und Verschwinden von
424 Symbolen leicht bemerkt werden. Es ist aber schwieriger, inkompatbile API\-
425 und ABI\-Änderungen zu bemerken. Daher sollte der Betreuer intensiv die
426 Changelog\-Einträge durchschauen und nach Fällen suchen, in denen die Regeln
427 der guten Bibliotheksverwaltung gebrochen wurden. Falls mögliche Probleme
428 entdeckt wurden, sollten der Originalautor informiert werden, da eine
429 Korrektur vom Originalautor immer besser als eine Debian\-spezifische
430 Hilfslösung ist.
431 .SH OPTIONEN
432 .TP 
433 \fB\-P\fP\fIPaketbauverzeichnis\fP
434 Suche nach \fIPaketbauverzeichnis\fP statt nach debian/tmp.
435 .TP 
436 \fB\-p\fP\fIPaket\fP
437 Definiert den Paketnamen. Benötigt, falls mehr als ein binäres Paket in
438 debian/control aufgeführt ist (oder falls es keine Datei debian/control
439 gibt).
440 .TP 
441 \fB\-v\fP\fIVersion\fP
442 Definiert die Paketversion. Standardmäßig wird eie Version aus
443 debian/changelog ausgelesen. Benötigt, falls der Aufruf außerhalb des
444 Quellpaketbaums erfolgt.
445 .TP 
446 \fB\-e\fP\fIBibliotheksdatei\fP
447 Nur die explizit aufgeführten Bibliotheken untersuchen statt alle
448 öffentlichen Bibliotheken zu finden. Sie können Shell\-Muster, die zur
449 Expansion von Pfadnamen verwandt werden (siehe die Handbuchseite File::Glob
450 für weitere Details) in \fIBibliotheksdatei\fP verwenden, um mehrere
451 Bibliotheken mit einem einzelnen Argument zu passen (andernfalls benötigen
452 Sie mehrere \fB\-e\fP).
453 .TP 
454 \fB\-I\fP\fIDateiname\fP
455 Verwende \fIDateiname\fP als Referenzdatei, um die Symboldatei zu erstellen,
456 die dann im Paket selbst integriert wird.
457 .TP 
458 \fB\-O\fP
459 Gebe die erstellte Symboldatei in die Standardausgabe aus statt sie im
460 Paketbaubaum zu speichern.
461 .TP  
462 \fB\-O\fP\fIDateiname\fP
463 Speichere die erstellte Symboldatei unter \fIDateiname\fP. Falls \fIDateiname\fP
464 bereits existiert, wird deren Inhalt als Grundlage für die erstellte
465 Symboldatei verwandt. Sie können diese Funktionalität benutzen, um eine
466 Symboldatei zu aktualisieren, so dass sie zu einer neueren Version der
467 Originalautoren Ihrer Bibliothek passt.
468 .TP 
469 \fB\-t\fP
470 Schreibe die Symboldatei im Vorlagenmodus statt im zu \fIdeb\-symbols(5)\fP
471 kompatiblen Format. Der Hauptunterschied besteht darin, dass im
472 Vorlagenmodus die Symbolnamen und Kennzeichnungen in ihrer Originalform
473 geschrieben werden, im Gegensatz zu den verarbeiteten Symbolnamen mit
474 entfernen Kennzeichnungen im Kompatibilitätsmodus. Desweiteren könnten
475 einige Symbole beim Schreiben einer Standard \fIdeb\-symbols(5)\fP\-Datei
476 entfernt werden (gemäß der Verarbeitungsregeln für Kennzeichen), während in
477 der Symboldateivorlage immer alle Symbole geschrieben werden.
478 .TP 
479 \fB\-c\fP\fI[0\-4]\fP
480 Definiert die Prüfungen, die beim Vergleich der erstellten Symboldatei mit
481 der Vorlagendatei als Startpunkt erfolgen sollen. Standardardstufe ist
482 1. Zunehmende Stufen führen mehr Prüfungen durch und enthalten alle
483 Prüfungen der niedrigeren Stufen. Stufe 0 schlägt nie fehl. Stufe 1 schlägt
484 fehl, wenn einige Symbole verschwunden sind. Stufe 2 schlägt fehlt, falls
485 einige neue Symbole eingeführt wurden. Stufe 3 schlägt fehl, falls einige
486 Bibliotheken verschwunden sind. Stufe 4 schlägt fehl, falls einige
487 Bibliotheken hinzugekommen sind.
488
489 Dieser Wert kann von der Umgebungsvariablen DPKG_GENSYMBOLS_CHECK_LEVEL
490 überschrieben werden.
491 .TP 
492 \fB\-q\fP
493 Ruhig verhalten und nie einen Diff zwischen der erstellten Symboldatei und
494 der als Startpunkt verwandten Vorlagendatei erstellen oder keine Warnungen
495 bezüglich neuer/verlorender Bibliotheken oder neuer/verlorender Symbole
496 ausgeben. Diese Option deaktiviert nur die informative Ausgabe aber nicht
497 die Prüfungen selbst (sehen Sie hierzu die Option \fI\-c\fP).
498 .TP 
499 \fB\-a\fP\fIArchitektur\fP
500 Nehme \fIArch\fP als Host\-Architektur beim Verarbeiten der Symboldateien
501 an. Verwenden Sie diese Option, um Symboldateien oder Diffs für beliebige
502 Architekturen zu erstellen, vorausgesetzt, die Binärprogramme sind bereits
503 verfügbar.
504 .TP 
505 \fB\-d\fP
506 Debug\-Modus aktivieren. Eine Vielzahl von Nachrichten wird angezeigt, um zu
507 erklären, was \fBdpkg\-gensymbols\fP durchführt.
508 .TP 
509 \fB\-V\fP
510 Ausführlichen Modus aktivieren. Die erstellte Symboldatei enthält veraltete
511 Symbole als Kommentare. Im Vorlagenmodus werden Mustersymbole desweiteren
512 von Kommentaren gefolgt, die die echten Symbole aufführen, die auf dieses
513 Muster passen.
514 .TP 
515 \fB\-?\fP, \fB\-\-help\fP
516 Zeige den Bedienungshinweis und beende.
517 .TP 
518 \fB\-\-version\fP
519 Gebe die Version aus und beende sich.
520 .
521 .SH ÜBERSETZUNG
522 Die deutsche Übersetzung wurde 2004, 2006-2012 von Helge Kreutzmann
523 <debian@helgefjell.de>, 2007 von Florian Rehnisch <eixman@gmx.de> und
524 2008 von Sven Joachim <svenjoac@gmx.de>
525 angefertigt. Diese Übersetzung ist Freie Dokumentation; lesen Sie die
526 GNU General Public License Version 2 oder neuer für die Kopierbedingungen.
527 Es gibt KEINE HAFTUNG.
528 .SH "SIEHE AUCH"
529 \fBhttp://people.redhat.com/drepper/symbol\-versioning\fP
530 .br
531 \fBhttp://people.redhat.com/drepper/goodpractice.pdf\fP
532 .br
533 \fBhttp://people.redhat.com/drepper/dsohowto.pdf\fP
534 .br
535 \fBdeb\-symbols\fP(5), \fBdpkg\-shlibdeps\fP(1).