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] [-c | -k] [-n | -a pacote-versão.orig.tar.gz | -d | -t ] [-p pacote] [-u versão] [-r revisão] [-z extensão] [-b "pacotebinário[:type], …​]" [-e foo@example.org] [-f "primeironome últimonome"] [-i "ferramentacompilação" | -j] [-l ficheiro_licença] [-m] [-o ficheiro] [-q] [-s] [-v] [-w "addon, …​"] [-x [01234]] [-y] [-L] [-P] [-T]

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.

Certifique-se de proteger os argumentos das opções -b, -f, -l, e -w de interferências da shell citando-os de modo apropriado.

-h, --help
mostra esta mensagem de ajuda e termina.
-c, --copyright

sonda a fonte para texto copyright+licença e termina.

  • -c: estilo de resultados simples
  • -cc: estilo de resultados normal (semelhante ao ficheiro debian/copyright)
  • -ccc: estilo de resultados de depuração
-k, --kludge

compara o ficheiro debian/copyright com a fonte e termina.

O ficheiro debian/copyright tem de ser organizado para listar os padrões de ficheiro genéricos antes das excepções específicas.

  • -k: estilo de resultados básico
  • -kk: estilo de resultados detalhados
-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: Shell and other interpreted language script package (all, foreign) (alias: 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.
-l "ficheiro_licença,…", --license "ficheiro_licença,…"

adiciona texto de licença formatado ao final do ficheiro debian/copyright mantendo resultados da sondagem da licença.

A predefinição é adicionar COPYING e LICENSE, e license_file precisa de listar apenas os nomes de ficheiros adicionais todos separados por ,.

-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

gera ficheiros de configuração como modelos. (Por favor note debian/changelog, debian/control, debian/copyright, e debian/rules são os ficheiros de configuração mínimos para compilar pacote binário Debian.)

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

  • -x0: todos os ficheiros modelo de configuração requeridos. (opção selecionada se alguns destes ficheiros 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.
  • -x3: all -x2 files + optional configuration template files. (default option)
  • -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)
-L, --local
gera ficheiros de configuração para o pacote local para verificações lintian(1) tolas.
-P, --pedantic
verifica pedantemente os ficheiros auto-gerados.
-T, --tutorial
Escreve linhas comentários de tutorial nos ficheiros modelo. Predefinição quando está definido -x3 ou -x4.

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.

Existem 2 pontos positivos 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.

Por favor volte a verificar o copyright com o comando licensecheck(1).

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.

  • Registo de i: main.py
  • Registo de p: para.py
  • Registo de s: checkdep5.py check_format_style()
  • Registo de y: checkdep5.py split_years_name()
  • b: checkdep5.py parse_lines() registo 1 — ciclo de sondagem content_state : começar ciclo
  • m: checkdep5.py parse_lines() registo 2 — ciclo de sondagem content_state: após correspondência de expressão regular
  • e: checkdep5.py parse_lines() registo 3 — ciclo de sondagem content_state: terminar ciclo
  • a: checkdep5.py parse_lines() registo 4 — escreve texto da secção autor/tradutor
  • f: checkdep5.py check_all_license() registo 1 — insere nome de ficheiro para a sondagem do copyright
  • l: checkdep5.py check_all_license() registo 2 l — escreve texto da secção de licença
  • c: checkdep5.py check_all_license() registo 3 — escreve texto da secção copyright
  • k: checkdep5.py check_all_license() registo 4 — ordena chave para a estrofe debian/copyright
  • Registo de r: sed.py
  • Registo de w: cat.py
  • Registo de n: kludge.py (debmake -k)

Use esta funcionalidade como:

 $ DEBUG=ipsybmeaflckrwn debmake ...

Veja README.developer na fonte para mais.

Copyright © 2014-2024 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 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.