Índice
Let’s explore more fundamentals of Debian packaging.
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””.
You should address the root cause of the Debian packaging problem in the least invasive way possible. This approach will make the generated package more robust for future upgrades.
![]() | Nota |
---|---|
If the patch addressing the root cause is useful to the upstream project, send it to the upstream maintainer. |
Flexible customization of the Secção 6.5, “Ficheiro debian/rules” is achieved by adding appropriate override_dh_* targets and their rules.
When a special operation is required for a certain dh_foo command invoked by the dh command, its automatic execution can be overridden by adding the makefile target override_dh_foo in the debian/rules file.
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:
In this case, you should add the override_dh_auto_build target with “dh_auto_build -- arguments”. This ensures that arguments are passed to the build system after the default parameters that dh_auto_build usually passes.
![]() | Dica |
---|---|
Avoid executing bare build system commands directly if they are supported by the dh_auto_build command. |
Veja:
Algumas definições de variável úteis para personalizar o debian/rules podem ser encontradas em ficheiros sob /usr/share/dpkg/. A notar:
For example, you can add an extra option to CONFIGURE_FLAGS for linux-any target architectures by adding the following to 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).
Quando um novo tarball de lançamento de autor foo-novaversão.tar.gz é lançado, o pacote fonte Debian pode ser atualizado ao invocar comandos na árvore fonte antiga como:
$ uscan ... foo-newversion.tar.gz downloaded $ uupdate -v newversion ../foo-newversion.tar.gz
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:
$ dquilt push -a $ dquilt new bugname.patch $ dquilt add buggy_file $ vim buggy_file ... $ dquilt refresh $ dquilt header -e $ 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.
$ uscan; uupdate # updating to the new upstream release $ while dquilt push; do dquilt refresh ; done $ 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:
$ 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.6, “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. |
O ficheiro orig.tar.gz pode precisar de ser enviado para uma revisão Debian diferente de 0 ou 1 sob alguns casos excecionais (ex. para um envio de segurança).
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.
Quando você faz o primeiro envio do pacote para o arquivo, você tem de incluir a fonte orig.tar.gz original, também.
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 |
---|---|
Por outro lado, a opção -sd irá forçar a exclusão da fonte orig.tar.gz original. |
![]() | Dica |
---|---|
Envios de segurança requerem incluir o ficheiro orig.tar.gz. |
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. |