Índice
Vamos explorar mais fundamentos do empacotamento Debian.
Todos os dados de personalização para o pacote fonte Debian residem no directório debian/ como apresentado em “Secção 5.7, “Passo 3: Modificação dos ficheiros modelo””:
Quando estes não são suficientes para fazer um bom pacote Debian, ficheiros patches -p1 de debian/patches/* são implantados para modificar a fonte do autor. Estes são aplicados uma sequência definida no ficheiro debian/patches/series antes de compilar o pacote como apresentado em “Secção 5.9, “Passo 3 (alternativos): Modificação da fonte do autor””.
Você deve endereçar a causa raiz do problema de empacotamento Debian pela maneira menos invasiva possível. Esta abordagem irá fazer o pacote gerado mais robusto para atualizações futuras.
![]() | Nota |
|---|---|
|
Se a patch que endereça a causa raiz é útil para o projeto do autor, envie-a para o maintainer do autor. |
A personalização flexível do Secção 6.5, “Ficheiro debian/rules” é alcançado ao adicionar alvos override_dh_* apropriados e suas regras.
Quando uma operação especial é requerida para um certo comando dh_foo invocado pelo comando dh, a sua execução automática pode ser sobreposta ao adicionar o alvo makefile override_dh_foo no ficheiro debian/rules.
O processo de compilação pode ser personalizado via interface fornecida pelo autor como argumentos para os comandos do sistema de compilação de fonte de autor, tais como:
Neste caso, você deve adicionar o alvo override_dh_auto_build com “dh_auto_build -- argumentos”. Isto assegura que os argumentos são passados para o sistema de compilação após os parâmetros predefinidos que o dh_auto_build geralmente passa.
![]() | Dica |
|---|---|
|
Evite executar os comandos crus do sistema de compilação diretamente se eles forem suportados pelo comando dh_auto_build. |
Veja:
Algumas definições de variável úteis para personalizar o debian/rules podem ser encontradas em ficheiros sob /usr/share/dpkg/. A notar:
Por exemplo, você pode adicionar uma opção extra ao CONFIGURE_FLAGS para alvo linux-any de arquitecturas ao adicionar o seguinte ao debian/rules:
DEB_HOST_ARCH_OS ?= $(shell dpkg-architecture -qDEB_HOST_ARCH_OS) ... ifeq ($(DEB_HOST_ARCH_OS),linux) CONFIGURE_FLAGS += --enable-wayland endif
Veja “Secção 10.10, “Multiarch””, dpkg-architecture(1) e dpkg-buildflags(1).
When a new upstream release tarball debhello-newvwesion.tar.xz is released, the Debian source package can be updated by invoking commands in the old source tree as:
[debhello-0.0] $ uscan ... debhello-newversion.tar.xz downloaded [debhello-0.0] $ uupdate -v newversion ../debhello-newversion.tar.xz
Após o de cima, você deve refrescar os ficheiros debian/patches/* (veja “Secção 9.5, “Gerir a lista de patch com dquilt””) e atualizar debian/changelog com o comando dch(1).
Quando “debian uupdate” é especificado no final da linha no ficheiro debian/watch, o uscan executa automaticamente uupdate(1) após descarregar o tarball.
Você pode adicionar, retirar, e refrescar ficheiros debian/patches/com dquilt para gerir a lista de patch.
Adiciona uma nova patch debian/patches/nomebug.patch registando a modificação à fonte do autor no ficheiro ficheiro_buggy como:
[debhello-0.0] $ dquilt push -a [debhello-0.0] $ dquilt new bugname.patch [debhello-0.0] $ dquilt add buggy_file [debhello-0.0] $ vim buggy_file ... [debhello-0.0] $ dquilt refresh [debhello-0.0] $ dquilt header -e [debhello-0.0] $ dquilt pop -a
Drop (== desactiva) um caminho existente
Refresca ficheiros debian/patches/* para fazer o “dpkg-source -b” funcionar como esperado após atualizar um pacote Debian para o novo lançamento do autor.
[debhello-0.0] $ uscan; uupdate # updating to the new upstream release [debhello-0.0] $ while dquilt push; do dquilt refresh ; done [debhello-0.0] $ dquilt pop -a
Aqui vamos recapitular os comandos de compilação de pacotes de baixo nível disponíveis. Existem muitas maneiras de se fazer a mesma coisa.
O comando sbuild(1) é um script invólucro do dpkg-buildpackage o qual compila pacotes binário Debian num ambiente chroot gerido pelo comando schroot(1). Por exemplo, compilar para a suite Debian unstable pode ser feito assim:
[debhello-0.0] $ sudo sbuild -d unstable
Em terminologia do schroot(1), isto compila um pacote Debian num limpo e efémero chroot “chroot:unstable-amd64-sbuild” começando como uma cópia do mínimo persistente limpo chroot “source:unstable-amd64-sbuild”.
Este ambiente de compilação foi configurado como descrito em “Secção 4.7, “Configuração do sbuild”” com “sbuild-debian-developer-setup -s unstable” o que essencialmente fez o seguinte:
[~] $ sudo mkdir -p /srv/chroot/dist-amd64-sbuild [~] $ sudo sbuild-createchroot unstable /srv/chroot/unstable-amd64-sbuild http://deb.debian.org/debian [~] $ sudo usermod -a -G sbuild <your_user_name> [~] $ sudo newgrp -
A configuração schroot(1) para unstable-amd64-sbuild foi gerada em /etc/schroot/chroot.d/unstable-amd64-sbuild.$suffix :
[unstable-amd64-sbuild] description=Debian sid/amd64 autobuilder groups=root,sbuild root-groups=root,sbuild profile=sbuild type=directory directory=/srv/chroot/unstable-amd64-sbuild union-type=overlay
Aqui:
Você pode atualizar esta chroot fonte “source:unstable-amd64-sbuild” fazendo:
[~] $ sudo sbuild-update -udcar unstable
Você pode iniciar sessão nesta chroot fonte “source:unstable-amd64-sbuild” assim:
[~] $ sudo sbuild-shell unstable
![]() | Dica |
|---|---|
|
Se o seu sistema de ficheiros chroot fonte tem falta de pacotes como libeatmydata1, ccache, e lintian, para as suas necessidades, você pode querer instalar estes ao iniciar sessão nele. |
The orig.tar.xz file may need to be uploaded for a Debian revision other than 0 or 1 under some exceptional cases (e.g., for a security upload).
Quando um pacote essencial se torna não-essencial (ex, adduser), você precisa de remove-lo manualmente do ambiente chroot existente para o seu uso pelo piuparts.
When you first upload the package to the archive, you need to include the original orig.tar.xz source, too.
Se o número de revisão Debian do pacote for um de 1 ou 0, isto é a predefinição. Caso contrário, você tem de fornecer a opção do dpkg-buildpackage -sa ao comando dpkg-buildpackage.
![]() | Dica |
|---|---|
|
On the other hand, the -sd option will force the exclusion of the original orig.tar.xz source. |
![]() | Dica |
|---|---|
|
Security uploads require including the orig.tar.xz file. |
Se você criou múltiplas entradas no debian/changelog enquanto saltou envios, você tem de criar um ficheiro *_.changes apropriado que inclui todas as alterações desde o último envio. Isto pode ser feito ao especificar a opção do dpkg-buildpackage -v com a última versão enviada, ex., 1.2.
O comando reportbug(1) usado para o relatório de bug de pacote-binário pode ser personalizado pelos ficheiros em usr/share/bug/pacote-binário/.
O comando dh_bugfiles instala estes ficheiros a partir dos ficheiros modelo no directório debian/.
debian/pacote-binário.bug-control → usr/share/bug/pacote-binário/control
debian/pacote-binário.bug-presubj → usr/share/bug/pacote-binário/presubj
debian/pacote-binário.bug-script → usr/share/bug/pacote-binário ou usr/share/bug/pacote-binário/script
Veja dh_bugfiles(1) e “Funcionalidades do reportbug para Desenvolvedores (README.developers)”
![]() | Dica |
|---|---|
|
Se você está sempre a lembrar o relatador de bug de algo ou a pergunta sobre a sua situação, use estes ficheiros para o automatizar. |