dh_makeshlibs - cria automaticamente o ficheiro shlibs e chama dpkg-gensymbols
dh_makeshlibs [
opções do debhelper]
[
-mmajor] [
-V[dependências]] [
-n]
[
-Xitem] [
-- parâmetros]
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.
- debian/pacote.shlibs
- 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.
- debian/pacote.symbols
- debian/pacote.symbols.arquitectura
- 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.
-
-mmajor, --major=major
- 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.
-
-V, -Vdependências
-
--version-info,
--version-info=dependências
- 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:
- -VUpstream-Version
- 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).
- -VNone
- 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
-V dependencies).
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.
-
-Vpackage-relation
- 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, --no-scripts
- 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.
-
-Xitem, --exclude=item
- Exclui ficheiros que contenham item em qualquer
ponto do seu nome de ficheiro ou directório de serem tratados como
bibliotecas partilhadas.
-
--add-udeb=udeb
- 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.
- --no-add-udeb
- 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.
-
-- params
- Passa params para dpkg-gensymbols(1).
- dh_makeshlibs -VNone
- Assumindo que este é um pacote chamado
libfoobar1, gera um ficheiro shlibs que se parece com algo como
isto:
libfoobar 1 libfoobar1
- dh_makeshlibs -VUpstream-Version
- 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)
- dh_makeshlibs -V 'libfoobar1 (>= 1.0)'
- Gera um ficheiro shlibs que se parece com isto:
libfoobar 1 libfoobar1 (>= 1.0)
debhelper(7)
Este programa é parte do debhelper.
Joey Hess <
[email protected]>
Américo Monteiro
Se encontrar algum erro na tradução deste documento, por favor
comunique para Américo Monteiro
[email protected] ou Equipa
Debian de Tradução Portuguesa
[email protected].