Provided by: dpkg-dev_1.22.6ubuntu6.1_all bug

NOME

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

RESUMO

       dpkg-shlibdeps [option...] [-e] executable [option...]

DESCRIÇÃO

       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 debian/substvars
       como nomes de variáveis shlibs:dependency-field onde dependency-field é um nome de campo de dependência.
       Quaisquer outras variáveis começadas com shlibs: são removidas do ficheiro.

       dpkg-shlibdeps tem duas possíveis fontes de informação para gerar a informação de dependências. Seja
       ficheiros symbols ou ficheiros shlibs. Para cada binário que o dpkg-shlibdeps analise, ele encontra a
       lista de binários com que tem links. Depois, para cada biblioteca, procura pelo ficheiro symbols, ou pelo
       ficheiro 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 /var/lib/dpkg/info/package.symbols ou /var/lib/dpkg/info/package.shlibs. O nome do pacote é
       identificado em dois passos: encontrar o ficheiro biblioteca no sistema (procurando nos mesmos
       directórios que ld.so iria usar), depois usar dpkg -S library-file para procurar o pacote que fornece a
       biblioteca.

   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):

       debian/*/DEBIAN/symbols
           Informação  de  biblioteca  partilhada  gerada  pelo actual processo de compilação que também invocou
           dpkg-shlibdeps. São gerados por 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.

       /etc/dpkg/symbols/package.symbols.arch
       /etc/dpkg/symbols/package.symbols
           Informação de sobreposição por-sistema de dependência de biblioteca partilhada. arch é a arquitectura
           do sistema actual (obtida por dpkg-architecture -qDEB_HOST_ARCH).

       Resultado de “dpkg-query --control-path package symbols”
           Informação de dependências de bibliotecas partilhadas fornecidas pelo pacote. A menos que sobrepostas
           por --admindir, esses ficheiros estão localizados em /var/lib/dpkg.

       Enquanto  sonda  os  símbolos  usados  por todos os binários, o 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 symbols esteja exacta).

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

   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:

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

       /etc/dpkg/shlibs.override
           Informação de dependência de biblioteca partilhada de sobreposição por sistema.

       debian/*/DEBIAN/shlibs
           Informação  de  biblioteca  partilhada  gerada  pelo actual processo de compilação que também invocou
           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.

       Resultado de “dpkg-query --control-path package shlibs”
           Informação de dependências de bibliotecas partilhadas fornecidas pelo pacote. A menos que sobrepostas
           por --admindir, esses ficheiros estão localizados em /var/lib/dpkg.

       /etc/dpkg/shlibs.default
           Informação de dependência de biblioteca partilhada predefinida por sistema.

       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).

OPÇÕES

       dpkg-shlibdeps interpreta argumentos não-opção como nomes executáveis, como se eles fosse fornecidos como
       -eexecutable.

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

       -ldirectory
           Adiciona 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.

           Nota:  Use  esta opção em vez de definir 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.

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

           A opção -ddependency-field produz efeito para todos os executáveis  após  a  opção,  até  ao  próximo
           -ddependency-field. A predefinição de dependency-field é 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 Pre-Depends, Depends, Recommends,  Enhances  ou  Suggests  então
           dpkg-shlibdeps  irá  remover  automaticamente  a  dependência  de todos os campos excepto daquele que
           representa as dependências mais importantes.

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

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

       -ttype
           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 é deb. A informação  de  dependência  de  biblioteca  partilhada  é  etiquetada  para  um
           determinado tipo ao prefixa-la com o nome to tipo, dois pontos, e espaço em branco.

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

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

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

       -xpackage
           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.

       -Spackage-build-dir
           Procura primeiro em 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.

       -Ipackage-build-dir
           Ignora  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.

       --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.

       --warnings=value
           value  é  um  campo de bit que define o conjunto de avisos que podem ser emitidos pelo dpkg-shlibdeps
           (desde dpkg 1.14.17).  Bit 0 (valor=1) activa o aviso “symbol sym  usado  por  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  “binary  não  deveria  estar  em  link  contra  library”.  O  value
           predefinido  é  3: os dois primeiros avisos estão activos por predefinição, o último não está. Defina
           value para 7 se deseja ter todos os avisos activos.

       --admindir=dir
           Altera a localização da base de dados do dpkg  (desde  dpkg  1.14.0).  A  localização  predefinida  é
           /var/lib/dpkg.

       -?, --help
           Mostra a mensagem de utilização e termina.

       --version
           Mostra a versão e termina.

AMBIENTE

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

       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 0
           e 1 (predefinição).

DIAGNÓSTICO

   Avisos
       Como o 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:

       symbol sym used by binary found in none of the libraries.
           O  símbolo  indicado  não  foi  encontrado  nas  bibliotecas  em  link com o binário. O binary é mais
           certamente uma biblioteca e precisa de ser ligada em link com  uma  biblioteca  adicional  durante  o
           processo de compilação (opção -llibrary do vinculador).

       binary contains an unresolvable reference to symbol sym: it's probably a plugin
           O  símbolo  indicado  não  foi  encontrado  nas  bibliotecas  em  link com o binário. O 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.

       package could avoid a useless dependency if binary was not linked against library (it uses none of the
       library's symbols)
           Nenhum dos binaries que estão em  link  com  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).

       package could avoid a useless dependency if binaries were not linked against library (they use none of
       the library's symbols)
           Exactamente o mesmo que o aviso em cima, mas para múltiplos binários.

       binary should not be linked against library (it uses none of the library's symbols)
           O  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.

   Erros
       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.X). Uma  biblioteca  privada  (como  um
       plugin) não deve ter um SONAME e não precisa de ser versionada.

       couldn't find library library-soname needed by binary (its RPATH is 'rpath')
           O  binary usa uma biblioteca chamada library-soname mas o dpkg-shlibdeps não foi capaz de encontrar a
           biblioteca. 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 -l, directórios listados na variável
           de  ambiente  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 -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 -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 -l contém o
           directório apropriado se estiver também num directório privado.

       no dependency information found for library-file (used by binary).
           A biblioteca necessária pelo binary foi encontrada pelo  dpkg-shlibdeps  em  library-file  mas  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  dpkg  -S
           library-file.  Depois verificou os ficheiros shlibs e symbols correspondentes em /var/lib/dpkg/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 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 dpkg-shlibdeps tenta contornar
           isto ao tentar descer para um nome canónico (usando realpath(3)) mas pode  nem  sempre  funcionar.  É
           sempre melhor limpar a RPATH do binário para evitar problemas.

           Chamar  o dpkg-shlibdeps em modo detalhado (-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.

VEJA TAMBÉM

       deb-substvars(5), deb-shlibs(5), deb-symbols(5), dpkg-gensymbols(1).

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>.

1.22.6                                             2024-07-17                                  dpkg-shlibdeps(1)