Capítulo 15. manual do debmake(1)

Índice

15.1. NOME
15.2. RESUMO
15.3. DESCRIÇÃO
15.4. Positional arguments
15.5. Options
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 helps to build the Debian package from the upstream source.

Normally, this is done as follows:

  • The upstream source is obtained as a tarball from a remote web site or a cloned work tree using git clone.

    • For a tarball, it is expanded to many files in the source directory.
    • For a cloned work tree, it is used as the source directory.
  • debmake is typically invoked in the source directory without any argument.

    • The source directory is copied to ../package-version/ directory.
    • If ../package_version.orig.tar.xz is missing, it is generated.
    • The current directory is moved to ../package-version/.
    • Template files are generated in the ../package-version/debian/ directory
  • Files in the ../package-version/debian/ directory should be manually adjusted.
  • dpkg-buildpackage (usually from its wrapper debuild, sbuild, …​) is invoked in the ../package-version/ directory to make Debian source and binary packages.

Also, debmake can be invoked with an argument. This argument can be URL for a tarball hosted on a remote web site or for a source code accessed by git clone; or local PATH to the tarball or the source code.

Arguments to -b, -f, and -w options need to be quoted to protect them from the 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
show this help message and exit

-n, --native make a native source package without .orig.tar.xz

-p, --package package
set the Debian package name
-u, --upstreamversion version
set the upstream package version ("@" in version is replaced by "0~yymmddHHMM" timestamp)
-r, --revision revision
set the Debian package revision ("@" in revision is replaced by "0~yymmddHHMM" timestamp)
-z, --tarz extension
set the tarball compression type for the missing upstream tarball, extension=(tar.xz|tar.gz|tar.bz2) (alias: z, b, x)
-b, --binaryspec "binarypackage[:type], …​"

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', or its short form -b'-', or no -b option
  • 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

set e-mail address

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 "firstname lastname"

set the fullname

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

-i, --invoke [debuild|sbuild|dgit sbuild|gbp buildpackage|dpkg-buildpackage| …​]
invoke package build tool
-m, --monoarch
force packages to be non-multiarch
-q, --quitearly
quit early before creating files in the debian directory
-v, --version
show version information
-V, --verbose
use --verbose for shell commands if available
-w, --with "addon …​"

set additional dh --with option arguments in 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]

generate extra configuration files as templates (default: 2)

Please note debian/changelog, debian/control, debian/copyright, debian/rules, and debian/source/format are required configuration files to build a modern Debian binary package.

The number determines which configuration templates are generated.

  • -x0: all 5 required configuration template files. (selected option if any of these required files already exist)
  • -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 once to force yes for all prompts, twice to force no
-B, --backup
keep the user editted ones without .ex suffix and create template files with .ex suffix

For a well behaving source, you can build a good-for-local-use installable single Debian binary package easily with one command. Test install of such a package generated in this way offers a good alternative to the traditional make install command installing into the /usr/local directory since the Debian package can be removed cleanly by the dpkg -P '…​' command. Here are some examples of how to build such test packages.

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

For a typical Python (version 3) module in the package-version.tar.xz archive:

  • debmake package-version.tar.xz -b":python3" -i sbuild

For a typical Perl module in the package-version.tar.xz archive:

  • debmake package-version.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).