Table of Contents
Let’s describe more basics on Debian packaging.
All customization data for the Debian source package resides in the debian/ directory as presented in “Section 5.7, “Passo 3: Modificação dos ficheiros modelo””:
When these are not sufficient to make a good Debian package, -p1 patches of debian/patches/* files are deployed to modify the upstream source. These are applied in the sequence defined in the debian/patches/series file before building the package as presented in “Section 5.9, “Step 3 (alternatives): Modification to the upstream source””.
Você deve endereçar a causa raiz do problema de empacotamento Debian pela maneira menos invasiva. O pacote gerado será mais robusto para atualizações futuras neste modo.
![]() | Note |
---|---|
Envie a patch que endereça a causa raiz para o maintainer do autor se esta for útil para o autor. |
Flexible customization of the Section 6.5, “debian/rules file” is realized by adding appropriate override_dh_* targets and their rules.
Sempre que alguma operação especial é requerida para um certo comando dh_foo invocado pelo comando dh, qualquer execução automática dele 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:
If this is the case, you should add the override_dh_auto_build target with “dh_auto_build -- arguments”. This ensures passing arguments to the build system after the default parameters that dh_auto_build usually passes.
![]() | Tip |
---|---|
Please try not to execute the 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:
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 “Section 9.10, “Multiarch””, dpkg-architecture(1) e dpkg-buildflags(1).
When a new upstream release tarball foo-newvwesion.tar.gz is released, the Debian source package can be updated by invoking commands in the old source tree as:
$ uscan ... foo-newversion.tar.gz downloaded $ uupdate -v newversion ../foo-newversion.tar.gz
After the above, you should refresh debian/patches/* files (see “Section 8.5, “Manage patch queue with dquilt””) and update debian/changelog with the dch(1) command.
When “debian uupdate” is specified at the end of line in the debian/watch file, uscan automatically executes uupdate(1) after downloading the tarball.
You can add, drop, and refresh debian/patches/* files with dquilt to manage patch queue.
Add a new patch debian/patches/bugname.patch recording the upstream source modification on the file buggy_file as:
$ dquilt push -a $ dquilt new bugname.patch $ dquilt add buggy_file $ vim buggy_file ... $ dquilt refresh $ dquilt header -e $ dquilt pop -a
Drop (== disable) an existing patch
Refresh debian/patches/* files to make “dpkg-source -b” work as expected after updating a Debian package to the new upstream release.
$ uscan; uupdate # updating to the new upstream release $ while dquilt push; do dquilt refresh ; done $ dquilt pop -a
Here is a recap of popular low level package build commands. There are many ways to do the same thing.
The sbuild(1) command is a wrapper script of dpkg-buildpackage which builds Debian binary packages in a chroot environment managed by the schroot(1) command. For example, building for Debian unstable suite can be done as:
$ sudo sbuild -d unstable
In schroot(1) terminology, this builds a Debian package in a clean ephemeral chroot “chroot:unstable-amd64-sbuild” started as a copy of the clean minimal persistent chroot “source:unstable-amd64-sbuild”.
This build environment was set up as described in “Section 4.6, “sbuild setup”” with “sbuild-debian-developer-setup -s unstable” which essentially did the following:
$ 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 -
The schroot(1) configuration for unstable-amd64-sbuild was generated at /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:
You can update this source chroot “source:unstable-amd64-sbuild” by:
$ sudo sbuild-update -udcar unstable
You can log into this source chroot “source:unstable-amd64-sbuild” by:
$ sudo sbuild-shell unstable
![]() | Tip |
---|---|
If your source chroot filesystem is missing packages such as libeatmydata1, ccache, and lintian for your needs, you may want to install these by logging into it. |
The orig.tar.gz 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).
When an essential package becomes a non-essential one (e.g., adduser), you need to remove it manually from the existing chroot environment for its use by 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.
![]() | Tip |
---|---|
Por outro lado, a opção -sd irá forçar a exclusão da fonte orig.tar.gz original. |
![]() | Tip |
---|---|
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.
The reportbug(1) command used for the bug report of binarypackage can be customized by the files in usr/share/bug/binarypackage/.
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
See dh_bugfiles(1) and “reportbug’s Features for Developers (README.developers)”
![]() | Tip |
---|---|
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. |