NOME
dpkg-maintscript-helper - contorna limitações conhecidas do dpkg em scripts de maintainer.SINOPSE
dpkg-maintscript-helper command [parameter...] -- maint-script-parameter...COMANDOS E PARÂMETROS
- supports command
- rm_conffile conffile [prior-version [package]]
- mv_conffile old-conffile new-conffile [ prior-version [package]]
- symlink_to_dir pathname old-target [prior-version [package]]
- dir_to_symlink pathname new-target [prior-version [package]]
DESCRIÇÃO
Este programa destina-se a ser corrido dentro de scripts de maintainer para conseguir algumas tarefas que o dpkg (ainda) não pode lidar nativamente seja por limitações de desenho ou devido a limitações actuais, Muitas destas tarefas requerem acções coordenadas dos vários scripts de maintainer ( preinst, postinst, prerm, postrm). Para evitar enganos a mesma chamada precisa simplesmente de englobar todos os scripts e o programa irá automaticamente adaptar o seu comportamento baseado na variável de ambiente DPKG_MAINTSCRIPT_NAME e nos argumentos dos scripts do maintainer que você tem de reencaminhar após um duplo hífen.PARÂMETROS COMUNS
- prior-version
- Define a versão mais recente do pacote cuja actualização deverá despoletar a operação. É importante calcular prior-version correctamente para que as operações sejam correctamente executadas mesmo que o utilizador recompile o pacote com uma versão local. Se prior-version estiver vazio ou omitido, então a operação é tentada a cada actualização (nora: é mais seguro fornecer a versão e ter a operação tentada apenas uma vez). Se o conffile não tem sido enviado por várias versões, e você está agora a modificar os scripts do maintainer para limpar o ficheiro obsoleto, prior-version deve ser baseado na versão do pacote que está agora a preparar, e não a primeira versão do pacote onde faltou o conffile. Isto aplica-se a todas as outras acções do mesmo modo. Por exemplo, para um conffile removido na versão 2.0-1 de um pacote, prior-version deve ser definido para 2.0-1~. Isto irá fazer com que o conffile seja removido mesmo que o utilizador recompile a versão anterior 1.0-1 como 1.0-1local1. Ou um pacote que mude um caminho de um link simbólico (enviado na versão 1.0-1) para um directório (enviado na versão 2.0-1), mas apenas executando a mudança real nos scripts do maintainer na versão 3.0-1, deve definir prior-version para 3.0-1~.
- package
- O nome do pacote que possui os nome(s) de caminho(s). Quando o pacote é “Multi-Arch: same” este parâmetros tem de incluir o qualificador de arquitectura, caso contrário não deverá geralmente incluir o qualificador de arquitectura ((pois iria desautorizar cruzamento de graduação, ou comutar de ser específico de arquitectura para arquitectura all ou vice versa). Se o parâmetro estiver vazio ou omitido, as variáveis de ambiente DPKG_MAINTSCRIPT_PACKAGE e DPKG_MAINTSCRIPT_ARCH (definidas pelo dpkg ao correr os scripts do maintainer) serão usadas para gerar um nome de pacote com qualificação de arquitectura.
- --
- Todos os parâmetros dos scripts do maintainer têm de ser encaminhados ao programa após --.
TAREFAS RELACIONADAS COM FICHEIROS DE CONFIGURAÇÃO
Ao actualizar um pacote, o dpkg não irá automaticamente remover um conffile (um ficheiro de configuração para o qual dpkg deve preservar as alterações do utilizador) se este não estiver presente na versão mais recente. Existem duas razões principais para isto: a primeira é que o conffile poderia ser abandonado por acidente e a próxima versão poderia restaura-lo., e os utilizadores não querem que as suas alterações sejam deitadas fora. A segunda é para permitir aos pacotes transitarem ficheiros de um conffile mantido pelo dpkg para um ficheiro mantido pelos scripts do maintainer do pacote, geralmente com uma ferramenta como debconf ou ucf. Isto significa que se um pacote se destina a renomear ou remover um conffile, deve explicitamente fazê-lo e dpkg-maintscript-helper pode ser usado para implementar o apagar e mover elegante de conffiles dentro dos scripts do maintainer.Remover um ficheiro de configuração
Nota: Isto pode ser substituído na maioria dos casos pela bandeira "remove-on-upgrade" em DEBIAN/conffiles (desde dpkg 1.20.6), veja deb-conffiles(5). Se um conffile for completamente removido, deve ser removido do disco, a menos que o utilizador o tenha modificado. Se existirem modificações locais, estas devem ser preservadas. Se a actualização do pacote abortar, o conffile obsoleto mais recente não deve desaparecer. tudo isto é implementado ao colocar o seguinte fragmento de shell nos scripts de maintainer preinst, postinst e postrm:dpkg-maintscript-helper rm_conffile \
conffile prior-version package -- "$@"
Renomear um conffile
Se um conffile for movido de uma localização para outra, você precisa de certificar que se move por quaisquer alterações que o utilizador tenha feito. Isto pode parecer uma mudança simples para o script preinst no inicio, no entanto isso vai resultar no utilizador a ser questionado pelo dpkg para aprovar as edições no conffile mesmo este não sendo o responsável por elas. O renomear elegante pode ser implementado ao colocar o seguinte fragmente do shell nos scripts de maintainer preinst, postinst e postrm:dpkg-maintscript-helper mv_conffile \
old-conffile new-conffile prior-version package -- "$@"
LINKS SIMBÓLICOS E SWITCHES DE DIRECTÓRIO
Ao actualiza um pacote, o dpkg não irá mudar automaticamente de um link simbólico para um directório ou vice-versa. Downgrades (descidas de versão) não são suportados e o caminho irá ser deixado como está. Nota: Os links simbólicos e directórios criados durante esses switches precisam de ser enviados nos novos pacotes, ou o dpkg não será capaz de os remover durante a purga.Alternar um link simbólico para directório
Se um link simbólico for mudado para um directório real, você precisa de certificar que o link simbólico é removido antes de desempacotar. Isto pode parecer uma mudança simples para o script preinst no inicio, no entanto isso irá resultar em alguns problemas no caso de personalização local administrativa do link simbólico ou quando se retrocede na versão do pacote (downgrade). O renomear elegante pode ser implementado ao colocar o seguinte fragmente do shell nos scripts de maintainer preinst, postinst e postrm:dpkg-maintscript-helper symlink_to_dir \
pathname old-target prior-version package -- "$@"
Alternar um directório para link simbólico
Se um directório é comutado para um link simbólico, você precisa de certificar-se antes de desempacotar que o directório foi removido. Isto pode parecer no início uma alteração simples ao script preinst, no entanto isso vai resultar em alguns problemas se o directório conter conffiles, nomes de caminhos possuídos por outros pacotes, nomes de caminhos criados localmente, ou quando instala uma versão anterior do pacote (downgrade). Mudança elegante pode ser implementada ao colocar o seguinte fragmento de shell nos scripts preinst, postinst e postrm do maintainer:dpkg-maintscript-helper dir_to_symlink \
pathname new-target prior-version package -- "$@"
INTEGRAÇÃO EM PACOTES
Quando usar um ajudante de empacotamento, por favor verifique se ele tem integração com dpkg-maintscript-helper nativa, o que pode tornar a sua vida mais fácil. Veja por exemplo dh_installdeb(1). Dado que dpkg-maintscript-helper é usado no preinst, usa-lo incondicionalmente requer uma pré-dependência para assegurar que a versão requerida do dpkg já foi desempacotada antes. A versão requerida depende do comando usado, para rm_conffile e mv_conffile é 1.15.7.2, para symlink_to_dir e dir_to_symlink é 1.17.14:Pre-Depends: dpkg (>= 1.17.14)Mas em muitos casos a operação feita pelo programa não é crítica para o pacote, e em vez de usar uma pré-dependência nós podemos chamar o programa apenas quando sabemos que o comando requerido é suportado pelo dpkg presentemente instalado:
if dpkg-maintscript-helper supports command; then
dpkg-maintscript-helper command ...
fi
AMBIENTE
- DPKG_ROOT
- Se definido, será usado como o directório raiz do sistema de ficheiros.
- DPKG_ADMINDIR
- Se definido, será usado como o directório de dados do dpkg.
- DPKG_COLORS
- Define o modo de cor (desde dpkg 1.19.1). Os valores presentemente aceites são: auto (predefinição), always e never.
VEJA TAMBÉM
dh_installdeb(1).TRADUÇÃO
Américo Monteiro Se encontrar algum erro na tradução deste documento, por favor comunique para Américo Monteiro <[email protected]>.2023-05-11 | 1.21.22 |