summaryrefslogtreecommitdiffstats
path: root/man/sv/dpkg-shlibdeps.pod
blob: b173f0afd9832a489440d4e776d98fba9314c8de (plain)
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
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
        *****************************************************
        *           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 NAMN

dpkg-shlibdeps - skapar substvar-beroenden för delade bibliotek

=head1 SYNOPS

B<dpkg-shlibdeps> [I<flagga>...] [B<-e>] I<programfil> [I<flagga>...]

=head1 BESKRIVNING

B<dpkg-shlibdeps> beräknar beroenden mellan exekverbara filer som anges som
argument och delade bibliotek. Beroendena läggs till i
substitueringsvariabelfilen B<debian/substvars> som variabler med namnen
B<shlibs:>I<beroendefält> där I<beroendeefält> är ett
beroendefältsnamn. Alla andra variabler som börjar på I<shlibs:> tas bort ur
filen.

B<dpkg-shlibdeps> kan generera beroendeinformation från två
informationskällor, antingen filen I<symbols> eller filen I<shlibs>. För
varje binärfil som analyseras av B<dpkg-shlibdeps> tas en lista fram över
vilka bibliotek de är länkade mot. Programmet slår sedan upp varje bibliotek
i filen I<symbols>, eller i filen I<shlibs> (om den förstnämnda inte
existerar eller om debian/shlibs.local innehåller ett relevant
beroende). ). De båda filerna ska tillhandahållas av bibliotekspaketet och
borde därför vara tillgängliga som %ADMINDIR%/info/I<paket>.I<symbols> eller
/var/lib/dpkg/info/I<paket>.I<shlibs>. Paketnamnet identifieras i två steg:
biblioteksfilen lokaliseras på systemet (genom att slå upp i de kataloger
B<ld.so> skulle använt), och därefter används B<dpkg -S> I<biblioteksfil>
för att slå upp vilket paket biblioteket kommer från.

=head2 Symbolfiler

Symbolfiler innehåller mer finkornig beroendeinformation genom att ange det
minsta beroendet för varje symbol som exporteras av biblioteket. Skriptet
försöker hitta de symboler som är associerade med ett bibliotek på följande
platser (den första träffen används):

=over 

=item debian/*/DEBIAN/symbols

Information om delade bibliotek som skapats av den aktuella byggproceduren
som också anropade B<dpkg-shlibdeps>. De genereras av
B<dpkg-gensymbols>(1). De används endast om biblioteket finns i paketets
byggräd. Filen symbols i det byggträdet går före symbols-filer från andra
binärpaket.

=item %PKGCONFDIR%/symbols/I<package>.symbols.I<arkitektur>

=item %PKGCONFDIR%/symbols/I<paket>.symbols

Överstyrningsfil för beroendeinformation för delade bibliotek, per
system. I<arkitektur> är det aktuella systemets arkitektur (hämtas från
B<dpkg-architecture -qDEB_HOST_ARCH>).

=item Utdata från ”B<dpkg-query --control-path> I<package> symbols”

Paketlokal överstyrande beroendeinformation för delade bibliotek. Filerna
befinner sig i %ADMINDIR% om inte överstyrt med B<--admindir>.

=back

B<dpkg-shlibs> kommer ihåg den (största) minimala version som behövs av
varje bibliotek när den söker genom de symboler som används av alla
binärfilerna. När proceduren är avslutad kan den visa det minsta beroende
som behövs av alla bibliotek som används (så tillvida informationen i
I<symbols>-filerna är korrekt).

Som en säkerhetsåtgärd kan en symbols-fil innehålla metainformationsfältet
I<Build-Depends-Package>, varpå B<dpkg-shlibdeps> hämtar vilken minsta
version som behövs för paketet ur B<Build-Depends>-fältet och använder denna
version om den är högre än den minsta version som beräknats genom att söka
genom symbolerna.

=head2 Shlibs-filer

Shlibs-filer associerar ett bibliotek direkt till ett beroende (utan att se
på symbolerna). Det är därför oftare starkare än vad som egentligen behövs,
men mycket säkert och enkelt att hantera.

Beroenden för ett bibliotek slås upp på flera platser. Den första filen som
innehåller information om det intressanta biblioteket används:

=over 

=item debian/shlibs.local

Paketlokal överstyrande beroendeinformation för delade bibliotek.

=item %PKGCONFDIR%/shlibs.override

Systemspecifik överstyrande beroendeinformation för delade bibliotek.

=item debian/*/DEBIAN/shlibs

Information om delade bibliotek som skapats av den aktuella byggproceduren
som också anropade B<dpkg-shlibdeps>. De genereras av
B<dpkg-gensymbols>(1). De används bara om biblioteket finns i paketets
byggträd. Filen shlibs i byggträdet går före shlibs-filer från andra paket.

=item Utdata från ”B<dpkg-query --control-path> I<package> shlibs”

Paketlokal överstyrande beroendeinformation för delade bibliotek. Filerna
befinner sig i %ADMINDIR% om inte överstyrt med B<--admindir>.

=item %PKGCONFDIR%/shlibs.default

Systemspecifik standardberoendeinformation för delade bibliotek.

=back

De utökade beroendena används sedan direkt (förutom om de filtrerats bort
för att de identifierats som dubbletter, eller svagare än ett annat
beroende).

=head1 FLAGGOR

B<dpkg-shlibdeps> tolkar argument som inte är flaggor som namn på körbara
filer, precis som om de angivits som B<-e>I<programfil>.

=over 

=item B<-e>I<programfil>

Ta med beroenden som är passar för delade bibliotek som krävs för
I<programfil>. Flaggan kan användas flera gånger.

=item B<-l>I<katalog>

Lägg till I<katalog> först i listan över kataloger som ska eftersökas efter
privata delade bibliotek (sedan dpkg 1.17.0). Flaggan kan användas flera
gånger.

B<Observera>: Använd den här flaggan istället för att sätta
B<LD_LIBRARY_PATH>, eftersom miljövariabeln används för att styra
körtidslänkaren, och genom att utnyttja det för att ange sökvägen till
delade bibliotek vid kompilering kan det uppstå problem, till exempel vid
korskompilering.

=item B<-d>I<beroendefält>

Lägg till beroenden som ska läggas till till control-filens beroendefält
I<beroendefält>. (Beroenden för detta fält läggs in i variabeln
B<shlibs:>I<beroendefält>.)

Flaggan B<-d>I<beroendefält> gäller för samtliga binärer efter flaggan, fram
till nästa B<-d>I<beroendefält>. Standardvärdet för I<beroendefält> är
B<Depends>.

Om samma katalogpost (eller en uppsättning alternativ) förekommer i mer än
ett av de kända beroendefältnamnen B<Pre-Depends>, B<Depends>,
B<Recommends>, B<Enhances> eller B<Suggests> så kommer B<dpkg-shlibdeps> att
automatiskt ta bort beroendet från samtliga fält förutom det som anger de
viktigaste beroendena.

=item B<-p>I<variabelnamnsprefix>

Inled substitueringsvariabler med I<variabelnamnsprefix>B<:> i stället för
B<shlibs:>. På samma sätt kommer befintliga substitueringsvariabler som
inleds med I<variabelnamnsprefix>B<:> (i stället för B<shlibs:>) att tas
bort från substitueringsvariabelfilen.

=item B<-O>[I<filnamn>]

Skriv substitueringsvariabelinställningar på standard ut (eller I<filnamn>
om angivet, sedan dpkg 1.17.2), i stället för att försöka lägga till dem i
substitueringsvariabelfilen (som standard B<debian/substvars>).

=item B<-t>I<typ>

Föredra information om delade bibliotek som märkts för den givna
pakettypen. Om det inte finns någon märkt information används
omärkt. Standardpakettypen är B<deb>. Beroendeinformation för delade
bibliotek märks för en given typ genom att inleda det med namnet på typen,
ett kolon, samt blanktecken.

=item B<-L>I<lokal-shlibs-fil>

Läs överstyrande beroendeinformation om delade bibliotek från
I<lokal-shlibs-fil> i stället för B<debian/shlibs.local>.

=item B<-T>I<substvars-fil>

Skriv substitueringsvariabler i I<substvars-fil>; standard är
B<debian/substvars>.

=item B<-V>

Aktiverar pratsamt läge (sedan dpkg 1.14.8). Flera meddelanden visas för att
förklara vad B<dpkg-shlibs> håller på med.

=item B<-x>I<paket>

Uteslut paketet från de genererade beroendena (dpkg 1.14.8). Flaggan är
användbar för att undvika självberoenden för paket som innehåller
ELF-binärer (exekverbara eller biblioteksinsticksprogram) som använder ett
bibliotek som ligger i samma paket. Flaggan kan användas flera gånger för
att utesluta flera paket.

=item B<-S>I<paketbyggkatalog>

Se först i I<paketbyggkatalog> vid försök att hitta ett bibliotek (sedan
dpkg 1.14.15). Användbart när källkodspaketet bygger flera varianter av
samma bibliotek och du vill se till att du får beroendet från ett givet
binärpaket. Flaggan kan användas flera gånger: kataloger söks efter i samma
ordning före kataloger från andra binärpaket.

=item B<-I>I<paketbyggkatalog>

Ignorera I<paketbyggkatalog> vid sökning efter delade shlibs, symboler och
delade biblioteksfiler (sedan dpkg 1.18.5). Flaggan kan användas flera
gånger.

=item B<--ignore-missing-info>

Misslyckas inte om det inte upptäcks någon beroendeinformation för ett delat
bibliotek (sedan dpkg 1.14.8). Den här flaggan rekommenderas inte, alla
bibliotek bör tillhandahålla beroendeinformation (antingen med shlibs-filer
eller med symbols-filer), även om de ännu inte används av andra paket.

=item B<--warnings=>I<värde>

I<Värde> är ett bitfält som anger de varningar som kan ges av
B<dpkg-shlibdeps> (sedan dpkg 1.14.17). Bit 0 (värde=1) aktiverar varningen
”symbolen I<sym>, som används av I<binär>, hittades inte i något av
biblioteken”, bit 1 (värde=2) aktiverar varningen ”paketet kunde undvika ett
onödigt beroende” och bit 2 (värde=4) aktiverar varningen ”I<binär> borde
inte vara länkat mot I<bibliotek>”. Standard för I<värde> är 3: de första
två varningarna är aktiva som standard, men inte den sista. Sätt I<värde>
till 7 om du vill att alla varningar ska vara aktiva.

=item B<--admindir=>I<kat>

Ändra platsen för B<dpkg>-databasen (sedan dpkg 1.14.0). Förvald plats är
I<%ADMINDIR%>.

=item B<-?>, B<--help>

Visar hjälpskärm och avslutar.

=item B<--version>

Visar version och avslutar.

=back

=head1 MILJÖVARIABLER

=over 

=item B<DPKG_COLORS>

Väljer färgläge (sedan dpkg 1.18.5). För närvarande godtas följande värden:
B<auto> (förval), B<always> och B<never>.

=item B<DPKG_NLS>

Om satt, används för att bestämma om lokalt språkstöd ska aktiveras, även
känt som internationaliseringsstöd (eller i18n) (sedan dpkg
1.19.0). Tillåtna värden är: B<0> och B<1> (förval).

=back

=head1 DIAGNOSTIK

=head2 Varningar

Eftersom B<dpkg-shlibdeps> analyserar mängden symboler som används av varje
binärfil i det genererade paketet, kan det i flera fall skriva ut
varningsmeddelanden. De visar på saker som kan förbättras i paketet. I de
flesta fall gäller förbättringarna direkt uppströmskällkoden. Här är de
varningar du kan stöta på, i fallande allvarlighetsgrad:

=over 

=item B<symbolen> I<sym>B<, som används av> I<binär>B<, hittades inte i något av
biblioteken.>

Den omnämnda symbolen hittades inte i biblioteken som länkas mot
binären. I<Binär> är antagligen ett bibliotek och måste länkas mot ett annat
bibliotek under byggproceduren (länkarflaggan B<-l>I<bibliotek>).

=item I<binär> B<innehåller en referens till symbolen> I<sym> B<som inte kan
kopplas; det är troligen ett insticksprogram>

Den angivna symbolen hittades inte i biblioteken som länkats mot
binären. I<Binär> är antagligen ett insticksprogram och symbolen
tillhandahålls av programmet som läser in det. I teorin har inte
insticksprogram något SONAME, men den här binären har ett och därmed kunde
det inte tydligt identifieras som insticksprogram. Det faktum att binären
befinner sig i en icke-offentlig katalog är dock en stark indikation på att
det inte är ett vanligt delat bibliotek. Om binären faktiskt är ett
insticksprogram kan du ignorera varningen. Det är dock alltid möjligt att
det är ett riktigt bibliotek och att program som länker det använder en
RPATH så att den dynamiska länkaren hittar det. Om så är fallet är
biblioteket trasigt och behöver fixas.

=item B<paketet kan undvika ett onödigt beroende om> I<binär> B<inte länkades mot>
I<bibliotek> B<(det använder inget av bibliotekets symboler)>

Ingen av I<binärer>na som länkas mot I<bibliotek> använder någon av
symbolerna som tillhandahålls av biblioteket. Genom att rätta alla binärer
kan du undvika beroendet som gäller detta bibliotek (såvida inte samma
beroende även genereras av ett annat bibliotek som faktiskt används).

=item B<paketet kunde undvika ett onödigt beroende om> I<binärer> B<inte länkades
mot> I<bibliotek> B<(de använder inga av bibliotekets symboler)>

Exakt samma varning som ovan, men för flera binärer

=item I<binär> B<borde inte vara länkat mot> I<bibliotek> B<(det använder inget av
bibliotekets symboler)>

I<Binär> länkar mot ett bibliotek den inte behöver. Det är inte ett problem,
Men genom att inte länka biblioteket mot binären kan man uppnå en mindre
prestandaförbättring. Varningen kontrollerar samma information som den
föregående, men gör det för varje binär istället för att utföra kontrollen
globalt på alla analyserade binärer.

=back

=head2 Fel

B<dpkg-shlibdeps> kommer att misslyckas om det inte hittar ett öppet
bibliotek som en av binärerna använder, eller om biblioteket saknar
associerad beroendeinformation (antingen en shlibs-fil eller en
symbols-fil). Ett öppet bibliotek har ett SONAME och är versionshanterad
(libvadsomhelst.so.I<X>). Ett privat bibliotek (till exempel ett
insticksprogram) bör inte ha något SONAME och behöver inte vara
versionshanterat.

=over 

=item B<hittade inte biblioteket> I<bibliotek-sonamn> B<som behövs för> I<binär>
B<(dess RPATH är ">I<rpath>B<")>

I<Binär> använder ett bibliotek som heter I<bibliotek-sonamn>, men
B<dpkg-shlibdeps> kunde inte hitta biblioteket. B<dpkg-shlibdeps> skapar en
lista över kataloger det ser i på följande sätt: katalogerna som beskrivs i
RPATH i binären, kataloger som lagts till med flaggan B<-l>, kataloger i
miljövariabeln B<LD_LIBRARY_PATH>, kors-multiarkitekturskataloger (t.ex
/lib/arm64-linux-gnu, /usr/lib/arm64-linux-gnu), vanliga öppna kataloger
(/lib, /usr/lib), kataloger listade i /etc/ld.so.conf, samt föråldrade
multilib-kataloger (/lib32, /usr/lib32, /lib64, /usr/lib64). Därefter ser
det i motsvarande kataloger i byggträdet för paketet som innehåller binären
som analyseras, i paketbyggträdet som anges med kommandoradsflaggan B<-S>, i
andra pakets byggträd som innehåller en DEBIAN/shlibs-fil och slutligen i
rotkatalogen. Om biblioteket inte hittas i någon av dessa kataloger får du
det här felmeddelandet.

Om biblioteket som inte hittades ligger i en privat katalog i samma paket
bör du lägga till katalogen med B<-l>. Om det finns i ett annat binärpaket
som byggs bör du se till att shlibs- eller symbols-filen för paketet redan
har skapats och att B<-l> innehåller korrekt katalog som det också ligger i
en privat katalog.

=item B<hittade ingen beroendeinformation för> I<biblioteksfil> B<(använd av>
I<binär>B<).>

Biblioteket som behövs av I<binär> hittades i I<biblioteksfil> av
B<dpkg-shlibdeps>, men B<dpkg-shlibdeps> kunde inte hitta någon
beroendeinformation för biblioteket. För att hitta beroendet har det försökt
koppla biblioteket mot ett Debianpaket med hjälp av B<dpkg -S>
I<biblioteksfil>. Därefter såg det i motsvarande shlibs- och symbols-filer i
%ADMINDIR%/info/, samt i de olika paketens byggträd (debian/*/DEBIAN/).

Det här felet kan orsakas av felaktiga eller saknade shlibs- eller
symbols-filer i bibliotekets paket. Det kan även inträffa om biblioteket
byggts i samma källkodspaket och om shlibs-filen ännu inte har skapats (då
måste du fixa debian/rules så att det skapar shlibs-filen innan det anropar
B<dpkg-shlibdeps>). Felaktig RPATH kan också leda till att biblioteket
hittas under ett icke-kanoniskt namn (till exempel:
/usr/lib/openoffice.org/../lib/libssl.so.9.8 istället för
/usr/lib/libssl.so.0.9.8) som inte associeras till något paket,
B<dpkg-shlibdeps> försöker gå runt detta genom att falla tillbaka på ett
kanoniskt namn (med B<realpath>(3)), men det fungerar kanske inte
alltid. Det är alltid bäst att städa upp RPATH i binären för att undvika
problem.

Om du anropar B<dpkg-shlibdeps> i pratsamt läge (B<-v>) kommer det ge mycket
mer information om var det försökte hitta beroendeinformationen. Det kan
vara användbart om du inte förstår varför du får felmeddelandet.

=back

=head1 SE ÄVEN

B<deb-shlibs>(5), B<deb-symbols>(5), B<dpkg-gensymbols>(1).


=head1 ÖVERSÄTTNING

Peter Krefting och Daniel Nylander.