Capítulo 15. manual do debmake(1)

Índice

15.1. NOME
15.2. RESUMO
15.3. DESCRIÇÃO
15.3.1. argumentos opcionais:
15.4. EXEMPLOS
15.5. PACOTES DE AJUDA
15.6. CAVEAT
15.7. DEBUG
15.8. AUTOR
15.9. LICENÇA
15.10. VEJA TAMBÉM

debmake - programa para criar um pacote fonte Debian

debmake [-h] [-n | -a package-version.orig.tar.gz | -d | -t ] [-p package] [-u version] [-r revision] [-z extension] [-b "binarypackage[:type], …​]" [-e foo@example.org] [-f "firstname lastname"] [-i "buildtool" | -j] [-m] [-o file] [-q] [-s] [-v] [-w "addon, …​"] [-x [01234]] [-y] [-T] [-B]

debmake ajuda a compilar um pacote Debian a partir da fonte do autor. Normalmente, isto faz-se como se segue:

  • O tarball de autor é descarregado como ficheiro pacote-versão.tar.gz.
  • É desempacotado para se criar muitos ficheiros sob o directório pacote-versão/.
  • debmake é invocado no directório pacote-versão/, possivelmente sem nenhuns argumentos.
  • Os ficheiros no directório pacote-versão/debian/ são ajustados manualmente.
  • dpkg-buildpackage (geralmente a partir do seu invólucro debuild ou sbuild) é invocado no directório pacote-versão/ para criar pacotes Debian.

Make sure to protect the arguments of the -b, -f, and -w options from shell interference by quoting them properly.

Recently, the upstream may release its source code using the Git repository only without the tarball. debmake can offer a way to work with this situation:

  • git clone https://git.site.org/project/package.git downloads upstream source to the package/ directory.
  • cd project/ ; debmake -u version --tar ; cd - generates the package-version.tar.xz file, the package_version.orig.tar.xz symlink, and the package-version/ directory.
  • Files in the package-version/debian/ directory shall be manually adjusted.
  • dpkg-buildpackage (geralmente a partir do seu invólucro debuild ou sbuild) é invocado no directório pacote-versão/ para criar pacotes Debian.

Other tools also offer ways to obtain the upstream tarball and creating required symlink to build a Debian package depending on your workflow. For example, origtargz, mk-origtargz, git-deborig, and pristine-tar.

-h, --help
mostra esta mensagem de ajuda e termina.
-n, --native

cria um pacote fonte Debian nativo sem o .orig.tar.gz. Isto cria um pacote fonte Debian de formato 3.0 (native).

Se você está a pensar em empacotar uma árvore fonte específica Debian com debian/ nela em um pacote nativo Debian, por favor pense o contrário. Você pode usar os comandos debmake -d -i debuild ou debmake -t -i debuild para criar um pacote Debian não-nativo usando o formato fonte Debian 3.0 (quilt). A única diferença é que agora o ficheiro debian/changelog tem de usar o esquema de versão não-nativo: versão-revisão. O pacote não-nativo é mais amigável às distribuições baseadas nesta.

-a pacote-versão.tar.gz, --archive pacote-versão.tar.gz

use o tarball fonte do autor diretamente. (-p, -u, -z: sobreposto)

O tarball do autor pode ser especificado como pacote_versão.orig.tar.gz e tar.gz. Para outros casos, pode ser tar.bz2, ou tar.xz.

Se o nome do tarball de autor especificado conter letras maiúsculas, o nome do pacote Debian é gerado ao converte-las para letras minúsculas.

Se o argumento especificado for o URL (http://, https://, ou ftp://) para o tarball do autor, este é descarregado do URL usando wget ou curl.

-d, --dist

corra primeiro o comando equivalente a make dist para gerar o tarball de autor e use-o.

O comando debmake -d destina-se a correr no directório package/ que hospeda o VCS do autor com o sistema de compilação a suportar equivalentes ao comando make dist. (automake/autoconf, …​)

-t, --tar

corra o comando tar para gerar o tarball de autor e use-o.

O comando debmake -t destina-se a correr no directório package/ que hospeda o VCS do autor. A menos que você forneça a versão do autor com a opção -u option ou com o ficheiro debian/changelog, é grado um instantâneo da versão do autor no formato 0\~%y%m%d%H%M, ex., 0~1403012359, a partir da hora e data UTC. O tarball gerado exclui o directório debian/ encontrado no VCS do autor. (Também exclui directórios típicos do VCS: .git/, .hg/, .svn/, .CVS/.)

-p pacote, --package pacote
define o nome do pacote Debian.
-u versão, --upstreamversion versão
define a versão de pacote do autor.
-r revisão, --revision revisão
define a revisão de pacote Debian.
-z extensão, --targz extensão
define o tipo de tarball, extensão=(tar.gz|tar.bz2|tar.xz). (nome alternativo: z, b, x)
-b "pacote-binário[:tipo],…", --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 foo@example.org, --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.

-f "primeironome últimonome", --fullname "primeironome últimonome"

define o nome completo

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

-i "buildtool", --invoke "buildtool"

invoca "buildtool" no final da execução. buildtool pode ser dpkg-buildpackage, debuild, sbuild, etc.

A predefinição é não executar nenhum programa.

Definir esta opção define automaticamente a opção --local.

-j, --judge

corre dpkg-depcheck para julgar dependências de compilação e identificar caminhos de ficheiros. Os ficheiros de relatório estão no directório pai.

  • pacote.build-dep.log: Ficheiro de relatório para dpkg-depcheck.
  • pacote.install.log: Ficheiro de relatório para recordar ficheiros no directório debian/tmp.
-m, --monoarch
força pacotes a serem não-multiarch.
-o ficheiro, --option ficheiro

lê parâmetros opcionais de ficheiro. (Isto não é para usar todos os dias.)

O conteúdo de ficheiro é fonte como o código Python no final de para.py. Por exemplo, a descrição do pacote pode ser especificada pelo seguinte ficheiro.

para['desc'] = 'program short description'
para['desc_long'] = '''\
 program long description which you wish to include.
 .
 Empty line is space + .
 You keep going on ...
'''
-q, --quitearly
termina cedo antes de criar ficheiros no directório debian/.
-s, --spec
usa especificações do autor (pyproject.py para Python, etc) para a descrição do pacote.
-v, --version
mostra informação de versão.
-w "addon,…", --with "addon,…"

adiciona argumentos extra à opção --with do comando dh(1) como addon em debian/rules.

Os valores addon são listados todos separados por ,, ex., -w "python3,autoreconf”.

Para pacotes baseados em Autotools, autoreconf como addon para correr autoreconf -i -v -f para cada pacote compilado é o comportamento predefinido do comando dh(1).

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 n, --extra n

generate configuration files as templates. (Please note debian/changelog, debian/control, debian/copyright, and debian/rules are required configuration files to build a Debian binary package.)

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

  • -x0: all 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: all -x1 files + normal configuration template files with maintainer script supports. (default)
  • -x3: all -x2 files + optional configuration template files.
  • -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
força sim para todas as perguntas. (sem a opção: ask [Y/n]; opção dupla: força não)
-T, --tutorial
Escreve linhas comentários de tutorial nos ficheiros modelo. Predefinição quando está definido -x3 ou -x4.
-B, --backup
for existing template files, create new template files with .bkup suffix and keep the existing ones.

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. (Estes devem funcionar na maioria dos casos. Se a opção -d não funcionar, então tente a opção -t.)

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

  • debmake -d -i debuild

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

  • debmake -s -d -b":python3" -i debuild

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

  • debmake -s -a pacote-versão.tar.gz -b":python3" -i debuild

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

  • debmake -a pacote-versão.tar.gz -b":perl" -i debuild

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.

There are some points for 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.
  • Guide for Debian Maintainers also serves as a tutorial with examples for the usage of debmake.
  • debmake internally calls licensecheck from the licensecheck package to create debian/copyright if it doesn’t exist.
  • debmake internally calls lrc from the licenserecon package to verify debian/copyright if it already exists.

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: program progress logging
  • p: key para[..] value logging
  • P: all para[..] value logging
  • d: para["debs"] value logging

Use esta funcionalidade como:

 $ DEBUG=spd debmake ...

See README.md in the source for more.

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/.

See also 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), and gbp-pq(1) manpages.