Capítulo 15. manual do debmake(1)

Índice

15.1. NOME
15.2. RESUMO
15.3. DESCRIÇÃO
15.4. Argumentos posicionais
15.5. Opções
15.6. EXEMPLOS
15.7. PACOTES DE AJUDA
15.8. ADVERTÊNCIA
15.9. DEBUG
15.10. AUTOR
15.11. LICENÇA
15.12. VEJA TAMBÉM

debmake - programa para criar um pacote fonte Debian

debmake [-h] [-n] [-p package] [-u version] [-r revision] [-z extension] [-b "binarypackage[:type], …​]" [-D value] [-e foo@example.org] [-f "firstname lastname"] [-i [debuild|sbuild|dgit sbuild|gbp buildpackage|dpkg-buildpackage| …​]] [-m] [-q] [-v] [-V] [-w "addon, …​"] [-x [01234]] [-y] [-B] [URL]

debmake ajuda a compilar o pacote Debian a partir da fonte do autor.

Normalmente, isto faz-se como se segue:

  • A fonte de autor é obtida como um tarball de um sítio web remoto ou uma árvore de trabalho clonada usando git clone.

    • Para um tarball, é expandido em muitos ficheiros no directório fonte.
    • Para uma árvore de trabalho clonada, é usada como o directório fonte.
  • debmake é tipicamente invocado no directório fonte sem nenhuns argumentos.

    • O directório fonte é copiado para o directório ../pacote-versão/.
    • Se ../pacote_versão.orig.tar.xz estiver em falta, é gerado.
    • O directório atual é movido para ../pacote-versão/.
    • Os ficheiros modelo são gerados directório ../pacote-versão/debian/
  • Os ficheiros no directório ../pacote-versão/debian/ deverão ser ajustados manualmente.
  • dpkg-buildpackage (geralmente a partir do seu invólucro debuild, sbuild, ...) é invocado no directório ../pacote-versão/ para criar pacotes Debian fonte e binário.

E Também, o debmake pode ser invocado com um argumento. Este argumento pode ser URL para um tarball hospedado num sítio web remoto ou para um código fonte acedido por git clone; ou PATH local para o tarball ou código fonte.

Argumentos para as opções -b, -f, e -w precisam de ser citados para as proteger da shell.

Outras ferramentas também oferecem maneiras de obter o tarball do autor e criar o link simbólico necessário para compilar um pacote Debian dependendo do seu fluxo de trabalho. Por exemplo, origtargz, mk-origtargz, git-deborig, e pristine-tar.

URL
acquire the source tree from the tarball, the git repository or the source tree at this URL (or PATH) (if missing, the source tree uses the current directory)
-h, --help
mostra esta mensagem de ajuda e termina

-n, --native faz um pacote fonte nativo sem .orig.tar.xz

-p, --package pacote
define o nome do pacote Debian
-u, --upstreamversion versão
set the upstream package version ("@" in version is replaced by "0~yymmddHHMM" timestamp)
-r, --revision revisão
set the Debian package revision ("@" in revision is replaced by "0~yymmddHHMM" timestamp)
-z, --tarz extensão
set the tarball compression type for the missing upstream tarball, extension=(tar.xz|tar.gz|tar.bz2) (alias: z, b, x)
-b, --binaryspec "pacote-binário[:tipo], …""

define as especificações do pacote binário por uma lista separada por vírgulas de pares pacotebinário:tipo. Aqui, pacote-binário é o nome do pacote binário, e o tipo opcional é escolhido a partir dos seguintes valores de tipo:

  • bin: Pacote de código binário ELF compilado C/C++ (any, foreign) (predefinido, nome alternativo: "", isto é, string-nula)
  • data: Pacote de dados (fonts, gráficos, …) (all, foreign) (nome alternativo: da)
  • dev: Pacote de desenvolvimento de biblioteca (any, same) (nome alternativo: de)
  • doc: Pacote de documentação (all, foreign) (nome alternativo: do)
  • lib: Pacote biblioteca (any, same) (nome alternativo: l)
  • perl: Pacote script Perl (all, foreign) (nome alternativo: pl)
  • python3: Pacote script Python (versão 3) (all, foreign) (nome alternativo: py3, python, py)
  • ruby: Pacote script Ruby (all, foreign) (nome alternativo: rb)
  • nodejs: Pacote JavaScript baseado em Node.js (all, foreign) (nome alternativo: js)
  • script: Pacote script shell e outra linguagem interpretada (all, foreign) (nome alternativo: sh)

O par de valores dentro de parênteses, tais como (any, foreign), são os valores de estrofe Arquitectura e Multi-Arch definidos no ficheiro debian/control. Em muitos casos, o comando debmake consegue adivinhar bem o tipo de pacotebinário. Se tipo não for óbvio, tipo é definido para bin.

Aqui estão exemplos para cenários típicos de divisão de pacote binário onde o nome do pacote fonte Debian do autor é foo:

  • Gerando um pacote binário executável foo:

    • -b’foo:bin', ou seu formato curto -b'-', ou nenhuma opção -b
  • Gerando um pacote binário executável (python3) python3-foo:

    • -b’python3-foo:py', ou o seu formato curto -b’python3-foo'
  • Gerando um pacote de dados foo:

    • -b’foo:data', ou seu formato curto -b'-:data'
  • Gerando um pacote binário executável foo e um de documentação foo-doc:

    • -b’foo:bin,foo-doc:doc', ou seu formato curto -b'-:-doc'
  • Gerando um pacote binário executável foo, um pacote biblioteca libfoo1, e um pacote de desenvolvimento de biblioteca libfoo-dev:

    • -b’foo:bin,libfoo1:lib,libfoo-dev:dev' ou seu formato curto -b'-,libfoo1,libfoo-dev'

Se o conteúdo da árvore fonte não corresponder à definição para tipo, o comando debmake avisa-o.

-e, --email foo@example.org

define o endereço de e-mail

A predefinição é obtida a partir do valor da variável de ambiente $DEBEMAIL.

-D, --debug value
set DEBUG environment variable to value for debug logging (substring of "spPd", use "_" to unset DEBUG)
-f, --fullname "primeiro-nome último-nome"

define o nome completo

A predefinição é obtida a partir do valor da variável de ambiente $DEBFULLNAME.

-i, --invoke [debuild|sbuild|dgit sbuild|gbp buildpackage|dpkg-buildpackage| …​]
invoca a ferramenta de compilação do pacote
-m, --monoarch
força pacotes a serem não-multi-arquitectura
-q, --quitearly
termina cedo antes de criar ficheiros no directório debian
-v, --version
mostra informação de versão
-V, --verbose
usa --verbose para comandos de shell se disponível
-w, --with "addon …​"

define argumentos de opção adicionais dh --with em debian/rules

Para pacotes baseados em Autotools, se eles instalarem programas Python (versão 3), definir python3 como addon para o argumento de comando debmake é necessário pois isto não é óbvio. Mas para pacotes baseados em Python pyproject.toml, definir python3 como addon para o argumento de comando debmake não é necessário pois isto é óbvio e o comando debmake define-o automaticamente para o comando dh(1).

-x, --extra [01234]

gera ficheiros de configuração extra como modelos (predefinição: 2)

Por favor note que debian/changelog, debian/control, debian/copyright, debian/rules, e debian/source/format são ficheiros de configuração necessários para compilar um pacote binário Debian moderno.

O número determina quais modelos de configuração são gerados.

  • -x0: todos os 5 ficheiros modelo de configuração requeridos. (opção selecionada se alguns destes ficheiros necessários já existir)
  • -x1: todos os ficheiros -x0 + ficheiros modelo de configuração desejáveis com suportes a tipos de pacote binário.
  • -x2: todos os ficheiros -x1 + ficheiros modelo de configuração normal com suporte a script de maintainer. (predefinido)
  • -x3: todos os ficheiros -x2 + ficheiros modelo de configuração opcionais.
  • -x4: todos os ficheiros -x3 + ficheiros modelo de configuração obsoletos.

Alguns ficheiros modelo de configuração são gerados com um sufixo extra .ex para facilitar a sua remoção. Para activar isto, renome os seus nomes de ficheiro para aqueles sem o sufixo .ex e edite os seus conteúdos. Os ficheiros de configuração nunca são sobrescritos. Se desejar actualizar alguns dos ficheiros de configuração existentes, or favor renome-os antes de correr o comando debmake e junte manualmente os ficheiros de configuração gerados com os antigos que foram renomeados.

-y, --yes
use uma vez para forçar sim em todas as perguntas, duas vezes para forçar não
-B, --backup
keep the user edited ones without .ex suffix and create template files with .ex suffix

Para uma fonte bem comportada, você pode compilar um pacote binário Debian singular instalável e bom-para-uso-local facilmente com um comando. A instalação de teste de tal pacote gerado deste modo oferece uma boa alternativa ao comando tradicional make install que instala no directório /usr/local pois o pacote Debian pode ser removido completamente pelo comando dpkg -P '…​'. Aqui estão alguns exemplos de como compilar tais pacotes de teste.

Para uma árvore fonte de programa C típico empacotada com autoconf/automake:

  • debmake -i sbuild

Para uma árvore fonte de módulo Python (versão 3) típica:

  • debmake -b":python3" -i sbuild

Para um módulo Python (version 3) típico no arquivo pacote-versão.tar.xz:

  • debmake pacote-versão.tar.xz -b":python3" -i sbuild

Para um módulo Perl típico no arquivo pacote-versão.tar.xz:

  • debmake pacote-versão.tar.xz -b":perl" -i sbuild

O empacotamento pode requerer a instalação de alguns pacotes de ajuda especial adicional.

  • Os programas Python (versão 3) podem requerem o pacote pybuild-plugin-pyproject.
  • O sistema de compilação Autotools (autoconf + automake) pode requerer o pacote autotools-dev ou dh-autoreconf.
  • Os programas Ruby podem requerer o pacote gem2deb.
  • Os programas Node.js baseados em JavaScript podem requerer o pacote pkg-js-tools.
  • Os programas Java podem requerer o pacote javahelper.
  • Os programas do Gnome podem requerer o pacote gobject-introspection.
  • etc.

Apesar do debmake destinar-se a fornecer ficheiros modelo para o maintainer do pacote trabalhar, as atividades actuais de empacotamento são muitas vezes executadas sem se usar o debmake enquanto se referenciam apenas pacotes existentes semelhantes e o Manual de Política Debian”. É requerido que todos os ficheiros modelo gerados pelo debmake sejam modificados manualmente.

Existem alguns pontos para o debmake:

  • debmake ajuda a escrever um tutorial de empacotamento conciso Guia para Maintainers Debian (pacote debmake-doc).
  • debmake fornece textos de licença curtos extraídos como debian/copyright em precisão decente para ajudar na revisão da licença.
  • Guia para Maintainers Debian também serve como tutorial com exemplos para o uso do debmake.
  • debmake internamente chama licensecheck do pacote licensecheck para criar debian/copyright se este não existir.
  • debmake internamente chama lrc do pacote licenserecon para verificar debian/copyright se este já existe.

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.

O debmake assume casos de empacotamento relativamente simples. Assim todos programas relacionados com o interpretador são assumidos como sendo Architecture: all. Isto nem sempre é verdade.

Por favor reporte bugs ao pacote debmake usando o comando reportbug.

O caractere definido na variável de ambiente $DEBUG determina o nível de resultados no relatório.

  • s: registo de progresso do programa
  • p: chave para[..] registo de valor
  • P: todos para[..] registo de valor
  • d: para["debs"] registo de valor

Use esta funcionalidade como:

[base_dir] $ export DEBUG=spd; debmake ...

or

[base_dir] $ debmake -D spd ...

Veja README.md na fonte para mais.

Copyright © 2014-2026 Osamu Aoki <osamu@debian.org>

Licença Expat

O pacote debmake-doc fornece o Guia para Maintainers Debian” em formato de texto simples, HTML e PDF sob o directório /usr/share/doc/debmake-doc/.

Veja também os manuais licensecheck(1), lrc(1), dpkg-source(1), deb-control(5), debhelper(7), dh(1), dpkg-buildpackage(1), debuild(1), quilt(1), dpkg-depcheck(1), sbuild(1), gbp-buildpackage(1), e gbp-pq(1).