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