Capítulo 6. Bases para empacotamento

# Capítulo 6. Bases para empacotamento

Aqui, é apresentada aqui uma visão geral extensa sem se usar operações VCS para as regras básicas do empacotamento Debian focando-se no pacote Debian não-nativo no formato “3.0 (quilt)”.

| Nota
Alguns detalhes são saltados intencionalmente para clarificar. Por favor leia os manuais do dpkg-source(1), dpkg-buildpackage(1), dpkg(1), dpkg-deb(1), deb(5), etc.

O pacote fonte Debian é um conjunto de ficheiros de entrada usados para compilar o pacote binário Debian e não é um ficheiro único.

O pacote binário Debian é um ficheiro de arquivo especial que contém um conjunto de dados binários instaláveis com a sua informação associada.

Um único pacote fonte Debian pode gerar múltiplos pacotes binário Debian definidos no ficheiro debian/control.

O pacote Debian não-nativo no formato fonte Debian “3.0 (quilt)” é o formato mais normal de pacote fonte Debian.

| Nota
Existem muitos scripts invólucro. Use-os para simplificar o seu fluxo de trabalho mas certifique-se que compreende as suas bases internas.

## 6.1. Fluxo de trabalho de empacotamento

O fluxo de trabalho de empacotamento Debian para criar um pacote binário Debian involve gerar vários ficheiros nomeados especificamente (veja “Secção 6.3, “Nome e versão do pacote””) como definido no “Manual de Política Debian”. Este fluxo de trabalho pode ser resumido em 10 passos com alguma simplificação como se segue.

1. The upstream tarball is downloaded as the package-version.tar.xz file.
2. O tarball de autor é descompactado para criar muitos ficheiros sob o directório pacote-versão/.

3. The upstream tarball is copied (or symlinked) to the particular filename packagename_version.orig.tar.xz.

   - o caractere que separa pacote e versão é alterado de - (hífen) para _ (underscore)
   - é adicionado .orig à extensão do ficheiro.

4. Os ficheiros de especificação de pacote Debian são adicionados à fonte do autor sob o directório pacote-versão/debian/.

   - Ficheiros de especificação requeridos sob o directório debian/:

     debian/rules
       O script executável para compilar o pacote Debian (veja “Secção 6.5, “Ficheiro debian/rules””)
     debian/control
       O ficheiro de configuração do pacote que contém o nome do pacote fonte, as dependências de compilação da fonte, o nome do pacote binário, as dependências binárias, etc. (veja “Secção 6.6, “Ficheiro debian/control””)
     debian/changelog
       O ficheiro de histórico de pacote Debian que define a versão de pacote do autor e a revisão Debian na sua primeira linha (veja “Secção 6.7, “Ficheiro debian/changelog””)
     debian/copyright
       O resumo de copyright e licença (veja “Secção 6.8, “Ficheiro debian/copyright””)
     debian/source/format
       This indicates the desired format to dpkg-source(1) (see Debian wiki: “DebSrc3.0”)
   - Ficheiros de especificação opcionais sob debian/* (veja “Secção 6.14, “Outros ficheiros debian/*””):
   - Estes ficheiros têm de ser editados manualmente à sua perfeição de acordo com o “Manual Debian de Política Debian” e “Debian Developer’s Reference”.

5. O comando dpkg-buildpackage (geralmente a partir do seu invólucro debuild ou sbuild) é invocado no directório pacote-versão/ para criar a fonte Debian e os pacotes binário ao invocar o script debian/rules.

   - O directório actual é definido como: “CURDIR=/caminho/para/pacote-versão/”

   - Criar o pacote fonte Debian no formato fonte Debian “3.0 (quilt)” usando o dpkg-source(1)

     - package_version.orig.tar.xz (copy or symlink of package-version.tar.xz)
     - pacote_versão-revisão.debian.tar.xz (tarball de debian/ encontrado em pacote-versão//)
     - pacote_versão-revisão.dsc

   - Compila a fonte usando “debian/rules build” na $(DESTDIR)

     - “DESTDIR=debian/pacote-binário/” para pacote binário único [11]
     - “DESTDIR=debian/tmp/” (para pacote de múltiplos binários)

   - Cria o pacote binário Debian usando dpkg-deb(1), dpkg-genbuildinfo(1), e dpkg-genchanges(1).

     - pacotebinário_versão-revisão_arch.deb
     - … (Podem existir múltiplos ficheiros de pacote binário Debian.)
     - pacote_versão-revisão_arch.changes
     - pacote_versão-revisão_arch.buildinfo

6. Verifica a qualidade do pacote Debian com o comando lintian. (recomendado)

   - Segue as diretrizes de rejeição a partir de ftp-master.

     - “REJECT-FAQ”
     - “NOVA lista de verificação”
     - “Auto-rejeições do Lintian” (“lista de etiquetas do lintian”)
7. Teste a fiabilidade do pacote binário Debian gerado manualmente ao instala-lo e ao correr os seus programas.
8. Após confirmar a fiabilidade, prepare os ficheiros para o envio apenas-fonte normal para o arquivo Debian.

9. Sign the Debian package file with the debsign command using your private openPGP key.

   - Use “debsign package_version-revision_source.changes” (source-only upload situation)
   - Use “debsign package_version-revision_arch.changes” (source+binary upload situation)

10. Envie o conjunto de ficheiros de pacote Debian com o comando dput para o arquivo Debian.

    - Use “dput pacote_versão-revisão_source.changes” (envio apenas-fonte)
    - Use “dput package_version-revision_arch.changes” (source+binary upload)

O testar da compilação e confirmar da fiabilidade do pacote binário como em cima é obrigação moral como um desenvolvedor Debian diligente mas neste momento não há barreira física para as pessoas saltarem tais operações para o envio apenas-fonte.

For the upstream tarball, the debmake command helps up to the step 4 in the above workflow. For the upstream working tree package/ checked out, e.g., by “git clone https://github.com/upstreamname/package.git” without any upstream tarball, the debmake command invoked in it helps up to step 4, too. The debmake command does not overwrite any existing configuration files.

Aqui, por favor substitua cada parte do nome de ficheiro como:

- a parte pacote pelo nome de pacote fonte Debian
- a parte pacotebinário pelo nome do pacote binário Debian
- a parte versão pela versão do autor
- a parte revisão pela revisão Debian
- a parte arch pela arquitectura do pacote (ex., amd64)

The current Debian practice for uploading the normal Debian package is:

- Use the source-only upload if all generated binary packages exist in the Debian sid archive. This is usual case.
- Use the source+binary upload if any one of generated packages is missing in the Debian sid archive. (This involves manually handled NEW process by the archive management team.)

Veja também “Envios apenas-fonte”.

| Dica
São praticadas muitas estratégias de gestão de patch e utilização de VCS para o empacotamento Debian. Você não precisa de as usar todas.

| Dica
Existe documentação muito extensiva em “Capítulo 6. Melhores Práticas de Empacotamento” no “Debian Developer’s Reference”. Por favor leia-o.

## 6.2. Pacote debhelper

Apesar de se poder fazer um pacote Debian escrevendo um script debian/rules sem se usar o pacote debhelper, é impraticável fazê-lo. Existem demasiadas funcionalidades requeridas pela “Política Debian” moderna a serem observadas, como a aplicação de permissões de ficheiros apropriadas, uso do caminho apropriado de instalação de bibliotecas dependentes da arquitectura, inserção de scripts hook de instalação, geração do pacote de símbolos de depuração, geração da informação de dependências do pacote, geração dos ficheiros de informação do pacote, aplicação do registo temporal apropriado para compilação reproduzível, etc.

O pacote Debhelper fornece um conjunto de scripts úteis de modo a simplificar o fluxo de trabalho do empacotamento Debian e reduzir o fardo dos maintainers de pacotes. Quando usados de modo apropriado, eles irão ajudar os empacotadores a lidar e implementar funcionalidades requeridas pela “Política Debian” automaticamente.

O fluxo de trabalho de empacotamento Debian moderno pode ser organizado num fluxo de trabalho simples modular ao:

- usar o comando dh para invocar muitos scripts utilitários automaticamente a partir do pacote debhelper, e
- configurar o seu comportamento com ficheiros de configuração declarativos no directório debian/.

Você deve quase sempre usar o debhelper como sua dependência de compilação do pacote. Este documento também assume que você está a usar uma versão razoavelmente contemporânea do debhelper para lidar com os trabalhos de empacotamento nos seguintes contextos.

| Nota
Para debhelper “compat >= 9”, o comando dh exporta as bandeiras de compilação (CFLAGS, CXXFLAGS, FFLAGS, CPPFLAGS e LDFLAGS) com valores como retornados por dpkg-buildflags se não estiverem definidas previamente. (O comando dh chama set_buildflags definido no módulo Debian::Debhelper::Dh_Lib.)

| Nota
O debhelper(1) muda o seu comportamento com o tempo. Por favor certifique-se de ler debhelper-compat-upgrade-checklist(7) para compreender a situação.

## 6.3. Nome e versão do pacote

If the upstream source comes as hello-0.9.12.tar.xz, you can take hello as the upstream source package name and 0.9.12 as the upstream version.

Existem algumas limitações para quais caracteres podem ser usados como parte do pacote Debian. A limitação mais notável é a proibição de letras maiúsculas no nome do pacote. Aqui está um sumário como um conjunto de expressões regulares:

- Nome de pacote do autor (-p): `[-+.a-z0-9]{2,}`
- Nome de pacote binário (-b): `[-+.a-z0-9]{2,}`
- Versão do autor (-u): `[0-9][-+.:~a-z0-9A-Z]*`
- Revisão Debian (-r): `[0-9][+.~a-z0-9A-Z]*`

Veja a definição exacta em “Capítulo 5 - Ficheiros de controle e seus campos” no “Manual de Política Debian”.

Você tem de ajustar o nome do pacote e a versão do autor de acordo com o empacotamento Debian.

De modo a se gerir efectivamente o nome do pacote e a informação da versão sob ferramentas populares como o comando aptitude, é boa ideia manter o comprimento do nome do pacote a ser igual ou menor que 30 caracteres, e o comprimento total da versão e revisão a ser igual ou menor que 14 caracteres. [12]

De modo a evitar colisões de nomes, o nome de pacote binário visível ao utilizador não deve ser escolhido a partir de nenhumas palavras genéricas.

Se o autor não usar um esquema normal de indicação da versão como 2.30.32 mas usa algum tipo da data como 11Apr29, uma string aleatória de código, ou um valor hash VCS como parte da a versão, certifique-se de a remover da versão de autor. Tal informação pode ser guardada no ficheiro debian/changelog. Se você precisa de inventar uma string de versão, use o formato AAAAMMDD tal como 20110429 como versão do autor. Isto assegura que o comando dpkg interpreta as versões posteriores corretamente como atualizações. Se você precisa de assegurar uma transição suave para um esquema normal de versão como 0.1 no futuro, então use o formato 0~AAMMDD como ex 0~110429 como versão do autor.

As strings de versão podem ser comparadas usando o comando dpkg como se segue.

    [~] $ dpkg --compare-versions ver1 op ver2

A regra de comparação de versão pode ser resumida a:

- As strings são comparadas desde o inicio para o fim.
- As letras são mais largas que os dígitos.
- Números são comparados como inteiros.
- As letras são comparadas em ordem de código ASCII.

Existem regras especiais para os caracteres ponto (.), mais (+), e til (~), como se segue.

    0.0 < 0.5 < 0.10 < 0.99 < 1 < 1.0~rc1 < 1.0 < 1.0+b1 < 1.0+nmu1 < 1.1 < 2.0

One tricky case occurs when the upstream releases hello-0.9.12-ReleaseCandidate-99.tar.xz as the pre-release of hello-0.9.12.tar.xz. You can ensure the Debian package upgrade to work properly by renaming the upstream source to hello-0.9.12~rc99.tar.xz.

## 6.4. Pacote Debian nativo

O pacote Debian não-nativo no formato “ “3.0 (quilt)” é o formato de pacote fonte Debian mais normal, O ficheiro debian/source/format deve ter “3.0 (quilt)” nele como descrito em dpkg-source(1). O fluxo de trabalho em cima e os exemplos de empacotamento seguintes usam sempre este formato.

O pacote Debian nativo é o formato de pacote binário Debian raro. Só pode ser usando quando o pacote é útil e valoroso apenas para Debian. Assim , o seu uso é geralmente desencorajado.

| Cuidado
A native Debian package is often accidentally built when its upstream tarball is not accessible from the dpkg-buildpackage command with its correct name package_version.orig.tar.xz . This is a typical newbie mistake caused by making a symlink name with “-” instead of the correct one with “_”.

Um pacote nativo Debian não tem separação entre o código do autor e as modificações Debian e consistem apenas do seguinte:

- package_version.tar.xz (copy or symlink of package-version.tar.xz with debian/* files.)
- pacote_versão.dsc

Se você precisa criar um pacote Debian nativo, crie-o no formato fonte Debian “3.0 (native)” usando o dpkg-source(1).

| Dica
Não há necessidade de criar o tarball antes se for usado o formato de pacote nativo Debian. O ficheiro debian/source/format deve ter “3.0 (native)” nele como descrito em dpkg-source(1) e o ficheiro debian/source/format deve ter a versão sem a revisão Debian (1.0 em vez de 1.0-1). Depois, o tarball que contém é gerado quando “dpkg-source -b” for invocado na árvore fonte.

## 6.5. Ficheiro debian/rules

O ficheiro debian/rules é o script executável que redireciona o sistema de compilação do autor para instalar ficheiros em $(DESTDIR) e cria o ficheiro arquivo dos ficheiros gerados como o ficheiro deb. O ficheiro deb é usado para a distribuição binária e instalado no sistema usando o comando dpkg.

O ficheiro debian/rules compatível com a política Debian e que suporta todos os alvos requeridos pode ser escrito tão simplesmente como [13]:

debian/rules simples:

    #!/usr/bin/make -f
    #export DH_VERBOSE = 1

    %:
    	dh $@

O comando dh funciona como o sequenciador para chamar todos os comandos “dh target” requeridos no momento certo. [14]

- dh clean : limpa ficheiros na árvore fonte.
- dh build : compila a árvore fonte
- dh build-arch : compila a árvore fonte para pacotes dependentes da arquitectura
- dh build-indep : compila a árvore fonte para pacotes independentes da arquitectura
- dh install : instala os ficheiros binário em $(DESTDIR)
- dh install-arch : instala os ficheiros binário em $(DESTDIR) para pacotes dependentes da arquitectura
- dh install-indep : instala os ficheiros binário em $(DESTDIR) para pacotes independentes da arquitectura
- dh binary : gera o ficheiro deb
- dh binary-arch : gera o ficheiro deb para pacotes dependentes de arquitectura
- dh binary-indep : gera o ficheiro deb para pacotes independentes da arquitectura

Aqui, o caminho $(DESTDIR) depende do tipo de compilação.

- “DESTDIR=debian/pacote-binário/” para pacote binário único [15]
- “DESTDIR=debian/tmp/” (para pacote de múltiplos binários)

Veja “Secção 9.2, “debian/rules personalizado”” e “Secção 9.3, “Variáveis para debian/rules”” para personalização.

| Dica
Definir “export DH_VERBOSE = 1” faz escrever cada comando que modifica ficheiros no sistema de compilação. Também ativa registos de compilação detalhados para alguns sistemas de compilação.

## 6.6. Ficheiro debian/control

O ficheiro debian/control consiste de blocos de metadados separados por linhas vazias. Cada bloco de metadados define o seguinte por esta ordem:

- meta-dados para os pacotes fonte Debian
- meta-dados para os pacotes binário Debian

Veja “Capítulo 5 - Ficheiros control e seus campos” do "Manual de Política Debian" para a definição de cada campo de metadados.

| Nota
O comando debmake define o ficheiro debian/control com “Build-Depends: debhelper-compat (= 14)” para definir o nível de compatibilidade do debhelper.

| Dica
Se um pacote existente tem um nível de compatibilidade do debhelper inferior a 14, é provavelmente hora de actualizar o seu empacotamento.

## 6.7. Ficheiro debian/changelog

O ficheiro debian/changelog regista o histórico do pacote Debian.

- Edite este ficheiro usando o comando debchange (nome alternativo dch).
- A primeira linha define a versão de pacote do autor e a revisão Debian.

- Documente as alterações num estilo específico, formal, e conciso.

  - Se a modificação do maintainer Debian corrigir bugs reportados, adicione “Closes: #<número_bug>” para fechar esses bugs.

- Mesmo que seja você próprio a enviar o seu pacote, você tem de documentar todas as alterações não-triviais visíveis-ao-utilizador, tais como:

  - Correções de bugs relacionada com segurança.
  - Alterações à interface de utilizador.

- Se você está a pedir a um patrocinador para o enviar, documente as alterações de forma mais compreensiva, incluindo todas as relacionadas com o empacotamento, para ajudar na revisão do seu pacote.

  - O patrocinador não deve ter de adivinhar o seu raciocínio por de trás das alterações ao pacote.
  - Lembre-se que o tempo do patrocinador é valioso.

Após terminar o seu empacotamento e verificar a sua qualidade, execute o comando "dch -r" e guarde o ficheiro debian/changelog finalizado com a suite normalmente definida para unstable. [16] Se você está a empacotar para backports, security updates, LTS, etc., então use os nomes de distribuição apropriados.

O comando debmake cria o ficheiro modelo inicial com a versão do pacote de autor e a revisão Debian. A distribuição é definida para UNRELEASED para prevenir envios acidentais para o arquivo Debian.

| Dica
A string de data usada no ficheiro debian/changelog pode ser gerada manualmente pelo comando “LC_ALL=C date -R”.

| Dica
Use uma entrada no debian/changelog com uma string de versão como 1.0.1-1~rc1 quando experimentar. Depois, consolide tais entradas changelog numa entrada única para o pacote oficial.

O ficheiro debian/changelog é instalado no directório /usr/share/doc/pacotebinário como changelog.Debian.gz pelo comando dh_installchangelogs.

O registo de alterações do autor é instalado no directório /usr/share/doc/pacotebinário como changelog.gz.

O registo de alterações do autor é descoberto automaticamente pelo dh_installchangelogs usando a correspondência não sensível a maiúsculas minúsculas do seu nome de ficheiro para changelog, changes, changelog.txt, changes.txt, history, history.txt, ou changelog.md e procurado nos directórios ./ doc/ ou docs/.

## 6.8. Ficheiro debian/copyright

Debian leva o copyright e a licença muito a sério. O "Manual de Política Debian" requer um resumo deles no ficheiro debian/copyright do pacote.

- “12.5. Informação de Copyright”
- “2.3. Considerações de Copyright”
- “Informação de Licença”

O comando debmake cria o ficheiro modelo inicial debian/copyright usando o comando licensecheck(1).

## 6.9. Ficheiros debian/patches/*

Como demonstrado em “Secção 5.9, “Passo 3 (alternativos): Modificação da fonte do autor””, o directório debian/patches/ contém

- ficheiros nome-ficheiro-patch.patch que fornecem patches -p1 e
- o ficheiro series o qual define como estas patches são aplicadas.

Veja como estes ficheiros são usados em:

- “Secção 13.6, “dpkg-source -b”” para compilar o pacote fonte Debian
- “Secção 13.7, “dpkg-source -x”” para extrair ficheiros fonte a partir do pacote fonte Debian

| Nota
Os textos de cabeçalho destas patches devem estar em conformidade com “DEP-3”.

| Nota
Se você quer usar ferramentas VCS como git, gbp e dgit para criar e gerir estas patches após aprender as bases aqui, por favor depois consulte “Capítulo 11, Empacotar com git”.

## 6.10. Ficheiro debian/source/include-binaries

The “dpkg-source --commit” command functions like dquilt but has one advantage over the dquilt command. The dquilt command can’t handle modified binary files since they are not representable in a diff. Also, adding binary files under the debian/ directory is normally rejected by dpkg-source. By listing these binary files in debian/source/include-binaries, the maintainer can include these binary files to the Debian source package generated by dpkg-source.

## 6.11. Ficheiro debian/watch

| Nota
This file is for use by the Debian non-native package.

O comando uscan(1) descarrega a versão de autor mais recente usando o ficheiro debian/watch. Ex.:

Ficheiro debian/watch básico:

    version=4
    https://ftp.gnu.org/gnu/hello/ @PACKAGE@@ANY_VERSION@@ARCHIVE_EXT@

O comando uscan pode verificar a autenticidade do tarball de autor com configuração opcional (veja “Secção 6.12, “Ficheiro debian/upstream/signing-key.asc””).

Veja uscan(1), “Secção 9.4, “Novo lançamento do autor””, “Secção 8.1, “Corrige com Files-Excluded””, e “Secção 11.7, “Gerir a lista de patch com gbp-pq”” para mais.

## 6.12. Ficheiro debian/upstream/signing-key.asc

Some packages are signed by a openPGP key and their authenticity can be verified using their public openPGP key.

Por exemplo, “GNU hello” pode ser descarregado via HTTP de https://ftp.gnu.org/gnu/hello/. Existem conjuntos de ficheiros:

- hello-version.tar.xz (upstream source)
- hello-version.tar.xz.sig (detached signature)

Vamos pegar no conjunto da versão mais recente.

Descarrega o tarball de autor e a sua assinatura.

    [base_dir] $ wget https://ftp.gnu.org/gnu/hello/hello-2.9.tar.xz
     ...
    [base_dir] $ wget https://ftp.gnu.org/gnu/hello/hello-2.9.tar.xz.sig
     ...
    [base_dir] $ gpg --verify hello-2.9.tar.xz.sig
    gpg: Signature made Thu 10 Oct 2013 08:49:23 AM JST using DSA key ID 80EE4A00
    gpg: Can't check signature: public key not found

If you know the public openPGP key of the upstream maintainer from the mailing list, use it as the debian/upstream/signing-key.asc file. Otherwise, use the hkp keyserver and check it via your web of trust.

Download public openPGP key for the upstream.

    [base_dir] $ gpg --keyserver hkp://keys.gnupg.net --recv-key 80EE4A00
    gpg: requesting key 80EE4A00 from hkp server keys.gnupg.net
    gpg: key 80EE4A00: public key "Reuben Thomas <rrt@sc3d.org>" imported
    gpg: no ultimately trusted keys found
    gpg: Total number processed: 1
    gpg:               imported: 1
    [base_dir] $ gpg --verify hello-2.9.tar.xz.sig
    gpg: Signature made Thu 10 Oct 2013 08:49:23 AM JST using DSA key ID 80EE4A00
    gpg: Good signature from "Reuben Thomas <rrt@sc3d.org>"
      ...
    Primary key fingerprint: 9297 8852 A62F A5E2 85B2  A174 6808 9F73 80EE 4A00

| Dica
Se o seu ambiente de rede bloquear o acesso ao porto HKP 11371, então use “hkp://keyserver.ubuntu.com:80”.

Após confirmar que o ID de chave 80EE4A00 é de confiança, descarregue a sua chave pública para o ficheiro debian/upstream/signing-key.asc.

Set public openPGP key to debian/upstream/signing-key.asc.

    [base_dir] $ gpg --armor --export 80EE4A00 >debian/upstream/signing-key.asc

Com o ficheiro debian/upstream/signing-key.asc em cima e o ficheiro debian/watch seguinte, o comando uscan consegue verificar a autenticidade do tarball de autor após a sua descarga. Ex.:

Improved debian/watch file with openPGP support:

    version=4
    opts="pgpsigurlmangle=s/$/.sig/" \
    https://ftp.gnu.org/gnu/hello/ @PACKAGE@@ANY_VERSION@@ARCHIVE_EXT@

## 6.13. Ficheiro debian/salsa-ci.yml

Instale o ficheiro de configuração Salsa CI. Veja “Secção 11.3, “Serviço CI de Salsa””.

## 6.14. Outros ficheiros debian/*

Podem ser adicionados ficheiros de configuração opcionais sob o directório debian/. A maioria deles são comandos de controle dh_* oferecidos pelo pacote debhelper mas existem alguns para os comandos dpkg-source, lintian e gbp.

| Dica
Mesmo uma fonte de autor sem o seu sistema de compilação pode ser empacotada apenas usando estes ficheiros. Veja “Secção 14.2, “Nenhum Makefile (shell, CLI)”” como um exemplo.

A lista alfabética de ficheiros de configuração opcionais notáveis debian/pacotebinário.* listados em baixo fornece meios muito poderosos de definir o caminho de instalação dos ficheiros. Por favor note:

- A notação de superscript “-x[01234]” que aparece na seguinte lista indica o valor mínimo para a opção -x do debmake que gera o ficheiro modelo associado. Veja “Secção 16.4, “debmake -x”” ou debmake(1) para detalhes.
- Para um pacote binário único, a parte “pacote-binário” do nome de ficheiro na lista pode ser removida.
- Para um pacote multi-binário, um ficheiro de configuração onde falta a parte “pacote-binário” no nome de ficheiro é aplicado ao primeiro pacote binário listado em debian/control.
- Quando existem muitos pacotes binários, a suas configurações podem ser especificadas independentemente ao prefixar o seu nome aos seus nomes de ficheiros de configuração tal como “pacote-1.install”, “pacote-2.install”, etc.
- Alguns ficheiros de configuração modelo podem não ser criados pelo comando debmake. Em tais casos, você precisa de cria-los com um editor.
- Alguns ficheiros modelo de configuração gerados pelo comando debmake com um sufixo .ex extra precisam de ser activados ao remover esse sufixo.
- The debmake -B command adds template files with an extra .ex suffix for all existing template files without .ex and they need to be activated by removing that suffix.
- Ficheiros modelo de configuração não usados gerados pelo comando debmake devem ser removidos.

- Copie ficheiros modelo de configuração como necessário para que os nomes de ficheiros correspondam aos seus nomes de pacote binário pertinentes.

  binarypackage.bug-control -x2
    instalado como usr/share/bug/pacotebinário/control em pacotebinário. Veja “Secção 9.11, “Relatórios de bug””.
  binarypackage.bug-presubj -x2
    instalado como usr/share/bug/pacotebinário/presubj em pacotebinário. Veja “Secção 9.11, “Relatórios de bug””.
  binarypackage.bug-script -x2
    instalado como usr/share/bug/pacotebinário ou usr/share/bug/pacotebinário/script em pacotebinário. Veja “Secção 9.11, “Relatórios de bug””.
  pacotebinário.bash-completion

    Lista scripts de completação bash a serem instalados.

    O pacote bash-completion é requerido para ambos ambientes de compilação e utilizador.

    Veja dh_bash-completion(1).

  clean -x1

    Lista ficheiros que devem ser removidos mas não são limpos pelo comando dh_auto_clean.

    Veja dh_auto_clean(1) e dh_clean(1).

  compat -x4

    Define o nível de compatibilidade do debhelper. (descontinuado)

    Use “Build-Depends: debhelper-compat (= 14)” em debian/control para especificar o nível de compatibilidade e remova debian/compat.

    Veja “NÍVEIS DE COMPATIBILIDADE” no debhelper(7).

  pacote-binário.conffiles -x3

    Este ficheiro opcional é instalado no directório DEBIAN dentro do pacote binário enquanto o suplementa com todos os ficheiros de configuração auto-detetados pelo debhelper.

    Este ficheiro é principalmente útil para se usar entradas "especiais" como a funcionalidade remove-on-upgrade do dpkg(1).

    Se o programa que você está a empacotar requerer que cada utilizador modifique os ficheiros de configuração no directório /etc, existem duas maneiras populares de fazer com que não sejam ficheiros de configuração, mantendo o comando dpkg contente e caladinho.

    - Cria um link simbólico sob o directório /etc a apontar para um ficheiro sob o directório /var gerado pelos scripts do maintainer.
    - Cria um ficheiro gerado pelos scripts do maintainer sob o directório /etc.

    Veja dh_installdeb(1).

  pacote-binário.config
    Este é o script config do debconf usado para perguntar quaisquer questões necessárias para configurar o pacote. Veja “Secção 10.22, “debconf””.
  pacote-binário.cron.hourly -x3

    Instalado no ficheiro etc/cron/hourly/pacote-binário em pacote-binário.

    Veja dh_installcron(1) e cron(8).

  pacote-binário.cron.daily -x3

    Instalado no ficheiro etc/cron/daily/pacote-binário em pacote-binário.

    Veja dh_installcron(1) e cron(8).

  pacote-binário.cron.weekly -x3

    Instalado no ficheiro etc/cron/weekly/pacote-binário em pacote-binário.

    Veja dh_installcron(1) e cron(8).

  pacote-binário.cron.monthly -x3

    Instalado no ficheiro *etc/cron/monthly/*pacote-binário em pacote-binário.

    Veja dh_installcron(1) e cron(8).

  pacote-binário.cron.d -x3

    Instalado no ficheiro etc/cron.d/pacote-binário em pacote-binário.

    Veja dh_installcron(1), cron(8), e crontab(5).

  pacote-binário.default -x3

    Se isto existir, é instalado em etc/default/pacote-binário em pacote-binário.

    Veja dh_installinit(1).

  pacote-binário.dirs -x1

    Lista directórios a serem criados em pacote-binário.

    Veja dh_installdirs(1).

    Geralmente, isto não é necessário pois todos os comandos dh_install* criam os directórios requeridos automaticamente. Use isto apenas se encontrar problemas.

  pacote-binário.doc-base -x1

    Instalado como o ficheiro de controle do doc-base em pacote-binário.

    Veja dh_installdocs(1) e “Manual Debian doc-base (doc-base.html)” fornecido pelo pacote doc-base.

  pacote-binário.docs -x1

    Lista ficheiros de documentação a serem instalados em pacote-binário.

    Veja dh_installdocs(1).

  pacotebinário.emacsen-compat

    Instalado em usr/lib/emacsen-common/packages/compat/pacote-binário em pacote-binário.

    Veja dh_installemacsen(1).

  pacote-binário.emacsen-install -x3

    Instalado em usr/lib/emacsen-common/packages/install/pacote-binário em pacote-binário.

    Veja dh_installemacsen(1).

  pacote-binário.emacsen-remove -x3

    Instalado em usr/lib/emacsen-common/packages/remove/pacote-binário em pacote-binário.

    Veja dh_installemacsen(1).

  pacote-binário.emacsen-startup -x3

    Instalado em usr/lib/emacsen-common/packages/startup/pacote-binário em pacote-binário.

    Veja dh_installemacsen(1).

  pacote-binário.examples -x1

    Lista ficheiros ou directórios exemplo a serem instalados em usr/share/doc/pacote-binário/examples/ em pacote-binário.

    Veja dh_installexamples(1).

  gbp.conf -x1

    Se isto existir, funciona como ficheiro de configuração para o comando gbp.

    Veja gbp.conf(5), gbp(1), e git-buildpackage(1).

  pacote-binário.info -x1

    Lista ficheiros de informação a serem instalados em pacote-binário.

    Veja dh_installinfo(1).

  pacote-binário.init -x4

    Instalado em etc/init.d/pacote-binário em pacote-binário. (descontinuado)

    Veja dh_installinit(1).

  pacote-binário.install -x1

    Lista ficheiros que devem ser instalados mas não são instalados pelo comando dh_auto_install.

    Veja dh_install(1) e dh_auto_install(1).

  pacote-binário.links -x1

    Lista pares de ficheiros de fonte e destino para serem ligados por link simbólico. Cada par deve ser posto na sua própria linha, com a fonte e destino separados por espaço em branco.

    Veja dh_link(1).

  binarypackage.lintian-overrides -x2

    Instalado em usr/share/lintian/overrides/pacote-binário no directório de compilação do pacote. Este ficheiro é usado para suprimir diagnósticos do lintian erróneos.

    Veja dh_lintian(1), lintian(1) e “Manual do Utilizador de Lintian”.

  pacote-binário.maintscript -x2

    Se este ficheiro opcional existir, o debhelper usa-o como modelo para gerar ficheiros DEBIAN/pacotebinário.{pre,post}{inst,rm} dentro do pacote binário enquanto adiciona “-- "$@"” ao comando dpkg-maintscript-helper(1).

    Veja dh_installdeb(1) e “Capítulo 6 - Scripts de maintainer de pacote e procedimento de instalação” no “Manual de Política Debian”.

  manpage.* -x2

    Estes são ficheiros modelo de manuais gerados pelo comando debmake. Por favor renomeie estes para nomes de ficheiro apropriados e atualize o seu conteúdo.

    Debian Policy requires that each program, utility, and function should have an associated manual page included in the same package. Manual pages are written in nroff(1). If you are new to making a manpage, use manpage.asciidoc -x3 or manpage.1 -x3 as the starting point.

  pacote-binário.manpages -x1

    Lista os manuais a serem instalados.

    Veja dh_installman(1).

  pacote-binário.menu (descontinuado, não mais instalado)

    tech-ctte #741573 decidiu “Debian deve usar ficheiros .desktop como apropriado”.

    Ficheiro de menu Debian instalado em usr/share/menu/pacote-binário em pacote-binário.

    Veja menufile(5) para o seu formato. Veja dh_installmenu(1).

  NOVIDADES

    Instalado em usr/share/doc/pacote-binário/NEWS.Debian.

    Veja dh_installchangelogs(1).

  patches/*

    Coleção de ficheiros patch -p1 que são aplicados à fonte do autor antes de se compilar o pacote.

    Nenhuns ficheiros patch são gerados pelo comando debmake.

    Veja dpkg-source(1), “Secção 4.4, “Configuração do quilt”” e “Secção 5.9, “Passo 3 (alternativos): Modificação da fonte do autor””.

  patches/series -x1
    A sequência de aplicação dos ficheiros patch patches/*.
  pacotebinário.preinst -x3, pacotebinário.postinst -x3, pacotebinário.prerm -x3, pacotebinário.postrm -x3

    Se estes ficheiros opcionais existirem, os ficheiros correspondentes são instalados no directório DEBIAN dentro do pacote binário após enriquecido pelo debhelper. Caso contrário, estes ficheiros no directório DEBIAN dentro do pacote binário são gerados pelo debhelper.

    Sempre que possível, em vez disto deve ser usando um mais simples pacotebinário.maintscript.

    Veja dh_installdeb(1) e “Capítulo 6 - Scripts de maintainer de pacote e procedimento de instalação” no “Manual de Política Debian”.

    Veja também debconf-devel(7) e “3.9.1 Perguntando nos scripts do maintainer” no “Manual de Política Debian”.

  README.Debian -x1

    Instalado no primeiro pacote binário listado no ficheiro debian/control como usr/share/doc/pacote-binário/README.Debian.

    Este ficheiro fornece a informação especifica ao pacote Debian.

    Veja dh_installdocs(1).

  README.source -x1

    Instalado no primeiro pacote binário listado no ficheiro debian/control como usr/share/doc/pacote-binário/README.source.

    Se correr “dpkg-source -x” num pacote fonte não produz a fonte do pacote, pronto para editar, e permite-nos fazer alterações e correr dpkg-buildpackage para produzir um pacote modificado sem tomar nenhum passo adicional, é recomendado criar este ficheiro.

    Veja “Manual de Política Debian secção 4.14”.

  pacote-binário.service -x3

    Se isto existir, será instalado em lib/systemd/system/pacote-binário.service em pacote-binário.

    Veja dh_systemd_enable(1), dh_systemd_start(1), e dh_installinit(1).

  source/format -x1

    O formato de pacote Debian.

    - Use “3.0 (quilt)” to make this non-native package (popular)
    - Use “3.0 (native)” para tornar este pacote nativo.

    Veja “FORMATOS DE PACOTE FONTE” em dpkg-source(1).

  source/lintian-overrides -x2

    This file is not installed, but is scanned by the lintian command to provide overrides for the source package.

    Veja dh_lintian(1) e lintian(1).

  source/local-options and source/local-patch-header -x4

    | Nota
    These files are not compatible with the dgit workflow. See “Secção 11.14, “Nota sobre dgit””.

    There is no reason to use these with the current version of dpkg-source(1).

  source/options -x2

    The dpkg-source command uses this content as its options. This is typically used with “Secção 11.13, “Repositório Git de patch aplicada”” and options may be:

    - auto-commit
    - single-debian-patch

    This is included in the generated source package.

    Veja “FORMATOS DE FICHEIRO” em dpkg-source(1).

  source/patch-header -x2

    Texto de formato livre que é colocado no topo da patch automática gerada.

    This is included in the generated source package and is meant to be committed to the "`Secção 11.13, “Repositório Git de patch aplicada”`.".

    Veja “FORMATOS DE FICHEIRO” em dpkg-source(1).

  pacote-binário.symbols -x1

    Os ficheiros de símbolos, se presentes, são passados ao comando dpkg-gensymbols para serem processados e instalados.

    Veja dh_makeshlibs(1) e “Secção 10.16, “Símbolos de biblioteca””..

  binarypackage.templates
    Isto é o ficheiro de modelos debconf usado para fazer perguntas necessárias para configurar o pacote. Veja “Secção 10.22, “debconf””.
  tests/control -x1
    Isto é o ficheiro de meta-dados de teste estilo-RFC822 definido em DEP-8. Veja autopkgtest(1) e “Secção 10.4, “Integração contínua””.
  A FAZER

    Instalado no primeiro pacote binário listado no ficheiro debian/control como usr/share/doc/pacote-binário/TODO.Debian.

    Veja dh_installdocs(1).

  pacote-binário.tmpfile -x3

    Se isto existir, será instalado em usr/lib/tmpfiles.d/pacote-binário.conf em pacote-binário.

    Veja dh_systemd_enable(1), dh_systemd_start(1), e dh_installinit(1).

  pacote-binário.upstart -x4

    Se isto existir, será instalado em etc/init/package.conf no directório de compilação do pacotes. (descontinuado)

    Veja dh_installinit(1).

  upstream/metadata -x1
    Metadados por-pacote legível-por-máquina acerca do autor (DEP-12). Veja “Upstream MEtadata GAthered com YAml (UMEGAYA)”.

[11] Isto é a predefinição até ao debhelper v13. No debhelper v14, ele avisa sobre a mudança de predefinição. Após debhelper v15, irá mudar a predefinição para DESTDIR=debian/tmp/ .

[12] Para mais de 90% dos pacotes, o nome do pacote é igual ou menos que 24 caracteres; a versão de autor é igual ou menos que 10 caracteres e a revisão Debian é igual ou menos que 3 caracteres.

[13] O comando debmake gera um ficheiro debian/rules um pouco mais complicado. Mas está a parte central.

[14] Esta simplicidade está disponível desde a versão 7 do pacote debhelper. Este guia assume o uso de debhelper versão 14 ou mais recente.

[15] Isto é a predefinição até ao debhelper v13. No debhelper v14, ele avisa sobre a mudança de predefinição. Após debhelper v15, irá mudar a predefinição para DESTDIR=debian/tmp/ .

[16] Se você está a usar o editor vim, certifique-se de guardar isto com o comando ":wq".

Capítulo 5. Empacotamento simples |  | Capítulo 7. Qualidade de empacotamento