1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
|
*****************************************************
* GENERATED FILE, DO NOT EDIT *
* THIS IS NO SOURCE FILE, BUT RESULT OF COMPILATION *
*****************************************************
This file was generated by po4a(7). Do not store it (in VCS, for example),
but store the PO file used as source file by po4a-translate.
In fact, consider this as a binary, and the PO file as a regular .c file:
If the PO get lost, keeping this translation up-to-date will be harder.
=encoding UTF-8
=head1 BEZEICHNUNG
dpkg-shlibdeps - Substvar-Abhängigkeiten für Laufzeitbibliotheken erstellen
=head1 ÜBERSICHT
B<dpkg-shlibdeps> [I<Option>…] [B<-e>] I<Programm> [I<Option>…]
=head1 BESCHREIBUNG
B<dpkg-shlibdeps> berechnet Abhängigkeiten von Laufzeitbibliotheken für Programme, deren Namen als Argument übergeben werden. Die Abhängigkeiten werden zu der Datei der Ersetzungsvariablen B<debian/substvars> als Variablennamen B<shlibs:>I<Abhängigkeitsfeld> hinzugefügt, wobei I<Abhängigkeitsfeld> der Feldname einer Abhängigkeit ist. Alle anderen Variablen, die mit B<shlibs:> beginnen, werden aus der Datei entfernt.
B<dpkg-shlibdeps> hat zwei mögliche Informationsquellen zur Erstellung der Abhängigkeitsinformationen. Entweder I<Symbol>- oder I<Shlibs>-Dateien. B<dpkg-shlibdeps> findet für jedes Programm, das es analysiert, die Bibliotheken heraus, gegen die es gelinkt ist. Bei jeder Bibliothek schaut es entweder in die I<Symbol>- oder in die I<Shlibs>-Datei (falls Erstere nicht existiert oder falls B<debian/shlibs.local> die relevanten Abhängigkeiten enthält). Beide Dateien sollten von dem Bibliothekspaket bereitgestellt werden und sollten daher als %ADMINDIR%/info/I<Paket>.I<Symbol> oder %ADMINDIR%/info/I<Paket>.I<Shlibs> verfügbar sein. Der Paketname wird in zwei Schritten identifiziert: zuerst wird die Bibliotheksdatei auf dem System gefunden (durch Prüfung der gleichen Verzeichnisse wie bei B<ld.so>), dann wird B<dpkg -S> I<Bibliotheksdatei> verwendet, um das Paket, das die Bibliothek bereitstellt, zu ermitteln.
=head2 Symboldateien
Symboldateien enthalten feiner-granulare Abhängigkeitsinformationen, indem sie die Minimalabhängigkeit für jedes von der Bibliothek exportierte Symbol beschreiben. Das Skript versucht, eine Symboldatei, die zu dem Bibliothekspaket gehört, an den folgenden Orten zuzuordnen (der erste Treffer wird verwendet):
=over
=item debian/*/DEBIAN/symbols
Informationen über Laufzeitbibliotheken, die vom aktuellen Bauprozess erstellt werden, der auch B<dpkg-shlibdeps> aufruft. Sie werden von L<dpkg-gensymbols(1)> erstellt. Sie werden nur verwendet, falls die Bibliothek im Bau-Baum des Pakets gefunden wird. Die Symboldatei im Bau-Baum hat Vorrang gegenüber Symboldateien aus anderen Binärpaketen.
=item %PKGCONFDIR%/symbols/I<Paket>.symbols.I<Architektur>
=item %PKGCONFDIR%/symbols/I<Paket>.symbols
Systemabhängige Überschreibung der Abhängigkeitsinformationen von Laufzeitbibliotheken. I<Architektur> ist die Architektur des aktuellen Systems (ermittelt durch B<dpkg-architecture -qDEB_HOST_ARCH>).
=item Ausgabe von „B<dpkg-query --control-path> I<Paket> symbols“
Vom Paket bereitgestellte Abhängigkeitsinformationen für Laufzeitbibliotheken. Falls nicht durch B<--admindir> überschrieben, befinden sich solche Dateien unter %ADMINDIR%.
=back
Während des Durchsuchens aller vom Programm verwendeten Symbole erinnert sich B<dpkg-shlibdeps> an die (höchste) Minimalversion, die von jeder Bibliothek benötigt wird. Am Ende des Prozesses ist es in der Lage, die minimale Abhängigkeit für jede eingesetzte Bibliothek zu schreiben (vorausgesetzt, die Informationen in den I<Symbol>-Dateien sind korrekt).
As a safe-guard measure, a symbols file can provide a B<Build-Depends-Package> or B<Build-Depends-Packages> meta-information field and B<dpkg-shlibdeps> will extract the minimal version required by the corresponding package in the B<Build-Depends> field and use this version if it's higher than the minimal version computed by scanning symbols.
=head2 Shlibs-Dateien
Shlibs-Dateien ordnen Bibliotheken direkt Abhängigkeiten zu (ohne auf die Symbole zu schauen). Daher ist dies oft stärker als benötigt, aber dafür sicher und leicht zu handhaben.
Die Abhängigkeiten für eine Bibliothek werden an verschiedenen Stellen nachgeschlagen. Die erste Datei, die Informationen für die betrachtete Bibliothek bereitstellt, wird verwendet:
=over
=item debian/shlibs.local
Paket-beschränkte Überschreibung der Abhängigkeitsinformationen von Laufzeitbibliotheken.
=item %PKGCONFDIR%/shlibs.override
Systemabhängige Überschreibung der Abhängigkeitsinformationen von Laufzeitbibliotheken.
=item debian/*/DEBIAN/shlibs
Informationen über Laufzeitbibliotheken, die vom aktuellen Bauprozess erstellt werden, der auch B<dpkg-shlibdeps> aufruft. Sie werden nur verwendet, falls die Bibliothek im Bau-Verzeichnis eines Pakets gefunden wird. Die Shlibs-Datei in diesem Bau-Verzeichnis hat gegenüber Shlibs-Dateien von anderen Binärpaketen Vorrang.
=item Ausgabe von „B<dpkg-query --control-path> I<Paket> shlibs“
Vom Paket bereitgestellte Abhängigkeitsinformationen für Laufzeitbibliotheken. Falls nicht durch B<--admindir> überschrieben, befinden sich solche Dateien unter %ADMINDIR%.
=item %PKGCONFDIR%/shlibs.default
Systemabhängige Vorgaben für Abhängigkeitsinformationen von Laufzeitbibliotheken.
=back
Die entnommenen Abhängigkeiten werden direkt verwendet (es sei denn, sie werden als Dubletten herausgefiltert oder sie sind schwächer als eine andere Abhängigkeit).
=head1 OPTIONEN
B<dpkg-shlibdeps> interpretiert nicht-Options-Argumente als Namen von ausführbaren Programmen, als ob diese mit B<-e>I<Programm> übergeben worden wären.
=over
=item B<-e>I<Programm>
Nimmt Abhängigkeiten auf, die für von I<Programm> benötigte Laufzeitbibliotheken angemessen sind. Diese Option kann mehrfach angegeben werden.
=item B<-l>I<Verzeichnis>
Stellt I<Verzeichnis> der Liste der zu durchsuchenden privaten Laufzeitbibliotheken voran (seit Dpkg 1.17.0). Diese Option kann mehrfach angegeben werden.
B<Hinweis>: Verwenden Sie diese Variable, statt B<LD_LIBRARY_PATH> zu setzen, da diese Umgebungsvariable verwandt wird, um den Laufzeit-Linker zu steuern und ihr Missbrauch zum Setzen von Pfaden zu Laufzeitbibliotheken zur Bauzeit kann beispielsweise beim Cross-Kompilieren problematisch werden.
=item B<-d>I<Abhängigkeitsfeld>
Fügt Abhängigkeiten hinzu, die zum I<Abhängigkeitsfeld> der Steuerdatei hinzugefügt werden sollen. (Die Abhängigkeiten für dieses Feld werden in die Variable B<shlibs:>I<Abhängigkeitsfeld> geschrieben.)
Die Option B<-d>I<Abhängigkeitsfeld> betrifft alle Programme, die danach angegeben werden, bis zum nächsten B<-d>I<Abhängigkeitsfeld>. Der Standardwert für I<Abhängigkeitsfeld> ist B<Depends>.
Falls der gleiche Abhängigkeitseintrag (oder ein Satz von Alternativen) mehr als einmal in den erkannten Abhängigkeitsfeldnamen B<Pre-Depends>, B<Depends>, B<Recommends>, B<Enhances> oder B<Suggests> auftaucht, wird B<dpkg-shlibdeps> die Abhängigkeit von allen Feldern außer dem, das die wichtigsten Abhängigkeiten repräsentiert, entfernen.
=item B<-p>I<Variablennamepräfix>
Beginnt die Ersetzungsvariablen mit I<Variablennamepräfix>B<:> statt mit B<shlibs:>. Entsprechend werden alle Ersetzungsvariablen, die mit I<Variablennamepräfix>B<:> (statt mit B<shlibs:>) beginnen, aus der Ersetzungsvariablendatei entfernt.
=item B<-O>[I<Dateiname>]
Gibt die Ersetzungsvariableneinstellung in die Standardausgabe (oder nach I<Dateiname>, falls angegeben, seit Dpkg 1.17.2) aus, statt sie zu der Ersetzungsvariablendatei (standardmäßig (B<debian/substvars>) hinzuzufügen.
=item B<-t>I<Typ>
Bevorzugt Abhängigkeitsinformationen für Laufzeitbibliotheken, die für ein vorgegebenes Paket markiert sind. Falls keine Markierungsinformation verfügbar ist, fällt dies auf unmarkierte Informationen zurück. Der Standard-Pakettyp ist B<deb>. Abhängigkeitsinformationen für Laufzeitbibliotheken werden für einen vorgegebenen Typ markiert, indem vor sie der Namen des Typs, ein Doppelpunkt und ein Leerraumzeichen gesetzt wird.
=item B<-L>I<lokale_shlibs-Datei>
Liest die Hinwegsetz-Abhängigkeiten von Laufzeitbibliotheken aus I<lokale_shlibs-Datei> statt aus B<debian/shlibs.local>.
=item B<-T>I<Substvars-Datei>
Schreibt Ersetzungsvariablen in I<Substvars-Datei>; standardmäßig B<debian/substvars>.
=item B<-v>
Aktiviert ausführlichen Modus (seit Dpkg 1.14.8). Eine Vielzahl von Meldungen wird angezeigt, um zu erklären, was B<dpkg-shlibdeps> durchführt.
=item B<-x>I<Paket>
Schließt das Paket von den generierten Abhängigkeiten aus (seit Dpkg 1.14.8). Dies ist für Pakete nützlich, die ELF-Programmdateien (Programme oder Bibliothekserweiterungen) bereitstellen, die eine Bibliothek im gleichen Paket verwendet, um Abhängigkeiten des Pakets zu sich selbst zu vermeiden. Diese Option kann mehrfach verwendet werden, um mehrere Pakete auszuschließen.
=item B<-S>I<Paketbauverzeichnis>
Schaut beim Versuch, eine Bibliothek zu finden, zuerst in I<Paketbauverzeichnis> (seit Dpkg 1.14.15). Dies ist nützlich, wenn das Quellpaket mehrere Spielarten der gleichen Bibliothek baut und Sie sicherstellen wollen, dass Sie die Abhängigkeit aus einem bestimmten Binärpaket erhalten. Sie können diese Option mehrfach verwenden: Verzeichnisse werden in der gleichen Reihenfolge vor Verzeichnissen anderer Binärpakete probiert.
=item B<-I>I<Paketbauverzeichnis>
Ignoriert I<Paketbauverzeichnis> beim Schauen nach Shlibs, Symbolen und gemeinsam benutzten Bibliotheken (seit Dpkg 1.18.5). Sie können diese Option mehrfach verwenden.
=item B<--ignore-missing-info>
Falls keine Abhängigkeitsinformationen für die Laufzeitbibliothek gefunden werden kann, erfolgt kein Fehlschlag (seit Dpkg 1.14.8). Von der Verwendung dieser Option wird abgeraten, da alle Bibliotheken Abhängigkeitsinformationen bereitstellen sollten (entweder über shlibs-Dateien oder über symbols-Dateien), selbst falls diese noch nicht von anderen Paketen verwendet werden.
=item B<--warnings=>I<Wert>
I<Wert> ist ein Bitfeld, das den Satz an Warnungen definiert, die von B<dpkg-shlibdeps> ausgegeben werden können (seit Dpkg 1.14.17). Bit 0 (Wert=1) aktiviert die Warnung „Symbol I<Sym>, verwendet von I<Programm>, in keiner der Bibliotheken gefunden.“, Bit 1 (Wert=2) aktiviert die Warnung „Das Paket könnte eine nutzlose Abhängigkeit vermeiden“ und Bit 2 (Wert=4) aktiviert die Warnung „I<Programm> sollte nicht gegen I<Bibliothek> gelinkt werden“. Standardmäßig ist I<Wert> 3: die ersten zwei Warnungen sind standardmäßig aktiv, die letzte nicht. Setzen Sie I<Wert> auf 7, falls Sie möchten, dass alle Warnungen aktiv sein sollen.
=item B<--admindir=>I<Verz>
Ändert den Ablageort der B<dpkg>-Datenbank (seit Dpkg 1.14.0). Der Standardort ist I<%ADMINDIR%>.
=item B<-?>, B<--help>
Zeigt einen Hinweis zum Aufruf und beendet das Programm.
=item B<--version>
Gibt die Version aus und beendet das Programm.
=back
=head1 UMGEBUNG
=over
=item B<DPKG_COLORS>
Setzt den Farbmodus (seit Dpkg 1.18.5). Die derzeit unterstützten Werte sind: B<auto> (Vorgabe), B<always> und B<never>.
=item B<DPKG_NLS>
Falls dies gesetzt ist, wird es zur Entscheidung, ob Native Language Support, auch als Unterstützung für Internationalisierung (oder i18n) bekannt, aktiviert wird (seit Dpkg 1.19.0). Die akzeptierten Werte sind: B<0> und B<1> (Vorgabe).
=back
=head1 DIAGNOSE
=head2 Warnungen
Da B<dpkg-shlibdeps> den Symbolsatz, der von jedem Programm des erstellten Pakets verwendet wird, analysiert, ist es in mehreren Fällen in der Lage, Warnungen auszugeben. Sie informieren Sie über Dinge, die im Paket verbessert werden können. Meistens betreffen diese Verbesserungen direkt die Quellen der Originalautoren. In der Reihenfolge abnehmender Wichtigkeit folgen hier die relevanten Warnungen, die auftauchen könnten:
=over
=item B<Symbol> I<Symbol>B<, verwendet von> I<Programm>B<, in keiner der
Bibliotheken gefunden.>
Das angegebene Symbol wurde nicht in den Bibliotheken gefunden, gegen die das Programm gelinkt wurde. I<Programm> ist höchstwahrscheinlich eine Bibliothek und muss mit zusätzlichen Bibliotheken während des Bau-Prozesses gelinkt werden (Option B<-l>I<Bibliothek> des Linkers).
=item I<Programm> B<enthält eine nicht-auflösbare Referenz auf Symbol> I<Sym>B<:
wahrscheinlich eine Erweiterung>.
Das angegebene Symbol wurde nicht in den Bibliotheken gefunden, die mit diesem Programm verlinkt sind. Das I<Progamm> ist höchstwahrscheinlich eine Erweiterung und das Symbol wird von dem Programm bereitgestellt, das diese Erweiterung lädt. Theoretisch verfügt eine Erweiterung nicht über einen SONAMEn, allerdings ist dies bei diesem Programm der Fall und daher konnte es nicht eindeutig als Erweiterung erkannt werden. Die Tatsache, dass dieses Programm in einem nicht-öffentlichen Verzeichnis gespeichert wird, ist allerdings ein starkes Anzeichen dafür, dass es keine normale gemeinsam benutzte Bibliothek ist. Falls dieses Programm tatsächlich eine Erweiterung ist, ignorieren Sie die Warnung. Allerdings besteht immer die Möglichkeit, dass es eine echte Bibliothek ist und dass Programme, die damit verlinken, einen RPATH verwenden, so dass der dynamische Lader sie findet. In diesem Fall ist die Bibliothek beschädigt und muss repariert werden.
=item B<Das Paket könnte eine nutzlose Abhängigkeit vermeiden, falls> I<Programm>
B<nicht gegen> I<Bibliothek> B<gelinkt wäre (es verwendet keines der Symbole
der Bibliothek).>
Keines der I<Programme>, die gegen I<Bibliothek> gelinkt sind, verwendet eines der von der Bibliothek bereitgestellten Symbole. Indem Sie die Programme korrigierten, vermieden Sie die Abhängigkeit, die mit dieser Bibliothek verbunden ist (es sei denn, die Abhängigkeit wird auch durch eine andere Bibliothek generiert, die diese Bibliothek wirklich verwendet).
=item B<Das Paket könnte eine nutzlose Abhängigkeit vermeiden, falls> I<Programme>
B<nicht gegen> I<Bibliothek> B<gelinkt wären (sie verwenden keines der
Symbole der Bibliothek).>
Exakt das gleiche wie die obige Warnung, aber für mehrere Programme.
=item I<Programm> B<sollte nicht gegen> I<Bibliothek> B<gelinkt werden (es
verwendet keines der Bibliotheks-Symbole).>
Das I<Programm> ist gegen eine Bibliothek gelinkt, die es nicht benötigt. Das ist kein Problem, aber bei der Ladezeit können kleine Leistungsverbesserungen erreicht werden, indem diese Bibliothek nicht in das Programm gelinkt wird. Diese Warnung überprüft die gleichen Informationen wie die vorhergehende, allerdings für jedes Programm statt global für alle überprüften Programme.
=back
=head2 Fehler
B<dpkg-shlibdeps> wird fehlschlagen, falls es eine vom Programm verwendete öffentliche Bibliothek nicht finden kann oder falls diese Bibliothek keine zugeordneten Abhängigkeitsinformationen hat (entweder eine Shlibs- oder Symbols-Datei). Eine öffentliche Bibliothek hat einen SONAME und ist versioniert (libirgendwas.so.I<X>). Eine private Bibliothek (wie z.B. eine Erweiterung) sollte keinen SONAME haben und braucht nicht versioniert zu sein.
=over
=item B<konnte Bibliothek> I<SONAME-der-Bibliothek> B<benötigt von> I<Programm>
B<nicht finden (ihr RPATH ist „>I<rpath>B<“).>
Das I<Programm> verwendet eine Bibliothek mit Namen I<SONAME-der-Bibliothek>, aber B<dpkg-shlibdeps> konnte diese Bibliothek nicht finden. B<dpkg-shlibdeps> erstellt folgendermaßen eine Liste der zu prüfenden Verzeichnisse: im RPATH des Programms aufgeführte Verzeichnisse, durch die Option B<-l> hinzugefügte Verzeichnisse, in der Umgebungsvariable B<LD_LIBRARY_PATH> aufgeführte Verzeichnisse, Cross-Multiarch-Verzeichnisse (z.B. /lib/arm64-linux-gnu, /usr/lib/arm64-linux-gnu), standardmäßige öffentliche Verzeichnisse (/lib, /usr/lib), in /etc/ld.so.conf aufgeführte Verzeichnisse und veraltete Multilib-Verzeichnisse (/lib32, /usr/lib32, /lib64, /usr/lib64). Dann prüft es diese Verzeichnisse im Bau-Baum des analysierten Pakets, in den mit der Befehlszeilenoption B<-S> angegebenen Paketbauverzeichnissen, in anderen Paketbau-Bäumen, die eine DEBIAN/shlibs- oder DEBIAN/symbols-Datei enthalten und schließlich im Wurzelverzeichnis. Falls die Bibliothek nicht in einem dieser Verzeichnisse gefunden wird, erhalten Sie diesen Fehler.
Falls sich die nicht gefundene Bibliothek in einem privaten Verzeichnis des gleichen Pakets befindet, müssen Sie das Verzeichnis mit B<-l> hinzufügen. Falls sie sich in einem anderen gerade zu bauenden Paket befindet, müssen Sie sicherstellen, dass die „shlibs/symbols“-Datei dieses Pakets bereits angelegt ist und das B<-l> das geeignete Verzeichnis enthält, falls die Bibliothek zudem in einem privaten Verzeichnis liegt.
=item B<Keine Abhängigkeitsinformationen für> I<Bibliotheksdatei> B<(verwendet
von> I<Programm>B<) gefunden.>
Die von I<Programm> benötigte Bibliothek wurde von B<dpkg-shlibdeps> in I<Bibliotheksdatei> gefunden, allerdings konnte B<dpkg-shlibdeps> keine Abhängigkeitsinformationen für diese Bibliothek ermitteln. Um die Abhängigkeit herauszufinden, hat es versucht, die Bibliothek mittels B<dpkg -S> I<Bibliotheksdatei> auf ein Debian-Paket abzubilden. Dann überprüfte es die zugehörigen Shlibs- und Symboldateien in %ADMINDIR%/info/ und die verschiedenen Paketbaubäume (debian/*/DEBIAN/).
Dieser Fehlschlag kann durch defekte oder fehlende Shlibs- oder Symboldateien im Paket der Bibliothek ausgelöst werden. Er könnte auch auftreten, falls die Bibliothek im gleichen Quellpaket gebaut wird und die Shlibs-Datei noch nicht angelegt wurde (wobei Sie in diesem Fall debian/rules korrigieren müssen, damit die Shlibs-Datei erstellt wird, bevor B<dpkg-shlibdeps> aufgerufen wird). Defekte RPATH können auch dazu führen, dass die Bibliothek unter nicht-kanonischen Namen gefunden wird (beispielsweise /usr/lib/openoffice.org/../lib/libssl.so.0.9.8 statt /usr/lib/libssl.so.0.9.8), so dass dann diese keinem Paket zugeordnet ist; B<dpkg-shlibdeps> versucht dies zu umgehen, indem es auf einen kanonischen Namen (mittels L<realpath(3)>) zurückfällt, allerdings könnte dies manchmal nicht funktionieren. Es ist immer am besten, den RPATH zu bereinigen, um Probleme zu vermeiden.
Viele weitere Informationen darüber, wo nach Abhängigkeitsinformationen gesucht wird, können durch einen Aufruf von B<dpkg-shlibdeps> im detaillierten Modus (B<-v>) erhalten werden. Dies kann nützlich sein, falls Sie nicht verstehen, warum es Ihnen diesen Fehler meldet.
=back
=head1 SIEHE AUCH
L<deb-substvars(5)>, L<deb-shlibs(5)>, L<deb-symbols(5)>, L<dpkg-gensymbols(1)>.
=head1 ÜBERSETZUNG
Die deutsche Übersetzung wurde 2004, 2006-2023 von Helge Kreutzmann
<debian@helgefjell.de>, 2007 von Florian Rehnisch <eixman@gmx.de> und
2008 von Sven Joachim <svenjoac@gmx.de>
angefertigt. Diese Übersetzung ist Freie Dokumentation; lesen Sie die
GNU General Public License Version 2 oder neuer für die Kopierbedingungen.
Es gibt KEINE HAFTUNG.
|