Commit | Line | Data |
---|---|---|
1479465f GJ |
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 | .\" Copyright © 2012-2015 Guillem Jover <guillem@debian.org> | |
6 | .\" | |
7 | .\" This is free software; you can redistribute it and/or modify | |
8 | .\" it under the terms of the GNU General Public License as published by | |
9 | .\" the Free Software Foundation; either version 2 of the License, or | |
10 | .\" (at your option) any later version. | |
11 | .\" | |
12 | .\" This is distributed in the hope that it will be useful, | |
13 | .\" but WITHOUT ANY WARRANTY; without even the implied warranty of | |
14 | .\" MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
15 | .\" GNU General Public License for more details. | |
16 | .\" | |
17 | .\" You should have received a copy of the GNU General Public License | |
18 | .\" along with this program. If not, see <https://www.gnu.org/licenses/>. | |
19 | . | |
20 | .\"******************************************************************* | |
21 | .\" | |
22 | .\" This file was generated with po4a. Translate the source file. | |
23 | .\" | |
24 | .\"******************************************************************* | |
25 | .TH dpkg\-gensymbols 1 %RELEASE_DATE% %VERSION% Dpkg\-sviten | |
26 | .nh | |
27 | .SH NAMN | |
28 | dpkg\-gensymbols \- generera symbolfiler (information om delade bibliotek) | |
29 | . | |
30 | .SH SYNOPS | |
31 | \fBdpkg\-gensymbols\fP [\fIflagga\fP...] | |
32 | . | |
33 | .SH BESKRIVNING | |
34 | \fBdpkg\-gensymbols\fP söker genom en temporärt byggträd (som standard | |
35 | debian/tmp) efter bibliotek och skapar en \fIsymbols\fP\-fil som beskriver | |
36 | dem. Denna fil kommer sedan, såvida den inte är tom, att installeras i | |
37 | DEBIAN\-underkatalogen i byggträdet så att den hamnar i styrinformationen i | |
38 | paketet. | |
39 | .P | |
40 | När dessa filer skapas, används ett par symbolfiler från paketansvariga som | |
41 | indata. Programmet söker efter följande filer (och använder den första det | |
42 | finner): | |
43 | .IP • 4 | |
44 | debian/\fIpaket\fP.symbols.\fIarkitektur\fP | |
45 | .IP • 4 | |
46 | debian/symbols.\fIarkitektur\fP | |
47 | .IP • 4 | |
48 | debian/\fIpaket\fP.symbols | |
49 | .IP • 4 | |
50 | debian/symbols | |
51 | .P | |
52 | Dessa filer är i huvudsak intressanta för att kunna tillhandahålla den | |
53 | minimala version associerad med varje symbol i biblioteken. Detta motsvarar | |
54 | normalt den första version av paketet som tillhandahöll symbolen, men det | |
55 | kan manuellt inkrementeras av de ansvariga om symbolens ABI utökas med | |
56 | bibehållen bakåtkompatibilitet. Det är den ansvarigas ansvar att hålla dessa | |
57 | filer àjourförda och korrekta, men \fBdpkg\-gensymbols\fP kan hjälpa till med | |
58 | detta. | |
59 | .P | |
60 | När den genererade symbolfilen skiljer sig mot den version som | |
61 | tillhandahållits av de paketansvariga kommer \fBdpkg\-gensymbols\fP att skriva | |
62 | ut en differens mellan de två versionerna. Om ändringarna är för stora | |
63 | kommer programmet dessutom att misslyckas (du kan justera hur stora | |
64 | ändringar du kan tolerera, se flaggan \fB\-c\fP). | |
65 | .SH "UNDERHÅLLA SYMBOLFILER" | |
66 | The symbols files are really useful only if they reflect the evolution of | |
67 | the package through several releases. Thus the maintainer has to update them | |
68 | every time that a new symbol is added so that its associated minimal version | |
69 | matches reality. The diffs contained in the build logs can be used as a | |
70 | starting point, but the maintainer, additionally, has to make sure that the | |
71 | behaviour of those symbols has not changed in a way that would make anything | |
72 | using those symbols and linking against the new version, stop working with | |
73 | the old version. In most cases, the diff applies directly to the | |
74 | debian/\fIpackage\fP.symbols file. That said, further tweaks are usually | |
75 | needed: it's recommended for example to drop the Debian revision from the | |
76 | minimal version so that backports with a lower version number but the same | |
77 | upstream version still satisfy the generated dependencies. If the Debian | |
78 | revision can't be dropped because the symbol really got added by the Debian | |
79 | specific change, then one should suffix the version with ‘\fB~\fP’. | |
80 | .P | |
81 | Innan man applicerar en patch på symbolfilen bör de ansvariga dubbelchecka | |
82 | att den är korrekt. Publicerade symboler bör inte försvinna, så patchen bör | |
83 | ideellt sett bara lägga till nya rader. | |
84 | .P | |
85 | Note that you can put comments in symbols files: any line with ‘#’ as the | |
86 | first character is a comment except if it starts with ‘#include’ (see | |
87 | section \fBUsing includes\fP). Lines starting with ‘#MISSING:’ are special | |
88 | comments documenting symbols that have disappeared. | |
89 | .P | |
90 | Glöm inte att kontrollera om de gamla symbolversionerna måste ökas. Det | |
91 | finns inget sätt för \fBdpkg\-gensymbols\fP att varna om detta. Att blint | |
92 | applicera diffen eller utgå från att inget har ändrats om diffen är tom, | |
93 | utan att se efter sådana ändringar, kan leda till att paket med lösa | |
94 | beroenden kan deklarera att de fungerar med äldre paket de inte kan fungera | |
95 | tillsammans med. Detta kommer introducera svårfunna problem vid (delvisa) | |
96 | uppgraderingar.{ | |
97 | .SS "Använda #PACKAGE#\-substituering" | |
98 | .P | |
99 | I några sällsynta fall skiljer sig namnet på biblioteket mellan | |
100 | arkitekturer. För att undvika att hårdkoda namnet på paketet i symbolfilen | |
101 | kan du använda markören \fI#PACKAGE#\fP. Den ersätts av det faktiska | |
102 | paketnamnet när symbolfilen installeras. Till skillnad från | |
103 | \fI#MINVER#\fP\-markören kommer \fI#PACKAGE#\fP aldrig att dyka upp i en symbolfil | |
104 | i ett binärpaket. | |
105 | .SS "Använda symboltaggar" | |
106 | .P | |
107 | Symboltaggning är nyttigt för att markera symboler som är speciella på något | |
108 | sätt. Alla symboler kan ha ett godtyckligt antal taggar associerade med | |
109 | sig. Medan alla taggar tolkas och lagras är det bara ett par av dem som | |
110 | förstås av \fBdpkg\-gensymbols\fP och som utlöser specialhantering av | |
111 | symbolerna. Se undersymbolen \fBStandardsymboltaggar\fP för mer information om | |
112 | dessa taggar. | |
113 | .P | |
114 | Taggarna anges precis före symbolnamnet (inga blanksteg tillåts mellan). Den | |
115 | börjar alltid med en vänsterparentes \fB(\fP, slutar med en högerparentes \fB)\fP, | |
116 | och måste innehålla minst en tagg. Ytterligare taggar avdelas med tecknet | |
117 | \fB|\fP. En tagg kan ha ett värde, vilket separeras från taggnamnet med tecknet | |
118 | \fB=\fP. Taggnamn och värden kan vara godtyckliga strängar, förutom att de inte | |
119 | kan innehålla de speciella tecknen \fB)\fP \fB|\fP \fB=\fP. Symbolnamn som följer en | |
120 | taggangivelse kan, om så önskas, citeras med antingen \fB'\fP eller \fB"\fP för | |
121 | att tillåta blanksteg. Om inga taggar anges för symbolen tolkas dock | |
122 | citattecken som en del av symbolnamnet, vilket fortsätter till det första | |
123 | blanksteget. | |
124 | .P | |
125 | (tag1=jag är markerad|taggnamn med blanksteg)"taggad citerad symbol"@Bas 1.0 | |
126 | (optional)taggad_ociterad_symbol@Bas 1.0 1 | |
127 | ociterad_symbol@Bas 1.0 | |
128 | .P | |
129 | Den första symbolen i exemplet är heter \fItaggad citerad symbol\fP och har två | |
130 | taggar: \fItag1\fP med värdet \fIjag är markerad\fP och \fItaggnamn med blanksteg\fP | |
131 | som inte har något värde. Den andra symbolen heter \fItaggad_ociterad_symbol\fP | |
132 | och är bara taggad med taggen som heter \fIoptional\fP. Den sista symbolen är | |
133 | ett exempel på en normal, otaggad symbol. | |
134 | .P | |
135 | Eftersom symboltaggar er en utökning av formatet i \fIdeb\-symbols(5)\fP kan de | |
136 | bara användas i symbolfiler i källkodspaket (dessa filer är att anse som | |
137 | mallar som används för att bygga symbolfilerna som finns i | |
138 | binärpaketen). När \fBdpkg\-gensymbols\fP anropas utan flaggan \fB\-t\fP kommer det | |
139 | att mata ut symbolfiler kompatibla med \fBdeb\-symbols\fP(5)\-formatet: det | |
140 | hanterar symboler helt beroende på vad som beskrivs av standardtaggarna och | |
141 | tar bort alla taggar från utdata. I mall\-läge (\fB\-t\fP) kommer däremot alla | |
142 | symboler och deras taggar (både standard och okända) att behållas i utdata | |
143 | och skrivas i sin originalform så som de lästes in. | |
144 | .SS Standardsymboltaggar | |
145 | .TP | |
146 | \fBoptional\fP | |
147 | A symbol marked as optional can disappear from the library at any time and | |
148 | that will never cause \fBdpkg\-gensymbols\fP to fail. However, disappeared | |
149 | optional symbols will continuously appear as MISSING in the diff in each new | |
150 | package revision. This behaviour serves as a reminder for the maintainer | |
151 | that such a symbol needs to be removed from the symbol file or readded to | |
152 | the library. When the optional symbol, which was previously declared as | |
153 | MISSING, suddenly reappears in the next revision, it will be upgraded back | |
154 | to the “existing” status with its minimum version unchanged. | |
155 | ||
156 | Taggen är användbar för symboler som är privata och vars försvinnande inte | |
157 | gör att ABI:et går sönder. De flesta C++\-mallinstansieringar faller till | |
158 | exempel in under denna kategori. Som andra taggar kan den här även ha ett | |
159 | godtyckligt värde: det kan användas för att indikera varför symbolen är att | |
160 | anse som valfri. | |
161 | .TP | |
162 | \fBarch=\fP\fIarchitecture\-list\fP | |
163 | .TQ | |
164 | \fBarch\-bits=\fP\fIarchitecture\-bits\fP | |
165 | .TQ | |
166 | \fBarch\-endian=\fP\fIarchitecture\-endianness\fP | |
167 | These tags allow one to restrict the set of architectures where the symbol | |
168 | is supposed to exist. The \fBarch\-bits\fP and \fBarch\-endian\fP tags are supported | |
169 | since dpkg 1.18.0. When the symbols list is updated with the symbols | |
170 | discovered in the library, all arch\-specific symbols which do not concern | |
171 | the current host architecture are treated as if they did not exist. If an | |
172 | arch\-specific symbol matching the current host architecture does not exist | |
173 | in the library, normal procedures for missing symbols apply and it may cause | |
174 | \fBdpkg\-gensymbols\fP to fail. On the other hand, if the arch\-specific symbol | |
175 | is found when it was not supposed to exist (because the current host | |
176 | architecture is not listed in the tag or does not match the endianness and | |
177 | bits), it is made arch neutral (i.e. the arch, arch\-bits and arch\-endian | |
178 | tags are dropped and the symbol will appear in the diff due to this change), | |
179 | but it is not considered as new. | |
180 | ||
181 | I det vanliga icke\-mall\-läget skrivs endast de arkitekturspecifika symboler | |
182 | som motsvarar den aktuella värdarkitekturen till symbolfilen. Å andra sidan | |
183 | skrivs alla arkitekturspecifika symboler (inklusive de från andra | |
184 | arkitekturer) till symbolfilen i mall\-läget. | |
185 | ||
186 | The format of \fIarchitecture\-list\fP is the same as the one used in the | |
187 | \fBBuild\-Depends\fP field of \fIdebian/control\fP (except the enclosing square | |
188 | brackets []). For example, the first symbol from the list below will be | |
189 | considered only on alpha, any\-amd64 and ia64 architectures, the second only | |
190 | on linux architectures, while the third one anywhere except on armel. | |
191 | ||
192 | (arch=alpha any\-amd64 ia64)64bit_specific_symbol@Base 1.0 | |
193 | (arch=linux\-any)linux_specific_symbol@Base 1.0 | |
194 | (arch=!armel)symbol_armel_does_not_have@Base 1.0 | |
195 | ||
196 | The \fIarchitecture\-bits\fP is either \fB32\fP or \fB64\fP. | |
197 | ||
198 | (arch\-bits=32)32bit_specific_symbol@Base 1.0 | |
199 | (arch\-bits=64)64bit_specific_symbol@Base 1.0 | |
200 | ||
201 | The \fIarchitecture\-endianness\fP is either \fBlittle\fP or \fBbig\fP. | |
202 | ||
203 | (arch\-endian=little)little_endian_specific_symbol@Base 1.0 | |
204 | (arch\-endian=big)big_endian_specific_symbol@Base 1.0 | |
205 | ||
206 | Multiple restrictions can be chained. | |
207 | ||
208 | (arch\-bits=32|arch\-endian=little)32bit_le_symbol@Base 1.0 | |
209 | .TP | |
210 | \fBignore\-blacklist\fP | |
211 | dpkg\-gensymbols har en intern svartlista över symboler som inte skall | |
212 | förekomma i symbolfiler eftersom de oftast bara är sidoeffekter från | |
213 | implementationsdetaljer i verktygskedjan. Om du, av någon orsak, verkligen | |
214 | vill att en av dessa symboler skall tas med i symbolfilen måste du tagga | |
215 | symbolen med \fBignore\-blacklist\fP. Det kan vara nödvändigt för | |
216 | lågnivå\-verktygskedjebibliotek som libgcc. | |
217 | .TP | |
218 | \fBc++\fP | |
219 | Betecknar \fIc++\fP\-symbolmönster. Se stycket \fBAnvända symbolmönster\fP nedan. | |
220 | .TP | |
221 | \fBsymver\fP | |
222 | Anger \fIsymver\fP (symbolversion)\-symbolmönstret. Se stycket \fBAnvända | |
223 | symbolmönster\fP nedan. | |
224 | .TP | |
225 | \fBregex\fP | |
226 | Anger \fIregex\fP\-symbolmönstret. Se stycket \fIAnvända symbolmönster\fP nedan. | |
227 | .SS "Använda symbolmönster" | |
228 | .P | |
229 | Till skillnad från vanliga symbolspecifikationer kan ett mönster täcka flera | |
230 | faktiska symboler från biblioteket. \fBdpkg\-gensymbols\fP kommer försöka matcha | |
231 | varje mönster mot varje faktisk symbol som \fIinte\fP har en motsvarande | |
232 | specifik symbol definierad i symbolfilen. Så fort det första mönster som | |
233 | motsvarar symbolen hittas kommer alla dess taggar och egenskaper att | |
234 | användas som en basspecifikation för symbolen. Om inget mönster motsvarar | |
235 | symbolen kommer den att tolkas som ny. | |
236 | ||
237 | Ett mönster anses som tappat om det inte motsvarar några symboler i | |
238 | biblioteket. Som standard kommer detta få \fBdpkg\-genchanges\fP att misslyckas | |
239 | om \fB\-c1\fP eller högre anges. Om ett sådant misslyckande inte är önskvärt kan | |
240 | mönstret dock märkas med taggen \fIoptional\fP. Om mönstret då inte motsvarar | |
241 | någonting kommer det bara dyka upp i differensen som saknas | |
242 | (MISSING). Mönstret kan dessutom, precis som andra symboler, begränsas till | |
243 | specifika arkitekturer med hjälp av \fIarch\fP\-taggen. Se stycket | |
244 | \fBStandardsymboltaggar\fP ovan för mer information. | |
245 | ||
246 | Mönster är en utökning av \fBdeb\-symbols(5)\fP\-formatet och är därför endast | |
247 | tillåtna i symbolfilmallar. Syntax för angivelse av mönster skiljer sig inte | |
248 | från den för en specifik symbol. Symbolnamnsdelen av specifikationen | |
249 | fungerar dock som ett uttryck som skall jämföras mot \fInamn@version\fP för den | |
250 | faktiska symbolen. För att skilja mellan olika sorters mönster, taggas | |
251 | mönster normalt med en speciell tagg. | |
252 | ||
253 | För närvarande stöder \fBdpkg\-gensymbols\fP tre grundläggande mönstertyper: | |
254 | .TP 3 | |
255 | \fBc++\fP | |
256 | Detta mönster anges med taggen \fIc++\fP. Den matchar enbart C++\-symboler med | |
257 | deras avmanglade symbolnamn (som det skrivs ut av | |
258 | \fBc++filt\fP(1)\-verktyget). Det här mönstret är väldigt nyttigt för att matcha | |
259 | symboler vars manglade namn kan skilja sig mellan olika arkitekturer, medan | |
260 | deras avmanglade namn är desamma. En grupp dylika symboler är | |
261 | \fIicke\-virtuella "thunks"\fP som har arkitekturspecifika offsetvärden inbyggda | |
262 | i sina manglade namn. En vanlig instans av detta fall är en virtuell | |
263 | destruktör som under diamantarv behöver en icke\-virtuell | |
264 | "thunk"\-symbol. Även om till exempel ZThn8_N3NSB6ClassDD1Ev@Base på | |
265 | 32\-bitarsarkitekturer troligtvis är _ZThn16_N3NSB6ClassDD1Ev@Base | |
266 | på64\-bitarsarkitekturer, så kan de matchas med ett enda \fIc++\fP\-mönster: | |
267 | ||
268 | libdummy.so.1 libdummy1 #MINVER# | |
269 | [...] | |
270 | (c++)"non\-virtual thunk to NSB::ClassD::~ClassD()@Base" 1.0 | |
271 | [...] | |
272 | ||
273 | Det avmanglade namnet ovan kan hämtas genom att utföra följande kommando: | |
274 | ||
275 | $ echo '_ZThn8_N3NSB6ClassDD1Ev@Base' | c++filt | |
276 | ||
277 | Observera att även om det manglade namnet per definition är unikt i | |
278 | biblioteket gäller inte detta för avmanglade namn. Flera distinkta verkliga | |
279 | symboler kan ha samma avmanglade namn. Det gäller till exempel för | |
280 | icke\-virtuella "thunk"\-symboler i konfigurationer med komplexa arv eller för | |
281 | de flesta konstruktörer och destruktörer (eftersom g++ normalt genererar två | |
282 | symboler för dem). Eftersom dessa kollisioner sker på ABI\-nivån bör de dock | |
283 | inte sänka kvaliteten på symbolfilen. | |
284 | .TP | |
285 | \fBsymver\fP | |
286 | Detta mönster anges med taggen \fIsymver\fP. Välunderhållna bibliotek har | |
287 | versionshanterade symboler där varje version motsvarar uppströmsversionen | |
288 | där symbolen lades till. Om det är fallet kan du använda ett | |
289 | \fIsymver\fP\-möster för att matcha alla symboler som matchar den specifika | |
290 | versionen. Till exempel: | |
291 | ||
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 | ||
298 | Alla symboler associerade med versionerna GLIBC_2.0 och GLIBC_2.7 kommer | |
299 | leda till den minimal version 2.0 respektive 2.7, med undantag av symbolen | |
300 | access@GLIBC_2.0. Den sistnämnda kommer leda till ett minsta beroende på | |
301 | libc6 version 2.2 trots att den motsvarar mönstret | |
302 | "(symver)GLIBC_2.0"\-mönstret, eftersom specifika symboler gäller före | |
303 | mönster. | |
304 | ||
305 | Observera att även om den gamla sortens jokerteckenmönster (anges med | |
306 | "*@version" i symbolnamnfältet) fortfarande stöds så rekommenderas de inte | |
307 | längre i och med den nya sortens syntax "(symver|optional)version". Till | |
308 | exempel bör "*@GLIBC_2.0 2.0" skrivas som "(symver|optional)GLIBC_2.0 2.0" | |
309 | om samma beteende behövs. | |
310 | .TP | |
311 | \fBregex\fP | |
312 | Mönster med reguljära uttryck anges med taggen \fIregex\fP. De matchar med det | |
313 | reguljära uttrycket på perl\-form som anges i symbolnamnsfältet. Ett | |
314 | reguljärt uttryck matchar som det står, glöm därför inte att inleda det med | |
315 | tecknet \fI^\fP, annars kommer det matcha godtycklig del av den verkliga | |
316 | symbolens \fInamn@version\fP\-sträng. Till exempel: | |
317 | ||
318 | libdummy.so.1 libdummy1 #MINVER# | |
319 | (regex)"^mystack_.*@Base$" 1.0 | |
320 | (regex|optional)"private" 1.0 | |
321 | ||
322 | Symboler som "mystack_new@Base", "mystack_push@Base", "mystack_pop@Base" | |
323 | osv. kommer att träffas av det första mönstret medan t.ex | |
324 | "ng_mystack_new@Base" inte gör det. Det andra mönstret motsvarar alla | |
325 | symbolen som innehåller strängen "private" i sina namn och träffar kommer | |
326 | att ärva \fIoptional\fP\-taggen från mönstret. | |
327 | .P | |
328 | Grundläggande mönster som anges ovan kan kombineras där det är vettigt. I så | |
329 | fall behandlas de i den ordning taggarna anges. Till exempel kommer både | |
330 | ||
331 | (c++|regex)"^NSA::ClassA::Private::privmethod\ed\e(int\e)@Base" 1.0 | |
332 | (regex|c++)N3NSA6ClassA7Private11privmethod\edEi@Base 1.0 | |
333 | ||
334 | att träffa symbolerna "_ZN3NSA6ClassA7Private11privmethod1Ei@Base" och | |
335 | "_ZN3NSA6ClassA7Private11privmethod2Ei@Base". När det första mönstret | |
336 | jämförs avmanglas först symbolen som en C++\-symbol, varefter det avmanglade | |
337 | namnet jämförs med det reguljära uttrycket. När det andra mönstret jämförs, | |
338 | å andra sidan, jämförs det reguljära uttrycket mot det råa symbolnamnet, | |
339 | varefter symbolen testas för att se om det är av C++\-typ genom att försöka | |
340 | avmangla det. Om ett grundläggande mönster misslyckas kommer hela uttrycket | |
341 | att misslyckas. Därför kommer, till exempel | |
342 | "__N3NSA6ClassA7Private11privmethod\edEi@Base" inte att träffas av något av | |
343 | mönstrena eftersom det inte är en giltig C++\-symbol. | |
344 | ||
345 | I allmänhet delas alla mönster in i två grupper. alias (grundläggande \fIc++\fP | |
346 | och \fIsymver\fP) och generella mönster (\fIregex\fP, samtliga kombinationer av | |
347 | multipla grundläggande mönster). Det går snabbt att träffa grundläggande | |
348 | aliasbaserade mönster (O(1)) medan generella mönster är O(N) (N \- antal | |
349 | generella mönster) för varje symbol. Det rekommenderas därför inte att | |
350 | använda för många generella mönster. | |
351 | ||
352 | När flera mönster träffar samma verkliga symbol föredras alias (först | |
353 | \fIc++\fP, sedan \fIsymver\fP) framför generella mönster. Generella mönster | |
354 | träffas i den ordning de upptäcktes i symbolfilmallen fram till den första | |
355 | lyckade träffen. Observera dock att manuell omsortering av poster i | |
356 | mallfilen inte rekommenderas då \fBdpkg\-gensymbols\fP genererar differensfiler | |
357 | baserad på den alfanumeriska sorteringsordningen av dess namn. | |
358 | .SS "Använda inkluderingar" | |
359 | .P | |
360 | När uppsättningen av exporterade symboler skiljer sig mellan arkitekturer | |
361 | kan det vara ineffektivt att använda en enda symbolfil. I dessa fall kan ett | |
362 | inkluderingsdirektiv vara nyttigt på flera sätt: | |
363 | .IP • 4 | |
364 | Du kan faktorisera de gemensamma delarna i en extern fil och inkludera den | |
365 | filen i din \fIpaket\fP.symbols.\fIarkitektur\fP\-fil genom att använda ett | |
366 | inkluderingsdirektiv som detta: | |
367 | ||
368 | #include "\fIpaket\fP.symbols.common" | |
369 | .IP • | |
370 | Inkluderingsdirektivet kan även taggas som alla andra symboler: | |
371 | ||
372 | (tag|...|tagN)#include "fil\-att\-inkludera" | |
373 | ||
374 | Alla symboler som inkluderas från \fIfil\-att\-inkludera\fP kommer att anses som | |
375 | standard vara taggade med \fItag\fP ... \fItagN\fP. Du kan använda denna funktion | |
376 | för att skapa en gemensam \fIpaket\fP.symbols\-fil som inkluderar | |
377 | arkitekturspecifika filer: | |
378 | ||
379 | gemensam_symbol1@Base 1.0 | |
380 | (arch=amd64 ia64 alpha)#include "paket.symbols.64bit" | |
381 | (arch=!amd64 !ia64 !alpha)#include "paket.symbols.32bit" | |
382 | gemensam_symbol2@Base 1.0 | |
383 | .P | |
384 | Symbolfilerna läses radvis, och inkluderingsdirektiv utförs så fort de | |
385 | upptäcks. Det betyder att innehållet i den inkluderade filen kan överstyra | |
386 | allt innehåll som förekom före inkluderingsdirektivet och att innehåll efter | |
387 | direktivet kan överstyra allt från den inkluderade filen. Alla symboler | |
388 | (även andra #include\-direktiv) i den inkluderade filen kan ange ytterligare | |
389 | taggar eller överstyra värden för de ärvda taggarna i sin | |
390 | taggspecifikation. Det finns dock inte något sätt för en symbol att ta bort | |
391 | någon av sina ärvda taggar. | |
392 | .P | |
393 | En inkluderad fil kan repetera huvudraden som innehåller SONAMNet för | |
394 | biblioteket. I så fall överstyr den en eventuell huvudrad som lästs in | |
395 | tidigare. Det är vanligtvis dock bäst att undvika att duplicera | |
396 | huvudrader. Ett sätt att göra det är som följer: | |
397 | .PP | |
398 | #include "libnågonting1.symbols.common" | |
399 | arkitekturspecifik_symbol@Base 1.0 | |
400 | .SS "God hantering av bibliotek" | |
401 | .P | |
402 | Ett välunderhållet bibliotek har följande funktioner: | |
403 | .IP • 4 | |
404 | dess API är stabilt (publika symboler tas aldrig bort, endast nya publika | |
405 | symboler läggs till) och inkompatibla ändringar görs endast när SONAMNet | |
406 | ändras; | |
407 | .IP • 4 | |
408 | ideellt använder det en versionhanterade symboler för att upprätthålla | |
409 | ABI\-stabilitet trots interna ändringar och API\-utökningar; | |
410 | .IP • 4 | |
411 | det exporterar inte privata symboler (sådana symboler kan taggas med | |
412 | "optional" för att gå runt detta). | |
413 | .P | |
414 | När man underhåller symbolfilen är det lätt att upptäcka symboler som dyker | |
415 | upp och försvinner. Det är svårare att upptäcka inkompatibla API\- och | |
416 | ABI\-ändringar. Den paketansvarige bör därför noggrant läsa igenom | |
417 | uppströmsändringsloggen för fall då reglerna för god hantering av bibliotek | |
418 | bryts. Om ett möjligt fel upptäcks bör uppströmsförfattaren meddelas, då det | |
419 | alltid är bättre att problemet rättas uppströms än specifikt i Debian. | |
420 | .SH FLAGGOR | |
421 | .TP | |
422 | \fB\-P\fP\fIpaketbyggkatalog\fP | |
423 | Sök \fIpaketbyggkatalog\fP istället för debian/tmp. | |
424 | .TP | |
425 | \fB\-p\fP\fIpaket\fP | |
426 | Definiera paketnamnet. Krävs om mer än ett binärpaket listas i | |
427 | debian/control (eller om det inte finns någon debian/control\-fil). | |
428 | .TP | |
429 | \fB\-v\fP\fIversion\fP | |
430 | Definiera paketversion. Standardvärdet är versionen som hämtas från | |
431 | debian/changelog. Krävs om programmet anropas utanför ett källkodspaketträd. | |
432 | .TP | |
433 | \fB\-e\fP\fIbiblioteksfil\fP | |
434 | Analyserar endast bibliotek som listats explicit istället för att hitta alla | |
435 | publika bibliotek. Du kan använda ett jokertecken för filnamn (se | |
436 | manualsidan \fBFile::Glob\fP(3perl) för detaljer) i \fIbiblioteksfil\fP för att | |
437 | träffa multipla bibliotek med ett enda argument (annars behöver du flera | |
438 | \fB\-e\fP). | |
439 | .TP | |
440 | \fB\-I\fP\fIfilnamn\fP | |
441 | Använd \fIfilnamn\fP som referensfil för att generera symbolfilen som | |
442 | integreras i själva paketet. | |
443 | .TP | |
444 | \fB\-O\fP[\fIfilnamn\fP] | |
445 | Visa den genererade symbolfilen på standard ut eller spara som \fIfilnamn\fP om | |
446 | det anges, istället för \fBdebian/tmp/DEBIAN/symbols\fP (eller | |
447 | \fIpaketbyggkatalog\fP\fB/DEBIAN/symbols\fP om \fB\-P\fP användes). Om \fIfilnamn\fP | |
448 | redan existerar kommer dess innehåll att användas som bas för den genererade | |
449 | symbolfilen. Du kan använda den här funktionen för att uppdatera en | |
450 | symbolfil så att den motsvarar en nyare uppströmsversion av ditt bibliotek. | |
451 | .TP | |
452 | \fB\-t\fP | |
453 | Skriv symbolfilen i mall\-läge istället för i formatet kompatibelt med | |
454 | \fBdeb\-symbols\fP(5). Huvudskillnaden är att symbolnamn och taggar skrivs i sin | |
455 | originalform i mall\-läget, till skillnad från de efterbehandlade | |
456 | symbolnamnen med borttagna taggar som skrivs i det kompatibla | |
457 | läget. Dessutom kan vissa symboler uteslutas när en vanlig | |
458 | \fBdeb\-symbols\fP(5)\-fil skrivs (i enlighet med tagghanteringsreglerna) medan | |
459 | alla symboler alltid skrivs till symbolfilsmallen. | |
460 | .TP | |
461 | \fB\-c\fP\fI[0\-4]\fP | |
462 | Definiera vilka kontroller som skall utföras när den genererade symbolfilen | |
463 | jämförs med den mallfil som används som startpunkt. Som standard är nivån | |
464 | 1. Genom att öka nivån utförs flera kontroller, inklusive alla kontroller på | |
465 | lägre nivå. Nivå 2 misslyckas om nya symboler har introducerats. Nivå 3 | |
466 | misslyckas om några bibliotek har försvunnit. Nivå 4 misslyckas om några | |
467 | bibliotek har introducerats. | |
468 | ||
469 | Värdet kan överstyras med miljövariabeln \fBDPKG_GENSYMBOLS_CHECK_LEVEL\fP. | |
470 | .TP | |
471 | \fB\-q\fP | |
472 | Håll tyst och generera aldrig en differens mellan den genererade symbolfilen | |
473 | och mallfilen som användes som startpunkt eller visa varningar om | |
474 | nya/förlorade bibliotek eller nya/förlorade symboler. Den här flaggan tar | |
475 | endast bort informationsutdata, inte själva kontrolleran (se flaggan \fB\-c\fP). | |
476 | .TP | |
477 | \fB\-a\fP\fIarkitektur\fP | |
478 | Anta \fIarkitektur\fP som värdarkitektur vid hantering av symbolfiler. Använd | |
479 | den här flaggan för att generera en symbolfil eller differens för valfri | |
480 | arkitektur så länge dess binärer är tillgängliga. | |
481 | .TP | |
482 | \fB\-d\fP | |
483 | Aktiverar felsökningsläge. Flera meddelanden visas för att förklara vad | |
484 | \fBdpkg\-gensymbols\fP gör. | |
485 | .TP | |
486 | \fB\-V\fP | |
487 | Aktivera pratsamt läge. Den genererade symbolfilen innehåller ej längre | |
488 | rekommenderade symboler som kommentarer. I mall\-läge följs dessutom | |
489 | mönstersymboler av kommentarer som visar vilka verkliga symboler som har | |
490 | träffats av mönstret. | |
491 | .TP | |
492 | \fB\-?\fP, \fB\-\-help\fP | |
493 | Visar hjälpskärm och avslutar. | |
494 | .TP | |
495 | \fB\-\-version\fP | |
496 | Visar version och avslutar. | |
497 | . | |
498 | .SH MILJÖVARIABLER | |
499 | .TP | |
500 | \fBDPKG_GENSYMBOLS_CHECK_LEVEL\fP | |
501 | Overrides the command check level, even if the \fB\-c\fP command\-line argument | |
502 | was given (note that this goes against the common convention of command\-line | |
503 | arguments having precedence over environment variables). | |
504 | .SH "SE ÄVEN" | |
505 | \fBhttps://people.redhat.com/drepper/symbol\-versioning\fP | |
506 | .br | |
507 | \fBhttps://people.redhat.com/drepper/goodpractice.pdf\fP | |
508 | .br | |
509 | \fBhttps://people.redhat.com/drepper/dsohowto.pdf\fP | |
510 | .br | |
511 | \fBdeb\-symbols\fP(5), \fBdpkg\-shlibdeps\fP(1). | |
512 | .SH ÖVERSÄTTNING | |
513 | Peter Krefting och Daniel Nylander. |