summaryrefslogtreecommitdiffstats
path: root/man/sv/dpkg-gensymbols.pod
blob: 44ced04a07b90d525f101369fd17fdeabc272d83 (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
        *****************************************************
        *           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-gensymbols - generera symbolfiler (information om delade bibliotek)

=head1 SYNOPS

B<dpkg-gensymbols> [I<flagga>...]

=head1 BESKRIVNING

B<dpkg-gensymbols> söker genom en temporärt byggträd (som standard
debian/tmp) efter bibliotek och skapar en I<symbols>-fil som beskriver
dem. Denna fil kommer sedan, såvida den inte är tom, att installeras i
DEBIAN-underkatalogen i byggträdet så att den hamnar i styrinformationen i
paketet.

När dessa filer skapas, används ett par symbolfiler från paketansvariga som
indata. Programmet söker efter följande filer (och använder den första det
finner):

=over 

=item *

debian/I<paket>.symbols.I<arkitektur>

=item *

debian/symbols.I<arkitektur>

=item *

debian/I<paket>.symbols

=item *

debian/symbols

=back

Dessa filer är i huvudsak intressanta för att kunna tillhandahålla den
minimala version associerad med varje symbol i biblioteken. Detta motsvarar
normalt den första version av paketet som tillhandahöll symbolen, men det
kan manuellt inkrementeras av de ansvariga om symbolens ABI utökas med
bibehållen bakåtkompatibilitet. Det är den ansvarigas ansvar att hålla dessa
filer àjourförda och korrekta, men B<dpkg-gensymbols> kan hjälpa till med
detta.

När den genererade symbolfilen skiljer sig mot den version som
tillhandahållits av de paketansvariga kommer B<dpkg-gensymbols> att skriva
ut en differens mellan de två versionerna. Om ändringarna är för stora
kommer programmet dessutom att misslyckas (du kan justera hur stora
ändringar du kan tolerera, se flaggan B<-c>).

=head1 UNDERHÅLLA SYMBOLFILER

Det grundläggande utväxlingsformatet för symbolfilen beskrivs i
B<deb-symbols>(5), vilket används av symbolfilerna som inkluderas i
bärpaket. Dessa genereras från mallsymbolfiler med ett format som baseras på
det tidigare nämnda, beskrivet i B<deb-src-symbols>(5) och inkluderas i
källkodspaket.

Symbolfilerna är bara riktigt nyttiga om de motsvarar hur paketet har
utvecklats över flera versioner. De paketansvariga måste därför uppdatera
dem varje gång en ny symbol läggs till så att dess associerade minimala
version motsvarar verkligheten.

Diffarna som inkluderas i byggloggarna kan användas som en startpunkt, men
den paketansvarige måste dessutom se till att beteendet för symbolerna inte
har ändrats på ett sätt som gör att något som använder symbolerna och länkar
mot den nya versionen slutar fungera med den gamla versionen.Diffarna som
finns i byggloggarna kan användas som startpunkt, men paketansvariga måste
dessutom se till att beteendet på dessa symboler inte på något sätt har
ändrat sig på ett sådant sätt att något som använder symbolerna och länkar
mot den nya versionen slutar fungera med den gamla versionen.

I de flesta fall kan differensfilen appliceras direkt på filen
debian/I<paket>.symbols. Med det i åtanke så behövs det oftast ytterligare
justeringar: det rekommenderas till exempel att skippa Debianrevisionen från
det minimala versionsnummer så att bakåtanpassningar med ett lägre
versionsnummer, men med samma uppströmsversion, fortfarande uppfyller de
genererade beroendena. Om Debianrevisionen inte kan tas bort på grund av att
en symbol faktiskt lades till av en Debianspecifik ändring så bör ett ”B<~>”
läggs till i slutet av versionen.

Innan man applicerar en patch på symbolfilen bör de ansvariga dubbelchecka
att den är korrekt. Publicerade symboler bör inte försvinna, så patchen bör
ideellt sett bara lägga till nya rader.

Observera att du kan lägga in kommentarer i symbolfilerna

Glöm inte att kontrollera om de gamla symbolversionerna måste ökas. Det
finns inget sätt för B<dpkg-gensymbols> att varna om detta. Att blint
applicera diffen eller utgå från att inget har ändrats om diffen är tom,
utan att se efter sådana ändringar, kan leda till att paket med lösa
beroenden kan deklarera att de fungerar med äldre paket de inte kan fungera
tillsammans med. Detta kommer introducera svårfunna problem vid (delvisa)
uppgraderingar.{

=head2 God hantering av bibliotek

Ett välunderhållet bibliotek har följande funktioner:

=over 

=item *

dess API är stabilt (publika symboler tas aldrig bort, endast nya publika
symboler läggs till) och inkompatibla ändringar görs endast när SONAME
ändras;

=item *

ideellt använder det en versionhanterade symboler för att upprätthålla
ABI-stabilitet trots interna ändringar och API-utökningar;

=item *

det exporterar inte privata symboler (sådana symboler kan taggas med
”optional” för att gå runt detta).

=back

När man underhåller symbolfilen är det lätt att upptäcka symboler som dyker
upp och försvinner. Det är svårare att upptäcka inkompatibla API- och
ABI-ändringar. Den paketansvarige bör därför noggrant läsa igenom
uppströmsändringsloggen för fall då reglerna för god hantering av bibliotek
bryts. Om ett möjligt fel upptäcks bör uppströmsförfattaren meddelas, då det
alltid är bättre att problemet rättas uppströms än specifikt i Debian.

=head1 FLAGGOR

=over 

=item B<-P>I<paketbyggkatalog>

Sök I<paketbyggkatalog> istället för debian/tmp.

=item B<-p>I<paket>

Definiera paketnamnet. Krävs om mer än ett binärpaket listas i
debian/control (eller om det inte finns någon debian/control-fil).

=item B<-v>I<version>

Definiera paketversion. Standardvärdet är versionen som hämtas från
debian/changelog. Krävs om programmet anropas utanför ett källkodspaketträd.

=item B<-e>I<biblioteksfil>

Analyserar endast bibliotek som listats explicit istället för att hitta alla
publika bibliotek. Du kan använda ett jokertecken för filnamn (se
manualsidan B<File::Glob>(3perl) för detaljer) i I<biblioteksfil> för att
träffa multipla bibliotek med ett enda argument (annars behöver du flera
B<-e>).

=item B<-l>I<katalog>

Lägg till I<katalog> till först i listan över kataloger som ska eftersökas
efter privata delade bibliotek (sedan dpkg 1.19.1). 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<-I>I<filnamn>

Använd I<filnamn> som referensfil för att generera symbolfilen som
integreras i själva paketet.

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

Visa den genererade symbolfilen på standard ut eller spara som I<filnamn> om
det anges, istället för B<debian/tmp/DEBIAN/symbols> (eller
I<paketbyggkatalog>B</DEBIAN/symbols> om B<-P> användes). Om I<filnamn>
redan existerar kommer dess innehåll att användas som bas för den genererade
symbolfilen. Du kan använda den här funktionen för att uppdatera en
symbolfil så att den motsvarar en nyare uppströmsversion av ditt bibliotek.

=item B<-t>

Skriv symbolfilen i mall-läge istället för i formatet kompatibelt med
B<deb-symbols>(5). Huvudskillnaden är att symbolnamn och taggar skrivs i sin
originalform i mall-läget, till skillnad från de efterbehandlade
symbolnamnen med borttagna taggar som skrivs i det kompatibla
läget. Dessutom kan vissa symboler uteslutas när en vanlig
B<deb-symbols>(5)-fil skrivs (i enlighet med tagghanteringsreglerna) medan
alla symboler alltid skrivs till symbolfilsmallen.

=item B<-c>I<[0-4]>

Definiera vilka kontroller som ska utföras när den genererade symbolfilen
jämförs med den mallfil som används som startpunkt. Som standard är nivån
1. Genom att öka nivån utförs flera kontroller, inklusive alla kontroller på
lägre nivå. Nivå 2 misslyckas om nya symboler har introducerats. Nivå 3
misslyckas om några bibliotek har försvunnit. Nivå 4 misslyckas om några
bibliotek har introducerats.

Värdet kan överstyras med miljövariabeln B<DPKG_GENSYMBOLS_CHECK_LEVEL>.

=item B<-q>

Håll tyst och generera aldrig en differens mellan den genererade symbolfilen
och mallfilen som användes som startpunkt eller visa varningar om
nya/förlorade bibliotek eller nya/förlorade symboler. Den här flaggan tar
endast bort informationsutdata, inte själva kontrolleran (se flaggan B<-c>).

=item B<-a>I<arkitektur>

Anta I<arkitektur> som värdarkitektur vid hantering av symbolfiler. Använd
den här flaggan för att generera en symbolfil eller differens för valfri
arkitektur så länge dess binärer är tillgängliga.

=item B<-d>

Aktiverar felsökningsläge. Flera meddelanden visas för att förklara vad
B<dpkg-gensymbols> gör.

=item B<-V>

Aktivera pratsamt läge. Den genererade symbolfilen innehåller ej längre
rekommenderade symboler som kommentarer. I mall-läge följs dessutom
mönstersymboler av kommentarer som visar vilka verkliga symboler som har
träffats av mönstret.

=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_GENSYMBOLS_CHECK_LEVEL>

Överstyr kommandokontrollnivån, även om kommandoradsflaggan B<-c> gavs
(observera att detta går mot den normala konventionen att
kommandoardsflaggor har företräde över miljövariabler).

=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 SE ÄVEN

L<https://people.redhat.com/drepper/symbol-versioning>,
L<https://people.redhat.com/drepper/goodpractice.pdf>,
L<https://people.redhat.com/drepper/dsohowto.pdf>, B<deb-src-symbol>(5),
B<deb-symbols>(5), B<dpkg-shlibdeps>(1).


=head1 ÖVERSÄTTNING

Peter Krefting och Daniel Nylander.