dh_installdeb - instala ficheiros no directório DEBIAN
dh_installdeb [
debhelper opções]
dh_installdeb é um programa debhelper que é
responsável por instalar ficheiros nos directórios
DEBIAN
nos directórios de compilação de pacotes com as
permissões correctas.
-
pacote.postinst
-
pacote.preinst
-
pacote.postrm
-
pacote.prerm
- Estes scripts de maintainer são instalados no
directório DEBIAN.
dh_installdeb irá executar a substituição de
tokens conhecidos do padrão #TOKEN#. Em geral, os scripts
irão querer incluir o #DEBHELPER# para beneficiar dos
scripts de shell gerados pelos comandos debhelper (incluindo commands
(including aqueles de dh_installdeb quando processa ficheiros
package.maintscript).
O token #DEBHELPER# deve ser colocado na sua linha própria
pois é muitas vezes substituído por um script de shell de
multi-linhas.
-
pacote.triggers
-
pacote.shlibs
- Estes ficheiros de controle são instalados no
directório DEBIAN.
Note que o pacote.shlibs é apenas instalado em nível de
compatibilidade 9 e anteriores. Em compatibilidade 10, use
dh_makeshlibs(1).
-
pacote.conffiles
- este ficheiro será instalado no directório
DEBIAN. O ficheiro fornecido será enriquecido pelo debhelper
para incluir todos os conffiles auto-detetados pelo debhelper (o
responsável deve estar listado lá pois o debhelper assume
que deve lidar com essa parte.)
Este ficheiro é principalmente útil para usar entradas
"especiais" tais como a funcionalidade remove-on-upgrade
do dpkg.
-
pacote.maintscript
- As linhas neste ficheiro correspondem a comandos e
parâmetros de dpkg-maintscript-helper(1). No entanto, os
"maint-script-parameters" não devem ser
incluídos pois o debhelper irá adicionar esses
automaticamente.
Exemplo:
# Correct
rm_conffile /etc/obsolete.conf 0.2~ foo
# INCORRECT
rm_conffile /etc/obsolete.conf 0.2~ foo -- "$@"
No nível de compatibilidade 10 ou posterior, quaisquer
meta-caracteres de shell serão "escapados" então
não se pode inserir aqui código arbitrário de shell.
Por exemplo, uma linha como "mv_conffile /etc/oldconffile
/etc/newconffile" irá inserir fragmentos de script de
maintainer em todos os scripts de maintainer suficientes para mover esse
ficheiro de configuração.
Foi também intenção de fazer escape de shell a
meta-caracteres nos níveis de compatibilidade anteriores. No
entanto, não funcionava correctamente e como tal era
possível embeber código de shell arbitrário nos
níveis de compatibilidade anteriores.
A ferramenta dh_installdeb irá fazer alguma
validação básica a alguns dos comandos listados neste
ficheiro para apanhar enganos comuns. A validação é
activada como um aviso desde compatibilidade 10 e como um erro a resolver
na compatibilidade 12.
Onde possível, o dh_installdeb pode escolher rescrever algumas
ou todas as entradas em funcionalidades equivalentes suportadas no dpkg
sem se apoiar nos scripts do maintainer scripts a seu exclusivo
critério (exemplos incluem rescrever rm_conffile em
remove-on-upgrade do dpkg). O requerimento mínimo para
activar esta funcionalidade é que o debhelper corra em
compatibilidade 10 ou posterior.
Suporta variáveis de substituição em compatibilidade 13
e posterior como documentado em debhelper(7).
-
-DTOKEN=VALUE, --define
TOKEN=VALUE
- Define tokens a serem substituídos dentro dos
scripts do maintainer quando são gerados. Por favor note as
limitações descritas em "Limitações nos
nomes dos tokens" também se aplicam a tokens definidos na
linha de comandos. Nomes de tokens inválidos irão despoletar
um erro.
No caso simples, este parâmetro irá causar com que
#TOKEN# seja substituído por
VALUE. Se VALUE começar com um @-sign literal,
então espera-se que VALUE aponte para um ficheiro que
contém o valor real a inserir.
Um token declarado explicitamente com este parâmetro irá
substituir tokens embutidos.
Exemplos de testes para ajuda na compreensão:
cat >> debian/postinst <<EOF
#SIMPLE#
#FILEBASED#
EOF
echo -n "Complex value" > some-file
dh_installdeb --define SIMPLE=direct --define FILEBASED=@some-file
Neste exemplo, #SIMPLE# irá expandir para direct e
#FILEBASED# irá expandir para Complex value.
É também possível definir valores
específicos-de-pacote para um dado token. Isto é útil
quando dh_installdeb está a actuar em múltiplos
pacotes que precisam de valores diferentes para o mesmo token. Isto
é feito ao prefixar o nome do token com
pkg.nome-do-pacote ..
Isto pode ser usado como no exemplo seguinte:
cat >> debian/foo.postinst <<EOF
# Script for #PACKAGE#
#TOKEN#
EOF
cat >> debian/bar.postinst <<EOF
# Script for #PACKAGE#
#TOKEN#
EOF
cat >> debian/baz.postinst <<EOF
# Script for #PACKAGE#
#TOKEN#
EOF
dh_installdeb -pfoo -pbar -pbaz --define TOKEN=default --define pkg.bar.TOKEN=unique-bar-value \
--define pkg.baz.TOKEN=unique-baz-value
Neste exemplo, #TOKEN# irá expandir para default em
debian/foo.postinst, para unique-bar-value em
debian/bar.postinst e para unique-baz-value em
debian/baz.postinst.
Note que os tokens #pkg.*# irão ser visíveis em todos
os scripts que actuem. Ex, você pode referir a
#pkg.bar.TOKEN# dentro de debian/foo.postinst e ele
será substituído por unique-bar-value.
O
dh_installdeb irá substituir automaticamente os seguintes tokens
dentro de um script disponibilizado pelo maintainer (se não for
substituído via
-D/
--define):
- #DEBHELPER#
- Este token é por predefinição
substituído por excertos de shell de comandos debhelper gerados.
Isto inclui os excertos gerados pelo dh_installdeb a partir do
ficheiro package.maintscript (se presente).
- #DEB_HOST_NAME#, #DEB_BUILD_NAME#,
#DEB_TARGET_ NAME#
- Estes tokens são substituídos pela
variável respectiva a partir de dpkg-architecture(1). Em
quase todos os casos, você vai querer usar a variante
#DEB_HOST_ NAME num script para assegurar que
obtêm o valor correcto quando faz compilação cruzada.
Na melhor das hipóteses, tokens deste padrão que não
correspondam a uma variável em dpkg-architecture(1)
serão deixá-dos como estão.
- #ENV.NAME#
- Estes tokens deste formato serão substituídos
pelo valor da variável de ambiente correspondente. Se a
variável de ambiente não estiver definida, o token é
substituído pela string vazia.
Note que existem limites em quais nomes podem ser usados (veja
"Limitações nos nomes dos token").
- #PACKAGE#
- Este token é por predefinição
substituído pelo nome do pacote, o qual irá conter o script
concreto.
Todos os tokens que se destinam a ser substituídos têm de
corresponder ao regex: #[A-Za-z0-9_.+]+#
Tokens que não correspondam a esse regex serão ignorados em
silêncio se encontrados no script modelo. Nomes de token
inválidos passados a
-D ou
--define irão causar
que o
dh_installdeb rejeite o comando com um erro na maioria dos casos.
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].