summaryrefslogtreecommitdiffstats
path: root/man/pt/dpkg-shlibdeps.pod
blob: e5ea7b47a488c2de65e879faa244a2510fd4f576 (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
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
        *****************************************************
        *           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 NOME

dpkg-shlibdeps - gera dependências substvar de biblioteca partilhada

=head1 SINOPSE

B<dpkg-shlibdeps> [I<option>...] [B<-e>] I<executable> [I<option>...]

=head1 DESCRIÇÃO

B<dpkg-shlibdeps> calcula dependências de bibliotecas partilhadas para
executáveis nomeados nos seus argumentos. As dependências são adicionadas ao
ficheiro de variáveis de substituição B<debian/substvars> como nomes de
variáveis B<shlibs:>I<dependency-field> onde I<dependency-field> é um nome
de campo de dependência. Quaisquer outras variáveis começadas com B<shlibs:>
são removidas do ficheiro.

B<dpkg-shlibdeps> tem duas possíveis fontes de informação para gerar a
informação de dependências. Seja ficheiros I<symbols> ou ficheiros
I<shlibs>. Para cada binário que o B<dpkg-shlibdeps> analise, ele encontra a
lista de binários com que tem links. Depois, para cada biblioteca, procura
pelo ficheiro I<symbols>, ou pelo ficheiro I<shlibs> (se o anterior não
existir ou se debian/shlibs.local conter a dependência relevante). Ambos
ficheiros são supostos serem fornecidos pelo pacote biblioteca e devem assim
estarem disponíveis como as %ADMINDIR%/info/I<package>.I<symbols> ou
%ADMINDIR%/info/I<package>.I<shlibs>. O nome do pacote é identificado em
dois passos: encontrar o ficheiro biblioteca no sistema (procurando nos
mesmos directórios que B<ld.so> iria usar), depois usar B<dpkg -S>
I<library-file> para procurar o pacote que fornece a biblioteca.

=head2 Ficheiros de Símbolos

Ficheiros Symbols contêm informação de dependências afinada ao fornecerem a
dependência mínima para cada símbolo que a biblioteca exporta. O script
tenta encontrar um ficheiro de símbolos associado a um pacote biblioteca nos
seguintes locais (é usada a primeira correspondência):

=over 

=item debian/*/DEBIAN/symbols

Informação de biblioteca partilhada gerada pelo actual processo de
compilação que também invocou B<dpkg-shlibdeps>. São gerados por
B<dpkg-gensymbols>(1). São apenas usados se a biblioteca for encontrada na
árvore de compilação do pacote. O ficheiro de símbolos nessa árvore de
compilação toma precedência sobre ficheiros de símbolos de outros pacotes
binários.

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

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

Informação de sobreposição por-sistema de dependência de biblioteca
partilhada. I<arch> é a arquitectura do sistema actual (obtida por
B<dpkg-architecture -qDEB_HOST_ARCH>).

=item Resultado de “B<dpkg-query --control-path> I<package> symbols”

Informação de dependências de bibliotecas partilhadas fornecidas pelo
pacote. A menos que sobrepostas por B<--admindir>, esses ficheiros estão
localizados em %ADMINDIR%.

=back

Enquanto sonda os símbolos usados por todos os binários, o B<dpkg-shlibdeps>
lembra-se da versão mínima (mais alta) necessária para cada biblioteca. No
final do processo, é capaz de escrever a dependência mínima para cada
biblioteca usada (desde que a informação dos ficheiros I<symbols> esteja
exacta).

Como medida de salva-guarda, um ficheiro de símbolos pode fornecer um campo
de meta-informação B<Build-Depends-Package> e B<dpkg-shlibdeps> irá extrair
a versão mínima requerida pelo pacote correspondente no campo
B<Build-Depends> e usa esta versão se for maior que a versão mínima
computada pela sondagem dos símbolos.

=head2 Ficheiros shlibs

Ficheiros Shlibs associam directamente uma biblioteca a uma dependência (sem
olhar para os símbolos). É assim geralmente mais forte do que realmente
necessário mas muito seguro e fácil de manusear.

As dependências por uma biblioteca são procuradas em vários lugares. É usado
o primeiro ficheiro que providencia informação para a biblioteca que
interessa:

=over 

=item debian/shlibs.local

Informação de dependência de biblioteca partilhada que sobrepõe pacote local

=item %PKGCONFDIR%/shlibs.override

Informação de dependência de biblioteca partilhada de sobreposição por
sistema.

=item debian/*/DEBIAN/shlibs

Informação de biblioteca partilhada gerada pelo actual processo de
compilação que também invocou B<dpkg-shlibdeps>. São apenas usados se a
biblioteca for encontrada na árvore de compilação do pacote. O ficheiro
shlibs nessa árvore de compilação toma precedência sobre ficheiros shlibs de
outros pacotes binários.

=item Resultado de “B<dpkg-query --control-path> I<package> shlibs”

Informação de dependências de bibliotecas partilhadas fornecidas pelo
pacote. A menos que sobrepostas por B<--admindir>, esses ficheiros estão
localizados em %ADMINDIR%.

=item %PKGCONFDIR%/shlibs.default

Informação de dependência de biblioteca partilhada predefinida por sistema.

=back

as dependências extraídas são depois usadas directamente (excepto se forem
filtradas porque foram identificadas como duplicadas, ou como mas fracas que
outra dependência).

=head1 OPÇÕES

B<dpkg-shlibdeps> interpreta argumentos não-opção como nomes executáveis,
como se eles fosse fornecidos como B<-e>I<executable>.

=over 

=item B<-e>I<executable>

Inclui as dependências apropriadas para as bibliotecas partilhadas
requeridas pelo I<executável>. Esta opção pode ser usada várias vezes.

=item B<-l>I<directory>

Adiciona I<directory> ao inicio da lista de directórios a pesquisar por
bibliotecas partilhadas privadas (desde dpkg 1.17.0). Esta opção pode ser
usada várias vezes.

B<Nota:> Use esta opção em vez de definir B<LD_LIBRARY_PATH>, pois essa
variável de ambiente é usado para controlar o vinculador de
tempo-de-execução e abusar dela para definir caminhos de bibliotecas
partilhadas durante a compilação pode ser problemático quando, por exemplo,
se faz compilações cruzadas.

=item B<-d>I<dependency-field>

Todas as dependências a serem adicionadas ao campo de dependências do
ficheiro de controle I<dependency-field>. (As dependências para este campo
são colocadas na variável B<shlibs:>I<dependency-field>.)

A opção B<-d>I<dependency-field> produz efeito para todos os executáveis
após a opção, até ao próximo B<-d>I<dependency-field>. A predefinição de
I<dependency-field> é B<Depends>.

Se a mesma entrada de dependência (ou conjunto de alternativas) aparecer em
mais do que um dos nomes de campos de dependência reconhecida
B<Pre-Depends>, B<Depends>, B<Recommends>, B<Enhances> ou B<Suggests> então
B<dpkg-shlibdeps> irá remover automaticamente a dependência de todos os
campos excepto daquele que representa as dependências mais importantes.

=item B<-p>I<varname-prefix>

Começa as variáveis de substituição com I<varname-prefix>B<:> em vez de
B<shlibs:>. Do mesmo modo, quaisquer variáveis de substituição existentes
que comecem com I<varname-prefix>B<:> (em vez de B<shlibs:>) são removidas
do ficheiros de variáveis de substituição.

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

Escreve as definições de variáveis de substituição na saída standard (ou
I<filename> se especificado, desde dpkg 1.17.2), em vez de serem adicionadas
ao ficheiro de variáveis de substituição (B<debian/substvars> por
predefinição).

=item B<-t>I<type>

Informação etiquetada de dependência de biblioteca partilhada preferida para
o tipo de pacote dado. Se não existir informação etiquetada, cai para a
informação não etiquetada. O tipo de pacote predefinido é B<deb>. A
informação de dependência de biblioteca partilhada é etiquetada para um
determinado tipo ao prefixá-la com o nome to tipo, dois pontos, e espaço em
branco.

=item B<-L>I<local-shlibs-file>

Lê informação de sobreposição de dependência de biblioteca partilhada a
partir de I<local-shlibs-file> em vez de B<debian/shlibs.local>.

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

Escreve variáveis de substituição em I<substvars-file>; a predefinição é
B<debian/substvars>.

=item B<-v>

Activa o modo detalhado (desde dpkg 1.14.8). São mostradas numerosas
mensagens para explicar o que o B<dpkg-shlibdeps> faz.

=item B<-x>I<package>

Exclui o pacote das dependências geradas (desde dpkg 1.14.8). Isto é útil
para evitar auto-dependências para pacotes que fornecem binários ELF
(executáveis ou plugins biblioteca) usando uma biblioteca contida no mesmo
pacote. Esta opção pode ser usada várias vezes para excluir vários pacotes.

=item B<-S>I<package-build-dir>

Procura primeiro em I<package-build-dir> quando tenta encontrar uma
biblioteca (desde dpkg 1.14.15). Isto é útil quando o pacote fonte compila
vários sabores da mesma biblioteca e você quer assegurar que obtém a
dependência a partir de um determinado pacote binário. Você pode usar esta
opção várias vezes: directórios serão tentados na mesma ordem antes de
directórios de outros pacotes binários.

=item B<-I>I<package-build-dir>

Ignora I<package-build-dir> quando procurar por shlibs, symbols, e ficheiros
de biblioteca partilhada (desde dpkg 1.18.5). Você pode usar esta opção
várias vezes.

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

Não falha se a informação de dependência não pode ser encontrada para uma
biblioteca partilhada (desde dpkg 1.14.8). A utilização desta opção é
desencorajada, todas as bibliotecas devem fornecer informação de
dependências (seja com ficheiros shlibs, ou com ficheiros symbols) mesmo se
ainda não forem usadas por outros pacotes.

=item B<--warnings=>I<value>

I<value> é um campo de bit que define o conjunto de avisos que podem ser
emitidos pelo B<dpkg-shlibdeps> (desde dpkg 1.14.17).  Bit 0 (valor=1)
activa o aviso “symbol I<sym> usado por I<binary> encontrado em nenhuma das
bibliotecas, bit 1 (valor=2) activa o aviso “pacote podia evitar uma
dependência inútil” e bit 2 (valor=4) activa o aviso “I<binary> não deveria
estar em link contra I<library>”. O I<value> predefinido é 3: os dois
primeiros avisos estão activos por predefinição, o último não está. Defina
I<value> para 7 se deseja ter todos os avisos activos.

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

Altera a localização da base de dados do B<dpkg> (desde dpkg 1.14.0). A
localização predefinida é I<%ADMINDIR%>.

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

Mostra a mensagem de utilização e termina.

=item B<--version>

Mostra a versão e termina.

=back

=head1 AMBIENTE

=over 

=item B<DPKG_COLORS>

Define o modo de cor (desde dpkg 1.18.5). Os valores actualmente aceites
são: B<auto> (predefinido), B<always> e B<never>.

=item B<DPKG_NLS>

Se definida, será usada para decidir se deve activar o Suporte a Linguagem
Nativa. Também como conhecido como suporte de internacionalização (ou i18n)
(desde dpkg 1.19.0). Os valores aceites são B<0> e B<1> (predefinição).

=back

=head1 DIAGNÓSTICO

=head2 Avisos

Como o B<dpkg-shlibdeps> analisa o conjunto de símbolos usados por cada
binário do pacote gerado, é capaz de emitir avisos em vários casos. Eles
informam-o de coisas que podem ser melhoradas no pacote. Na maioria dos
casos, esses melhoramentos interessam directamente às fontes do autor. Por
ordem de importância descendente, aqui estão os vários avisos que você pode
encontrar:

=over 

=item B<symbol> I<sym> B<used by> I<binary> B<found in none of the libraries.>

O símbolo indicado não foi encontrado nas bibliotecas em link com o
binário. O I<binary> é mais certamente uma biblioteca e precisa de ser
ligada em link com uma biblioteca adicional durante o processo de compilação
(opção B<-l>I<library> do vinculador).

=item I<binary> B<contains an unresolvable reference to symbol> I<sym>B<: it's
probably a plugin>

O símbolo indicado não foi encontrado nas bibliotecas em link com o
binário. O I<binary> é mais certamente um plugin e o símbolo é provavelmente
fornecido pelo programa que carrega este plugin. Em teoria um plugin não tem
nenhum SONAME mas este binário tem um e como tal ele não pôde ser claramente
identificado como tal. No entanto, o facto de que o binários está armazenado
num directório não-público é uma forte indicação que não é uma biblioteca
partilhada normal. Se o binário é mesmo um plugin, então esqueça este
aviso. Mas há sempre a possibilidade que seja uma biblioteca real e que
esses programas em link com ela estejam a usar uma RPATH para que o
carregador dinâmico as encontre. Nesse caso, a biblioteca está quebrada e
precisa de ser reparada.

=item B<package could avoid a useless dependency if> I<binary> B<was not linked
against> I<library> B<(it uses none of the library's symbols)>

Nenhum dos I<binaries> que estão em link com I<library> usam qualquer dos
símbolos fornecidos pela biblioteca. Ao corrigir todos os binários, você
deveria evitar a dependência associada a esta biblioteca (a menos que a
mesma dependência seja também gerada por outra biblioteca que seja realmente
usada).

=item B<package could avoid a useless dependency if> I<binaries> B<were not linked
against> I<library> B<(they use none of the library's symbols)>

Exactamente o mesmo que o aviso em cima, mas para múltiplos binários.

=item I<binary> B<should not be linked against> I<library> B<(it uses none of the
library's symbols)>

O I<binary> está ligado em link com uma biblioteca que não precisa. Não é um
problema mas pode-se obter algum pequeno melhoramento de performance no
tempo de carga do binário se não se ligar esta biblioteca a este
binário. Este aviso verifica a mesma informação que o anterior mas fá-lo
para cada binário em vez de fazer as verificações globalmente para todos os
binários analisados.

=back

=head2 Erros

B<dpkg-shlibdeps> irá falhar se não conseguir encontrar uma biblioteca
pública usada por um binário ou se esta biblioteca não tiver informação de
dependência associada (seja um ficheiro shlibs ou symbols). Uma biblioteca
pública tem um SONAME e é versionado ((libsomething.so.I<X>). Uma biblioteca
privada (como um plugin) não deve ter um SONAME e não precisa de ser
versionada.

=over 

=item B<couldn't find library> I<library-soname> B<needed by> I<binary> B<(its
RPATH is '>I<rpath>B<')>

O I<binary> usa uma biblioteca chamada I<library-soname> mas o
B<dpkg-shlibdeps> não foi capaz de encontrar a biblioteca. B<dpkg-shlibdeps>
cria uma lista de directórios a verificar como se segue: directórios
listados na RPATH do binário, directórios adicionados pela opção B<-l>,
directórios listados na variável de ambiente B<LD_LIBRARY_PATH>, directórios
de multi-arquitectura cruzada (ex. /lib/arm64-linux-gnu,
/usr/lib/arm64-linux-gnu), directórios públicos standard (/lib, /usr/lib),
directórios listados em /etc/ld.so.conf, e directórios multilib obsoletos
(/lib32, /usr/lib32, /lib64, /usr/lib64). Depois verifica esses directórios
na árvore de compilação do pacote do binário a ser analisado, nas árvores de
compilação dos pacotes indicados com a opção de linha de comandos B<-S>, nas
árvores de compilação de outros pacotes que contêm um ficheiro DEBIAN/shlibs
ou DEBIAN/symbols e finalmente no directório raiz. Se a biblioteca não for
encontrada em nenhum destes directórios, então você vai obter este erro.

Se a biblioteca não encontrada está num directório privado do mesmo pacote,
então você tem de adicionar o directório com B<-l>. Se está noutro pacote
binário a ser compilado, então você tem de certificar-se que o ficheiro
shlibs/symbols deste pacote já está criado e que o B<-l> contém o directório
apropriado se estiver também num directório privado.

=item B<no dependency information found for> I<library-file> B<(used by>
I<binary>B<).>

A biblioteca necessária pelo I<binary> foi encontrada pelo B<dpkg-shlibdeps>
em I<library-file> mas B<dpkg-shlibdeps> não foi capaz de encontrar nenhuma
informação de dependência para essa biblioteca.  Para encontrar a
dependência, tentou mapear a biblioteca a um pacote Debian com a ajuda de
B<dpkg -S> I<library-file>. Depois verificou os ficheiros shlibs e symbols
correspondentes em %ADMINDIR%/info/, e nas várias árvores de compilação de
pacotes (debian/*/DEBIAN/).

Esta falha pode ser causada por um ficheiro shlibs ou symbols mau ou em
falta no pacote da biblioteca. Também pode acontecer se a biblioteca for
compilada dentro do mesmo pacote fonte e se os ficheiros shlibs ainda não
foram criados (que neste caso você tem de corrigir debian/rules para criar o
shlibs antes de chamar B<dpkg-shlibdeps>). Uma má RPATH também pode levar a
que a biblioteca seja encontrada sob um nome não-canónico (exemplo:
/usr/lib/openoffice.org/../lib/libssl.so.0.9.8 em vez de
/usr/lib/libssl.so.0.9.8) que não está associado a nenhum pacote, o
B<dpkg-shlibdeps> tenta contornar isto ao tentar descer para um nome
canónico (usando B<realpath>(3)) mas pode nem sempre funcionar. É sempre
melhor limpar a RPATH do binário para evitar problemas.

Chamar o B<dpkg-shlibdeps> em modo detalhado (B<-v>) irá providenciar muito
mais informação acerca de onde ele tentou encontrar a informação de
dependência. Isto pode ser útil se você não perceber porquê está a dar-lhe
este erro.

=back

=head1 VEJA TAMBÉM

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


=head1 TRADUÇÃO

Américo Monteiro

Se encontrar algum erro na tradução deste documento, por favor comunique para
Américo Monteiro <a_monteiro@gmx.com>.