Capítulo 4. Configurações de Ferramenta

# Capítulo 4. Configurações de Ferramenta

O pacote build-essential tem de ser instalado no ambiente de compilação.

O pacote devscripts deve ser instalado no ambiente de desenvolvimento do maintainer.

É boa ideia instalar e configurar todos os conjuntos de pacotes populares mencionados neste capítulo. Isto permite-nos partilhar uma base comum de ambiente de trabalho, apesar de este não ser um requerimento absolutamente necessário.

Por favor considere também instalar as ferramentas mencionadas em “Overview of Debian Maintainer Tools” no “Debian Developer’s Reference”, como necessário.

| Cuidado
As configurações de ferramenta apresentadas aqui servem apenas de exemplo e podem não estar atualizadas com os pacotes mais recentes no sistema. O desenvolvimento Debian é um alvo em movimento. Por favor certifique-se de ler a documentação pertinente e actualize a configuração se necessário.

## 4.1. Configuração do Email

Várias ferramentas de manutenção Debian reconhecem o seu endereço de email e nome a usar pelas variáveis de ambiente da shell $DEBEMAIL e $DEBFULLNAME.

Let’s set these environment variables by adding the following lines to \~/.bashrc [6].

Adicione ao ficheiro ~/.bashrc.

    DEBEMAIL="osamu@debian.org"
    DEBFULLNAME="Osamu Aoki"
    export DEBEMAIL DEBFULLNAME

| Nota
O que está em cima é para o autor deste manual. Os exemplos de configuração e operação apresentados neste manual usam essas definições de endereço de email e nome. Você tem de usar o seu endereço de email e seu nome para o seu sistema.

## 4.2. Configuração do mc

O comando mc oferece maneiras muito fáceis de gerir ficheiros. Ele pode abrir o ficheiro binário deb para verificar o seu conteúdo ao pressionar a tecla Enter sobre o ficheiro binário deb. Ele usa o comando dpkg-deb como seu back-end. Vamos configura-lo para usar chdir fácil como se segue.

Adicione ao ficheiro ~/.bashrc.

    # mc related
    if [ -f /usr/lib/mc/mc.sh ]; then
      . /usr/lib/mc/mc.sh
    fi

## 4.3. Configuração do git

Hoje em dia, o comando git e a ferramenta essencial para gerir a árvore fonte com histórico.

A configuração de utilizador global para o comando git como o seu nome e endereço de email pode ser definida em ~/.gitconfig como se segue.

    [~] $ git config --global user.name "Osamu Aoki"
    [~] $ git config --global user.email osamu@debian.org

Se você está muito acostumado aos comandos do CVS ou Subversion, pode desejar definir vários nomes alternativos de comandos como se segue.

    [~] $ git config --global alias.ci "commit -a"
    [~] $ git config --global alias.co checkout

Você pode verificar a sua configuração global como se segue.

    [~] $ git config --global --list

| Dica
É essencial usar algumas ferramentas GUI do git como gitk ou gitg para trabalha efectivamente com o histórico do repositório git.

## 4.4. Configuração do quilt

O comando quilt oferece um método básico de gravar modificações. Para o empacotamento Debian, deve ser personalizado para guardar modificações no directório debian/patches/ em vez de no seu directório predefinido patches/.

De modo a evitar alterar o comportamento do próprio comando quilt, vamos criar um nome alternativo dquilt para o empacotamento Debian ao adicionar as seguintes linhas ao ficheiro ~/.bashrc. A segunda linha fornece a mesma funcionalidade de completação da shell do comando quilt para o comando dquilt.

Adicione ao ficheiro ~/.bashrc.

    alias dquilt="quilt --quiltrc=${HOME}/.quiltrc-dpkg"
    . /usr/share/bash-completion/completions/quilt
    complete -F _quilt_completion $_quilt_complete_opt dquilt

Depois vamos criar ~/.quiltrc-dpkg como se segue.

    d=.
    while [ ! -d $d/debian -a `readlink -e $d` != / ];
        do d=$d/..; done
    if [ -d $d/debian ] && [ -z $QUILT_PATCHES ]; then
        # if in Debian packaging tree with unset $QUILT_PATCHES
        QUILT_PATCHES="debian/patches"
        QUILT_PATCH_OPTS="--reject-format=unified"
        QUILT_DIFF_ARGS="-p ab --no-timestamps --no-index --color=auto"
        QUILT_REFRESH_ARGS="-p ab --no-timestamps --no-index"
        QUILT_COLORS="diff_hdr=1;32:diff_add=1;34:diff_rem=1;31:diff_hunk=1;33:"
        QUILT_COLORS="${QUILT_COLORS}diff_ctx=35:diff_cctx=33"
        if ! [ -d $d/debian/patches ]; then mkdir $d/debian/patches; fi
    fi

Veja quilt(1) e “Como Sobreviver Com Muitas Patches ou Introdução ao Quilt (quilt.html)” sobre como usar o comando quilt.

Veja “Secção 5.9, “Passo 3 (alternativos): Modificação da fonte do autor”” para exemplos de utilização.

Note que o “gbp pq” é capaz de consumir debian/patches existentes, automatizar a actualização e modificação das patches, e exporta-las de volta para debian/patches, tudo sem usar o quilt nem a necessidade de prender ou configurar quilt.

## 4.5. openPGP setup

The gpg(1) command, included in the gnupg package, can be used to generate a new openPGP key for the Debian package activity as follows.

    [~] $ gpg --generate-key
    gpg (GnuPG) 2.4.7; Copyright (C) 2024 g10 Code GmbH
    ... [snip] ...
    public and secret key created and signed.

    pub   ed25519 2026-02-10 [SC] [expires: 2029-02-09]
          ABCDEF0123456789ABCDEF0123456789ABCDEF01
    uid                      Osamu Aoki  <osamu@debian.org>
    sub   cv25519 2026-02-10 [E] [expires: 2029-02-09]

This is an openPGP key based on the Elliptic-curve cryptography (ECC).

| Nota
If you already have an openPGP key based on the RSA cryptosystem signed by many others, you can use it.

You can edit and update this openPGP key with:

    [~] $ gpg --edit-key ABCDEF0123456789ABCDEF0123456789ABCDEF01
    ... [snip] ...
    gpg> save

For example, the resulting openPGP key may look like:

    [~] $ gpg --list-keys ABCDEF0123456789ABCDEF0123456789ABCDEF01
    pub   ed25519 2026-02-10 [SC]
          ABCDEF0123456789ABCDEF0123456789ABCDEF01
    uid           [ultimate] Osamu Aoki <osamu@debian.org>
    sub   cv25519 2026-02-10 [E] [expires: 2030-02-10]

| Nota
The term “GPG key” found in many Debian documents can be considered as a synonym of “openPGP key”.

For more on OpenPGP key, see:

- “Creating a new GPG key”
- “Debian wiki: Keysigning”
- “Debian wiki: Using OpenPGP subkeys in Debian development”
- “Debian wiki: FixKeyWithSha1”— updating old OpenPGP keys

## 4.6. Configuração do devscripts

The debsign command, included in the devscripts package, is used to sign the Debian package with your private openPGP key.

O comando debuild, incluído no pacote devscripts, compila o pacote binário e verifica-o com o comando lintian. É útil ter resultados detalhados gerados do comando lintian.

Você pode configurar estes no ~/.devscripts como se segue.

    DEBUILD_DPKG_BUILDPACKAGE_OPTS="-i -I -us -uc"
    DEBUILD_LINTIAN_OPTS="-i -I --show-overrides"
    DEBSIGN_KEYID="Your_openPGP_keyID"

As opções -i e -I em DEBUILD_DPKG_BUILDPACKAGE_OPTS para o comando dpkg-source ajuda na recompilação de pacotes Debian sem conteúdos estranhos (veja “Capítulo 8, Sanitização da fonte”).

## 4.7. Configuração do sbuild

O pacote sbuild fornece um ambiente de compilação (“chroot”) de sala limpa. Oferece isto eficientemente com a ajuda do schroot usando a funcionalidade bind-mount do kernel Linux moderno.

Como é o mesmo ambiente de compilação que a infraestrutura buildd de Debian, está sempre atualizado e vem completo de funcionalidades úteis.

Pode ser personalizado para oferecer as seguintes funcionalidades:

- O pacote schroot para ampliar a velocidade de criação da chroot.
- O pacote lintian para encontrar bugs no pacote.
- O pacote piuparts para encontrar bugs no pacote.
- O pacote autopkgtest para encontrar bugs no pacote.
- O pacote ccache para ampliar a velocidade do gcc. (opcional)
- O pacote libeatmydata1 para ampliar a velocidade do dpkg. (opcional)
- O make paralelo para ampliar a velocidade da compilação. (opcional)

Vamos configurar o ambiente sbuild [7]:

    [~] $ sudo apt install sbuild piuparts autopkgtest lintian
    [~] $ sudo apt install sbuild-debian-developer-setup
    [~] $ sudo sbuild-debian-developer-setup -s unstable

Vamos actualizar a sua adesão a grupos para incluir o sbuild e verifica-lo:

    [~] $ newgrp -
    [~] $ id
    uid=1000(<yourname>) gid=1000(<yourname>) groups=...,132(sbuild)

Aqui, “reiniciar o seu computador” ou “kill -TERM -1” pode ser usado para actualizar a sua adesão aos grupos [8] .

Let’s create the configuration file ~/.local/sbuild/config.pl in line with recent Debian practice of “source-only-upload” as:

    [~] $ cat >~/.local/sbuild/config.pl << 'EOF'
    ##############################################################################
    # PACKAGE BUILD RELATED (source-only-upload as default)
    ##############################################################################
    # -d
    $distribution = 'unstable';
    # -A
    $build_arch_all = 1;
    # -s
    $build_source = 1;
    # --source-only-changes
    $source_only_changes = 1;
    # -v
    $verbose = 1;

    ##############################################################################
    # POST-BUILD RELATED (turn off functionality by setting variables to 0)
    ##############################################################################
    $run_lintian = 1;
    $lintian_opts = ['-i', '-I'];
    $run_piuparts = 1;
    $piuparts_opts = ['--schroot', 'unstable-amd64-sbuild'];
    $run_autopkgtest = 1;
    $autopkgtest_root_args = '';
    $autopkgtest_opts = [ '--', 'schroot', '%r-%a-sbuild' ];

    ##############################################################################
    # PERL MAGIC
    ##############################################################################
    1;
    EOF

| Nota
Existem alguns casos excecionais como NOVOS envios, envios com NOVOS pacotes binários, e envios de segurança onde não vai poder fazer envio-apenas-fonte mas será necessário enviar com pacotes binários. A configuração de cima precisa de ser ajustada para esses casos excecionais.

| Dica
You may need to add “$chroot_mode = "schroot";” to ~/.local/sbuild/config.pl for piuparts if it doesn’t work well under unshare. See Debian bug: #1125784 and #1126127.

O documento seguinte assume que o sbuild está configurado deste modo.

Edite isto à sua necessidade. Os testes pós-compilação pode ser ligados e desligados ao atribuir 1 ou 0 às variáveis correspondentes,

| Atenção
A personalização opcional pode causar efeitos negativos. Em caso de dúvidas. desative-a.

| Nota
O make paralelo pode falhar para alguns pacotes existentes e pode tornar o relatório de compilação difícil de ler.

| Dica
Muitas dicas relacionadas com sbuild estão disponíveis em “Secção 9.7, “Nota sobre o sbuild”” e “https://wiki.debian.org/sbuild” .

## 4.8. Configuração chroot persistente

| Nota
O uso de sistema de ficheiros chroot copiado independente previne a contaminação do chroot fonte usado pelo sbuild.

Para compilar novos pacotes experimentais ou para depurar pacotes bugados, vamos configurar um chroot persistente dedicado “source:unstable-amd64-desktop” ao:

    [~] $ sudo cp -a /srv/chroot/unstable-amd64-sbuild /srv/chroot/unstable-amd64-desktop
    [~] $ sudo tee /etc/schroot/chroot.d/unstable-amd64-desktop-XXXXXX << EOF
    [unstable-amd64-desktop]
    description=Debian sid/amd64 persistent chroot
    groups=root,sbuild
    root-groups=root,sbuild
    profile=desktop
    type=directory
    directory=/srv/chroot/unstable-amd64-desktop
    union-type=overlay
    EOF

Aqui, o perfil desktop é usado em vez do perfil sbuild. Por favor certifique que ajusta /etc/schroot/desktop/fstab para tornar o pacote fonte acessível a partir do interior da chroot.

Você pode iniciar sessão nesta chroot “source:unstable-amd64-desktop” com:

    [~] $ sudo schroot -c source:unstable-amd64-desktop

## 4.9. Configuração do gbp

O pacote git-buildpackage oferece o comando gbp(1). O seu ficheiro de configuração de utilizador é ~/.gbp.conf.

    # Configuration file for "gbp <command>"

    [DEFAULT]
    # the default build command:
    builder = sbuild
    # use pristine-tar:
    pristine-tar = True
    # Use color when on a terminal, alternatives: on/true, off/false or auto
    color = auto

## 4.10. Proxy HTTP

Você deve configurar um proxy de cache HTTP local para poupar na largura de banda para o acesso ao repositório de pacotes Debian. Existem várias escolhas:

- O proxy de cache HTTP especializado usando o pacote apt-cacher-ng.
- O proxy de cache HTTP genérico (pacote squid) configurado pelo pacote squid-deb-proxy

De modo a usar este proxy HTTP sem ajustes manuais de configuração, é boa ideia instalar o pacote auto-apt-proxy ou squid-deb-proxy-client em todo lado.

## 4.11. Repositório Debian privado

Você pode definir um repositório de pacotes Debian privado com o pacote reprepro.

## 4.12. Máquinas virtuais

Para testar aplicações GUI, é boa ideia ter máquinas virtuais. Instale os pacotes virt-manager e qemu-kvm.

O uso de chroot e máquinas virtuais permite-nos não termos de actualizar o PC anfitrião para suite unstable mais recente.

## 4.13. Rede local com máquinas virtuais

De modo a aceder facilmente a máquinas virtuais numa rede local, é boa ideia configurar uma infraestrutura de descoberta de serviços DNS multicast ao instalar o avahi-utils.

Para todas as máquinas virtuais a correr e o PC anfitrião, nós podemos usar cada nome de máquina acrescentado com .local para o SSH para aceder a cada uma.

[6] This assumes you are using Bash as your login shell. If you use some other login shell such as Z shell, use their corresponding configuration files instead of \~/.bashrc.

[7] Tenha cuidado pois alguns HOWTOs antigos podem usar diferentes configurações de chroot.

[8] Simplesmente o “terminar e iniciar sessão sob alguns ambientes GUI Desktop modernos” pode não actualizar a sua adesão a grupos.

Capítulo 3. Pré-requisitos |  | Capítulo 5. Empacotamento simples