Scroll to navigation

DH_MAKESHLIBS(1) Debhelper DH_MAKESHLIBS(1)

NOME

dh_makeshlibs - cria automaticamente o ficheiro shlibs e chama dpkg-gensymbols

RESUMO

dh_makeshlibs [opções do debhelper] [-mmajor] [-V[dependências]] [-n] [-Xitem] [-- parâmetros]

DESCRIÇÃO

dh_makeshlibs é um programa debhelper que sonda automaticamente por bibliotecas partilhadas, e gera um ficheiro shlibs para as bibliotecas que encontra.

Também assegura que o ldconfig é invocado durante a instalação e remoção quando encontra bibliotecas partilhadas. Desde o debhelper 9.20151004, isto é feito via um trigger do dpkg. Nas versões mais antigas do debhelper, dh_makeshlibs seria geralmente um script de maintainer para este objetivo.

Desde o debhelper 12.3, dh_makeshlibs irá por predefinição adicionar uma linha udeb adicional para udebs no ficheiro shlibs, quando o udeb tem o mesmo nome que o deb seguido por um sufixo "-udeb" (ex. se o deb for chamado "libfoo1", então o debhelper irá auto-detectar o udeb se ele for chamado "libfoo1-udeb"). Por favor use as opções --add-udeb e --no-add-udeb abaixo quando esta auto-detecção é insuficiente.

Se você usou anteriormente --add-udeb e está a considerar migrar para a utilização da nova funcionalidade de auto-detecção em 12.3, então por favor lembre-se de testar que os ficheiros DEBIAN/shlibs resultantes são os esperados. Existem alguns casos conhecidos, onde a auto-detecção é insuficiente. Estes incluem quando o udeb contem ficheiros biblioteca de múltiplos pacotes deb regulares ou quando os pacotes não seguem a convenção de nomes esperada.

FICHEIROS

Instala este ficheiro, se presente, no pacote como DEBIAN/shlibs. Se omitido, o debhelper irá gerar um ficheiro shlibs automaticamente se detectar quaisquer bibliotecas.

Note que em níveis de compatibilidade 9 e anteriores, este ficheiro era instalado pelo dh_installdeb(1) em vez do dh_makeshlibs.

Estes ficheiros de símbolos, se presentes, são passados para dpkg-gensymbols(1) para serem processados e instalados. Use os nomes específicos de arch se precisar de disponibilizar ficheiros de símbolos diferentes para diferentes arquitecturas.

OPÇÕES

Em vez de tentar adivinhar o maior número da biblioteca com o objdump, usa o maior número especificado após o parâmetro -m. Isto é muito menos útil do que costumava ser, de volta aos maus velhos tempos quando este programa olhava para os nomes de ficheiro das bibliotecas em vez de usar o objdump.
Se um ficheiro shlibs for gerado por este programa, esta opção controla que versão será usada na relação de dependência.

Em compatibilidade 12 e posterior, dh_makeshlibs usa por predefinição -VUpstream-Version. Em compatibilidade 11 e anterior o comportamento predefinido é como -VNone.

A ferramenta dh_makeshlibs pode gerar dependências em três variantes:

A dependência será "packagename (>= packageversion)". Note que Upstream-Version é sensível a maiúsculas/minúsculas e tem de ser escrito exactamente como mostrado aqui.

Esta é uma definição conservativa que assegura sempre que as dependências de bibliotecas partilhadas dos pacotes mais antigos são pelo menos tão justas o quanto precisam de ser (a menos que a biblioteca seja inclinada a alterar a ABI sem actualizar o número de versão do autor).

O reverso da medalha é que os pacotes podem acabar com dependências muito apertadas em alguns casos (note que um ficheiro symbols pode mitigar esta situação). Isto é geralmente uma inconveniência menor temporária e normalmente muito melhor que a falha causada ao esquecer de inserir a informação de dependência.

Este formato explícito foi adicionado no debhelper/11.3. Nas versões anteriores, era usado em vez disto um -V sem nenhuma informação de dependência (e esse formato ainda funciona).

A dependência será "packagename". Note que None é sensível a maiúsculas/minúsculas e tem de ser escrito exactamente como mostrado aqui.

Este formato é na generalidade não seguro sendo a única excepção se o autor original não estender a ABI de maneira nenhuma. No entanto, a maioria dos autores originais melhoram as suas interfaces com o passar do tempo e é recomendado que os pacotes usem -VUpstream-Version (ou um dos outros formatos de -Vdependencies).

Alternativamente, isto pode ser suficiente se (e apenas se) o pacote usar versão por símbolo (veja dpkg-gensymbols(1)) e não compilar nenhum pacote udeb. Note que symbols não são suportados para pacotes udeb, os quais apenas se apoiam em shlibs para manuseamento das dependências.

Neste caso, o valor passado a -V irá ser usado como uma relação de dependência. O package-relation deve geralmente ser do formato "algum-nome-pacote (>= alguma-versão-pacote)". Lembre-se de incluir o nome do pacote.

Note que o debhelper irá usar o calor como está sem verificações de sanidade ou modificação. Em casos raros e especiais, isto é preciso para gerar uma dependência num pacote diferente daquele que contém a biblioteca.

Quando escolher um valor para esta opção, por favor lembre-se que se o pacote fornecer um ficheiro symbols, então esse é geralmente preferido sobre o ficheiro shlibs para pacotes .deb regulares. Veja dpkg-shlibdeps(1) para mais informação sobre este tópico.

Não adiciona o trigger "ldconfig" mesmo que parece que o pacote possa precisar dele. A opção é chamada --no-scripts por razões históricas pois o dh_makeshlibs previamente gerava scripts do maintainer que chamavam ldconfig.
Exclui ficheiros que contenham item em qualquer ponto do seu nome de ficheiro ou directório de serem tratados como bibliotecas partilhadas.
Cria uma linha adicionar para udebs no ficheiro shlibs e usa udeb como o nome do pacote para o udebs depender dele em vez do pacote da biblioteca normal.

Esta opção é apenas útil para casos especiais tais como quando o debhelper não consegue auto-detectar o nome de pacote para o pacote udeb, quando o udeb irá conter bibliotecas de múltiplos pacotes deb, ou quando o udeb contem bibliotecas não presentes no pacote deb.

Não adiciona nenhumas linhas udeb ao ficheiro shlibs. Isto pode ser usado para desactivar a auto-detecção predefinida do udebs.

Isto pode ser útil caso você não queira nenhum ficheiro shlibs para o udeb porque nenhum pacote irá depender dele. Ex. porque adicionar um pacote udeb para a biblioteca foi "exagero" e a biblioteca está embebida num pacote udeb diferente.

Passa params para dpkg-gensymbols(1).

EXEMPLOS

Assumindo que este é um pacote chamado libfoobar1, gera um ficheiro shlibs que se parece com algo como isto:
libfoobar 1 libfoobar1
Assumindo que a versão actual do pacote é 1.1-3, gera um ficheiro shlibs que se parece com algo como isto:
libfoobar 1 libfoobar1 (>= 1.1)
Gera um ficheiro shlibs que se parece com isto:
libfoobar 1 libfoobar1 (>= 1.0)

VEJA TAMBÉM

debhelper(7)

Este programa é parte do debhelper.

AUTOR

Joey Hess <joeyh@debian.org>

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 ou Equipa Debian de Tradução Portuguesa traduz@debianpt.org.

2021-12-20 13.6