Provided by: dpkg-dev_1.21.1ubuntu2.3_all bug

NOME

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

SINOPSE

       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 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 prefixá-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-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.21.1                                             2024-02-23                                  dpkg-shlibdeps(1)