debhelper-compat-upgrade-checklist - Actualiza a lista de
verificação para níveis de compatibilidade do debhelper
suportados.
Este documento é uma lista de verificação de
actualização para todos os níveis de compatibilidade do
debhelper suportados. Também lista todos os níveis de
compatibilidade de debhelper suportados.
Informação sobre como declarar os níveis de
compatibilidade está em "NÍVEIS DE COMPATIBILIDADE"
in debhelper(7).
Se você está a actualizar a partir de um
nível de compatibilidade (agora) obsoleto, então por favor
consulte debhelper-obsolete-compat(7).
Estes são os níveis de compatibilidade
disponíveis:
- v15
- Este nível de compatibilidade ainda está aberto em
desenvolvimento; use com cuidado.
As alterações a partir de v14 são:
- -
- A ferramenta dh_auto_install já não usa por
predefinição --destdir=debian/package
para pacotes fonte que apenas produzem um único binário. Se
este comportamento é desejado, o pacote deve activar explicitamente
o addon do dh single-binary (ex. ao adicionar
dh-sequence-single-binary a Build-Depends) ou passar
--destdir a dh_auto_install.
A razão para esta alteração é
evitar "surpresas" ao adicionar um segundo pacote
binário mais tarde. Anteriormente, o debhelper iria em
silêncio alterar o comportamento muitas vezes resultado em
pacotes binários vazios a serem enviados para o arquivo por
engano. Com o novo comportamento, o addon single-binary
irá detectar a discrepância e avisar o maintainer do que
está prestes a acontecer.
- v14
- Este nível de compatibilidade ainda está aberto em
desenvolvimento; use com cuidado.
As alterações a partir de v13 são:
- O sistema de compilação cmake agora passa
-DCMAKE_BUILD_RPATH_USE_ORIGIN=ON a cmake(1) para evitar
alguns problemas de reprodutibilidade.
- A ferramenta dh_installsysusers está agora incluída
na sequência predefinida. Esta ferramenta de ajuda irá
processar ficheiros sysusers do systemd.
- Usar o comando dh_gconf em alvos de sobreposição e
hook agora causa um erro. O comando dh_gconf foi um
não-operativo durante anos e foi removido no debhelper 13.4.
- O sequenciador dh irá avisar se o addon single-binary
for activado implicitamente para avisar os maintainers da pendente
alteração na compatibilidade 15 em dh_auto_install.
Maintainers são incentivados a ou activar
explicitamente o addon single-binary para preservar o
comportamento existente (ex. ao adicionar
<dh-sequence-single-binary> a Build-Depends), ou passar
explicitamente --destdir a dh_auto_install se usado e
depois passar --without single-binary a dh (a
última para silenciar o aviso).
A razão para esta alteração é
evitar "surpresas" ao adicionar um segundo pacote
binário mais tarde. Anteriormente, o debhelper iria em
silêncio alterar o comportamento muitas vezes resultado em
pacotes binários vazios a serem enviados para o arquivo por
engano. Com o novo comportamento, o addon single-binary
irá detectar a discrepância e avisar o maintainer do que
está prestes a acontecer.
- A ferramenta dh_installalternatives irá agora correr
após dh_link em vez de após
dh_installinitramfs na sequência predefinida do
dh.
- A ferramenta dh_installpam irá agora instalar ficheiros de
configuração do PAM sob /usr/lib/pam.d/package em vez
de /etc/pam.d/package.
Por favor considere usar a funcionalidade
"rm_conffile" de dh_installdeb(1) para assegurar a
remoção apropriada dos ficheiros PAM anteriores.
- Os sistemas de compilação meson+ninja e cmake
agora usam meson install e cmake --install, respetivamente,
em vez de ninja install e make install na chamada
dh_auto_install(1). Qualquer sobreposição de
dh_auto_install que passe parâmetros extra ao sistema de
compilação do autor deve ser revista.
- v13
- Este é o modo de operação recomendado.
As alterações a partir de v12 são:
- O sistema de compilação meson+ninja agora usa
meson test em vez de ninja test quando corre a suite de
testes. Qualquer sobreposição de dh_auto_test que
passe parâmetros extra ao testador original do autor deve ser
revista, pois o meson test não é compatível em
linha de comandos com o ninja test.
- Todas as ferramentas tipo debhelper baseadas na biblioteca debhelper
oficial (incluindo dh e as ferramentas oficiais dh_*)
não aceitam mais parâmetros abreviados de comandos. Ao mesmo
tempo, dh agora optimiza as chamadas a ajudantes redundantes
dh_* mesmo quando passa opções longas da linha de
comandos.
- As ferramentas debhelper relacionadas com ELF (dh_dwz,
dh_strip, dh_makeshlibs, dh_shlibdeps) são
agora apenas executadas para os pacotes dependentes de arquitectura por
predefinição (isto é, estão excluídas
de alvos *-indep e são passadas -a por
predefinição). Se você precisar delas para alvos
*-indep, você pode adicionar um Build-Depends
explícito em dh-sequence-elf-tools.
- O sistema de compilação de terceiros gradle (do
pacote gradle-debian-helper) agora corre a suite de testes
disponibilizada pelo autor automaticamente. Para suprimir tal
comportamento, sobreponha dh_auto_test.
- A ferramenta dh_installman agora aborta se vir
definições conflituosas de uma manpage. Isto tipicamente
acontece se o sistema de compilação do autor está a
instalar uma versão comprimida e o pacote lista uma versão
descomprimida da manpage em debian/package.manpages. Muitas vezes a
correção mais fácil é remover a manpage de
debian/package.manpages (assumindo que ambas as versões
são idênticas).
- Os ajudantes de dh_auto_* agora reiniciam as variáveis de
ambiente HOME e variável comum XDG_*. Por favor veja
a descrição das variáveis de ambiente em
"ENVIRONMENT" para como lidar com isto.
Esta funcionalidade mudou entre debhelper 13 e debhelper
13.2.
- O comando dh ir+a agora dar erro se estiver presente um alvo de
sobreposição ou hook para um comando obsoleto em
debian/rules (ex.override_dh_systemd_enable:).
- O comando dh_missing irá agora usar por
predefinição --fail-missing. Isto pode ser revertido
para um aviso não fatal ao passar explicitamente
--list-missing como era na compatibilidade 12.
Se você também não quiser o aviso, por
favor omita a chamada ao dh_missing. Se você usar o
sequenciador de comandos dh, então pode fazer isto ao
inserir um alvo de sobreposição vazio no ficheiro
debian/rules do pacote relevante. Como exemplo:
# Disable dh_missing
override_dh_missing:
- O sequenciador de comandos dh agora corre dh_installtmpfiles
na sequência predefinida. O dh_installtmpfiles assume o
manusear dos ficheiros de configuração tmpfiles.d. A
funcionalidade relacionada em dh_installsystemd está agora
desactivada.
Note que dh_installtmpfiles responde a
debian/package.tmpfiles onde dh_installsystemd usou um
nome sem o "s" final.
- Muitas ferramentas dh_* agora suportam expansão de
variáveis limitada via sintaxe ${foo}. Em muitos casos, isto
pode ser usado para referenciar caminhos que contêm ou
espaços ou valores dpkg-architecture(1). Enquanto isto pode
reduzir a necessidade de dh-exec(1) em alguns casos,
não é um substituto de dh-exec(1) em geral. Se
você precisar de filtrar, renomear, etc... o pacote irá
continuar a precisar de dh-exec(1).
Por favor veja "Substituições em ficheiros
de configuração do debhelper" para sintaxe e
variáveis de substituição disponíveis. Para
os escritores da ferramenta dh_*, a expansão de
substituição ocorre como parte das funções
filearray e filedoublearray.
- O sequenciador de comandos dh irá agora saltar todos os
alvos hook e de sobreposição para dh_auto_test,
dh_dwz e dh_strip quando DEB_BUILD_OPTIONS listar as
opções nocheck / nostrip relevantes.
Qualquer pacote que se apoie nestes alvos para ser sempre
corrido deve, em vez disto, mover a lógica relevante para fora
destes alvos. Ex, código de empacotamento não relacionado
com testes a partir de override_dh_auto_test deverá ser
movido para execute_after_dh_auto_build ou
execute_before_dh_auto_install.
- O sistema de compilação cmake agora passa
-DCMAKE_SKIP_INSTALL_ALL_DEPENDENCY=ON ao cmake(1) para
acelerar o processo de instalação automática. Se por
alguma razão você precisar do comportamento anterior,
sobreponha a flag:
dh_auto_configure -- -DCMAKE_SKIP_INSTALL_ALL_DEPENDENCY=OFF ...
- v12
- As alterações a partir de v11 são:
- A ferramenta dh_makeshlibs agora gera ficheiros shlibs com
dependência de versão por predefinição. Isto
significa que -VUpstream-Version (a.k.a. -V) é agora
a predefinição.
Se é pedida uma dependência sem versão no
ficheiros shlibs, isto pode ser conseguido ao passar -VNone em
substituição. No entanto, por favor veja
dh_makeshlibs(1) para a problemática das
dependências sem versão.
- A opção -s (--same-arch) foi removida. Por
favor use -a (--arch) em vez desta.
- Invocar dh_clean -k agora causa um erro em vez de um aviso de
descontinuação.
- A opção --no-restart-on-upgrade em
dh_installinit foi removida. Por favor use o novo nome
--no-stop-on-upgrade
- Existia um bug nas funções doit (e similares) a
partir de Debian::Debhelper::Dh_Lib que fazia aparece uma linha de
comandos numa circunstância particular. Este bug foi agora removido
e irá fazer com que os ajudantes que contavam com esse bug falhem
com um erro de "comando não encontrado".
- O --list-missing e --fail-missing em dh_install foram
removidos. Por favor use dh_missing e as suas opções
correspondentes, o qual pode também ver os ficheiros instalados por
outros ajudantes.
- O ajudante dh_installinit já não instala
configuração para o sistema de init upstart. Em vez disso,
irá abortar a compilação se encontrar um ficheiro de
configuração upstart antigo. O erro está lá
para lembrar ao maintainer do pacote para assegurar a
remoção apropriada dos ficheiros de
configuração empacotados em versões anteriores do
pacote (caso existam).
- A ferramenta dh_installdeb irá fazer validação
básica de alguns comandos dpkg-maintscript-helper(1) e
irá terminar em erro se os comandos parecerem ser
inválidos.
- A ferramenta dh_missing irá agora usar por
predefinição --list-missing.
- A ferramenta dh_makeshlibs irá agora apenas passar
bibliotecas para dpkg-gensymbols(1) se o binário ELF tiver
um SONAME (contendo ".so").
- A ferramenta dh_compress não mais comprime exemplos (isto
é, nada instalado em
</usr/share/doc/pacote/examples>.)
- A sequência standard em dh agora inclui dh_dwz e
dh_installinitramfs por predefinição. Isto tornas as
sequências dwz e installinitramfs obsoletas e elas
agora irão falhar com um erro. Se desejar saltar estes comandos,
por favor insira um alvo de sobreposição vazio para eles em
debian/rules (ex. override_dh_dwz:)
- Os sistemas de compilação meson e autoconf
não mais definem explicitamente a variável
--libexecdir e assim apoia-se na predefinição do
sistema de compilação - O qual deve ser /usr/libexec
(por FHS 3.0, adoptado em Debian Policy 4.1.5).
Se um determinado pacote original do autor não usar a
predefinição correcta, o parâmetro pode muitas
vezes ser passado manualmente via dh_auto_configure(1). Por
exemplo via seguinte exemplo:
override_dh_auto_configure:
dh_auto_configure -- --libexecdir=/usr/libexec
Note o -- antes do parâmetro
--libexecdir.
- Retroativamente removido em debhelper/13.5:
A ferramenta dh_installdeb não iria mais
instalar o ficheiro conffiles fornecido pelo responsável
pois isso foi considerado desnecessário. No entanto, o
remove-on-upgrade do dpkg/1.20 tornou o ficheiro relevante de
novo e dh_installdeb agora instala-o nos níveis de
compatibilidade 12+.
- A ferramenta dh_installsystemd não mais se apoia em
dh_installinit para lidar com os serviços do systemd que
têm uma alternativa de sysvinit. ambas ferramentas devem agora ser
usadas em tais casos para assegurar que o serviço é
arrancado correctamente sob ambos sysvinit e systemd.
Se tiver uma sobreposição para
dh_installinit (ex. para chama-lo com --no-start)
então irá provavelmente precisar agora também de um
para dh_installsystemd.
Esta alteração faz dh_installinit
injectar um misc:Pre-Depends para init-system-helpers (>=
1.54~). Por favor assegure que o pacote lista
${misc:Pre-Depends} no seu campo Pre-Depends antes de
actualizar para a compatibilidade 12.
- Esta ferramenta de terceiros dh_golang (do pacote dh-golang)
agora por predefinição honra a variável
DH_GOLANG_EXCLUDES para instalação fonte em pacotes
-dev e não apenas durante o processo de compilação.
Por favor defina DH_GOLANG_EXCLUDES_ALL para falso para reverter
para o comportamento anterior. Veja
Debian::Debhelper::Buildsystem::golang(3pm) para detalhes e
exemplos
- dh_installsystemduser é agora incluído na
sequência standard do dh por
predefinição.
- O sistema de compilação python-distutils foi agora
removido. Por favor use o sistema de compilação de terceiros
pybuild em substituição.
- v11
- Este modo está desencorajado.
A compatibilidade 11 é desencorajada para novos pacotes
pois sofre de interação de características entre
dh_installinit e dh_installsystemd o que causa com que os
serviços não funcionem correctamente em alguns casos. Por
favor considere usar modo de compatibilidade 10 ou 12 em vez deste. Mais
detalhes sobre este problema estão disponíveis em
Debian#887904 e
<https://lists.debian.org/debian-release/2019/04/msg01442.html>.
As alterações a partir de v10 são:
- dh_installinit já não instala ficheiros
service ou tmpfile, nem gera scripts do maintainer para
esses ficheiros, Por favor use o novo ajudante
dh_installsystemd
- Os ajudantes dh_systemd_enablee dh_systemd_start foram
substituídos pelo novo ajudante dh_installsystemd. Pela
mesma razão, a sequência do systemd para dh
foi também removida. Se você precisar de desactivar a
ferramenta de ajuda dh_installsystemd, por favor use um alvo de
sobreposição vazio.
Por favor note que a ferramenta dh_installsystemd tem
um comportamento ligeiramente diferente em alguns casos (ex. quando se
usa o parâmetro --name).
- dh_installdirs já não cria directórios
debian/pacote a menos que tal seja explicitamente pedido (ou se
tiver de criar um sub-directório nele).
A grande maioria dos pacotes não serão afectados
por esta alteração.
- O sistema de compilação makefile agora passa
INSTALL="install --strip-program=true" para o
make(1). Sistemas de compilação derivativos (ex.
configure ou cmake) não são afectados por esta
alteração.
- O sistema de compilação autoconf agora passa
--runstatedir=/run para ./configure.
- O sistema de compilação cmake agora passa
-DCMAKE_INSTALL_RUNSTATEDIR=/run para cmake(1).
- dh_installman irá agora preferir detectar a linguagem a
partir do nome de caminho em vez de a extensão.
- dh_auto_install irá agora apenas criar o directório
de destino que precisa. Anteriormente, iria criar o directório de
compilação de pacote para todos os pacotes. Isto não
vai afectar pacotes que apenas compilam com comandos debhelper, mas pode
expor bugs em comandos não incluídos no debhelper.
- Os ajudantes dh_installdocs, dh_installexamples,
dh_installinfo, e dh_installman agora dão erro se a
sua configuração tiver um padrão que não
coincida com nada ou faça referência a um caminho que
não exista.
Excepções conhecidas incluem compilar com o
perfil nodoc, onde as ferramentas de cima irão permitir em
silêncio correspondências falhadas onde os padrões
são usados para especificar documentação.
- Os ajudantes dh_installdocs, dh_installexamples,
dh_installinfo, e dh_installman agora aceitam o
parâmetro --sourcedir com o mesmo significado que
dh_install. Mais ainda, eles agora também retornam (em fall
back) a debian/tmp como dh_install.
Nota de migração: Um bug no debhelper 11
até ao 11.1.5 faz com que dh_installinfo ignore
incorrectamente --sourcedir.
- Os sistemas de compilação perl-makemaker e
perl-build já não passam -I. ao perl. Os
pacotes que ainda precisam deste comportamento podem emula-lo ao usar a
variável de ambiente PERL5LIB. Ex. ao adicionar export
PERL5LIB=. no seu ficheiro debian/rules (ou semelhante).
- A variável de ambiente PERL_USE_UNSAFE_INC já
não é definida pelo dh ou nenhuma das ferramentas
dh_auto_*. Ela foi adicionada como um meio de contorno
temporário evitar muitos pacotes a falharem a
compilação ao mesmo tempo.
Note que este item irá eventualmente tornar-se obsoleto
pois o auto pretende abandonar o suporte para a variável de
ambiente PERL_USE_UNSAFE_INC. Quando o perl abandonar o para ala,
então esta variável será também removida
retroactivamente dos níveis de compatibilidade existentes.
- O ajudante dh_makeshlibs irá agora terminar em erro se
objdump retornar uma saída não-zero a partir da
análise de um determinado ficheiro.
- As ferramentas dh_installdocs e dh_installexamples podem
agora instalar a maioria da documentação num caminho
diferente para cumprir com a recomendação da política
Debian §12.3 (desde versão 3.9.7).
Note que um dado pacote fonte apenas contém um
único pacote binário em debian/control ou nenhum
dos pacotes são pacotes -doc, então esta
alteração não é relevante para esse pacote
fonte e você pode saltar a próxima
alteração.
Por predefinição, estas ferramentas irão
agora tentar determinar um "pacote principal para a
documentação" (chamado um doc-main-package
daqui em diante) para cada pacote -doc. Se encontrarem o tal
doc-main-package, irão agora instalar a
documentação em /usr/share/doc/doc-main-package no
pacote doc fornecido. Isto é, o caminho pode mudar mas a
documentação será na mesma enviada no pacote
-doc.
A opção --doc-main-package pode ser usada
quando a auto-detecção é insuficiente ou para
reiniciar o caminho para o seu valor anterior se existir razão
para divergir da recomendação da política
Debian.
Alguma documentação não será
afectada por esta alteração. Estas excepções
incluem o ficheiro copyright, ficheiros changelog, README.Debian, etc.
Estes ficheiros serão na mesma instalados no caminho
/usr/share/doc/pacote.
- As ferramentas dh_strip e dh_shlibdeps já não
usam mais padrões de nomes de ficheiros para determinar quais
ficheiros processar. Em vez disso, elas abrem o ficheiro e procuram um
cabeçalho ELF para determinar se um dado ficheiro é um
objecto partilhado ou um executável ELF.
Esta alteração fazer com que as ferramentas
processem mais ficheiros que anteriormente.
- v10
- As alterações a partir de v9 são:
- Com isto, é agora mais fácil de depurar as sequências
install ou/e binary porque agora podem ser trivialmente
re-executadas (sem ter que fazer um ciclo de "limpar e
recompilar" completo.
- O principal embargo é que dh_* agora apenas mantêm
acompanhamento do que aconteceu num alvo de sobreposição
singular. Quanto todas as chamadas a um dado comando dh_cmd
acontecem no mesmo alvo de sobreposição tudo irá
funcionar como dantes.
Exemplo de onde pode falhar:
override_dh_foo:
dh_foo -pmy-pkg
override_dh_bar:
dh_bar
dh_foo --remaining
Neste caso, a chamada a dh_foo --remaining irá
também incluir my-pkg, desde que dh_foo
-pmy-pkg tenha corrido num alvo de sobreposição
separado. Este problema não está imitado a
--remaining, mas também inclui -a, -i,
etc.
- v9
- As alterações a partir de v8 são:
Este modo está descontinuado.
- v8
- As alterações a partir de v7 são:
- Os comandos irão falhar em vez de emitirem avisos quando lhes
são passadas opções desconhecidas.
- dh_makeshlibs irá correr dpkg-gensymbols em todas as
bibliotecas partilhadas para as quais gera ficheiros shlibs. Portanto o
-X pode ser usado para excluir bibliotecas. Também, as
bibliotecas em localizações fora do habitual que o
dpkg-gensymbols não tenha processado antes serão
passadas para ele, uma alteração no comportamento que pode
causar que alguns pacotes falhem a compilar.
- dh requer que a sequência a correr seja especificada como o
primeiro parâmetro, e quaisquer switches que venham depois dela.
Isto é, use dh $@ --foo", e não "dh
--foo $@
- dh_auto_* prefere usar o Module::Build do Perl em
preferência de Makefile.PL.
Este modo está descontinuado.
- v7
- Este modo está descontinuado.
Este é o nível de compatibilidade mais baixo
suportado.
Se você está a actualizar a partir de um
nível de compatibilidade anterior, por favor reveja
debhelper-obsolete-compat(7).
- debhelper-obsolete-compat(7)
- A actualizar a partir de um nível de compatibilidade (agora)
obsoleto? Este documento a lista de verificação de
actualização até ao nível suportado mais
recente.
- debhelper(7)
- Informação geral acerca da estrutura do debhelper. Este
documento também cobre como declarar o seu nível de
compatibilidade debhelper escolhido.
Niels Thykier <niels@thykier.net>
Joey Hess
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.