Capítulo 16. opções do debmake

Índice

16.1. Opções de atalho (-a, -i)
16.2. debmake -b
16.3. debmake -cc
16.4. Instantâneo do tarball do autor (-d, -t)
16.5. debmake -j
16.6. debmake -k
16.7. debmake -P
16.8. debmake -T
16.9. debmake -x

Here are some additional explanations for debmake options.

O comando debmake oferece 2 opções de atalho.

  • -a : abre o tarball do autor
  • -i : executa script para compilar o pacote binário

O exemplo em cima Capítulo 5, Empacotamento simples” pode ser feito simplesmente como se segue.

 $ debmake -a package-1.0.tar.gz -i debuild
[Dica]Dica

Um URL como https://www.example.org/DL/package-1.0.tar.gz pode ser usado para a opção -a.

[Dica]Dica

Um URL como https://arm.koji.fedoraproject.org/packages/ibus/1.5.7/3.fc21/src/ibus-1.5.7-3.fc21.src.rpm pode ser usado para a opção -a, também.

The debmake command with the -b option provides an intuitive and flexible method to create the initial template debian/control file. This file defines the split of the Debian binary packages with the following stanzas:

The debmake command also sets an appropriate set of substvars (substitution variables) used in each pertinent dependency stanza.

Vamos citar a parte pertinente do manual do debmake aqui.

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

O comando debmake com a opção -cc pode fazer um resumo do copyright e licença para a árvore fonte inteira para a saída standard.

 $ tar -xvzf package-1.0.tar.gz
 $ cd package-1.0
 $ debmake -cc | less

Com a opção -c, isto fornece um relatório curto.

This test building scheme is suitable for git repositories organized as described in gbp-buildpackage(7), which uses the master, upstream, and pristine-tar branches.

O instantâneo de autor a partir da árvore fonte do autor no VCS do autor pode ser feito com a opção -d se o autor suportar a equivalência make dist.

 $ cd /path/to/upstream-vcs
 $ debmake -d -i debuild

Em alternativa, o mesmo pode ser feito coma opção -t se o tarball do autor puder ser feito com o comando tar.

 $ cd /path/to/upstream-vcs
 $ debmake -p package -t -i debuild

A menos que você forneça a versão do autor com a opção -u ou com o ficheiro debian/changelog, é gerado um instantâneo da versão do autor no formato 0~%y%m%d%H%M, ex., 0~1403012359, a partir da data e hora UTC.

Se o VCS do autor estiver hospedado no directório pacote/ em vez do directório upstream-vcs/, o -p pacote pode ser saltado.

Se a árvore fonte do autor no VCS conter os ficheiros debian/*, o comando debmake seja com a opção -d ou a opção -t combinada com a opção -i automatiza a criação de pacote Debian não-nativo a partir do instantâneo do VCS enquanto usa estes ficheiros debian/*.

 $ cp -r /path/to/package-0~1403012359/debian/. /path/to/upstream-vcs/debian
 $ dch
   ... update debian/changelog
 $ git add -A .; git commit -m "vcs with debian/*"
 $ debmake -t -p package -i debuild

This non-native Debian binary package building scheme without the real upstream tarball is considered a quasi-native Debian package. See Secção 11.13, “Empacotamento Debian Quasi-native” for more details.

Esta é uma funcionalidade experimental.

A geração de um pacote multi-binário funcional requer sempre mais trabalho manual que aquele que dá um pacote binário singular funcional. A compilação de teste da árvore fonte é a parte essencial disso.

Por exemplo, vamos empacotar o mesmo package-1.0.tar.gz (veja Capítulo 5, Empacotamento simples”) num pacote multi binário.

  • Invoque o comando debmake com a opção -j para a compilação de teste e a geração do relatório.

     $ debmake -j -a package-1.0.tar.gz
  • Verifique as últimas linhas do ficheiro pacote.build-dep.log para julgar as dependências de compilação para Build-Depends. (Você não precisa de listar os pacotes usados pelo debhelper, perl, ou fakeroot explicitamente em Build-Depends. Esta técnica também é útil para a geração de um pacote binário singular.
  • Verifique o conteúdo do ficheiro package.install.log para identificar os caminhos de instalação para ficheiros para decidir como os dividir em múltiplos pacotes.
  • Inicie o empacotamento com o comando debmake.

     $ rm -rf package-1.0
     $ tar -xvzf package-1.0.tar.gz
     $ cd package-1.0
     $ debmake -b"package1:type1, ..."
  • Atualize os ficheiro debian/control e debian/pacote-binário.install usando a informação de cima.
  • Atualize os outros ficheiros debian/* como necessário.
  • Compile o pacote Debian com o comando debuild ou seu equivalente.

     $ debuild
  • Todas as entradas de pacote binário especificadas no ficheiro debian/pacote-binário.install são geradas como pacote-binário_versão-revisão_arch.deb.
[Nota]Nota

A opção -j para o comando debmake invoca dpkg-depcheck(1) para correr debian/rules sob strace(1) para obter as dependências de biblioteca. Infelizmente, isto é muito lento. Se você conhece as dependências de biblioteca a partir de outras fontes como o ficheiro SPEC na fonte, você pode apenas correr o comando "debmake …​" sem a opção -j e correr o comando debian/rules install para verificar os caminhos de instalação dos ficheiros gerados.

Esta é uma funcionalidade experimental.

Quando se actualiza um pacote para o novo lançamento do autor, o comando debmake pode verificar o conteúdo do ficheiro debian/copyright existente contra a situação de copyright e licença da inteira árvore fonte actualizada.

 $ cd package-vcs
 $ gbp import-orig --uscan --pristine-tar
 ... update source with the new upstream release
 $ debmake -k | less

O comando debmake -k analisa o ficheiro debian/copyright do topo até ao fundo e compara a licença de todos os ficheiros não-binário no pacote actual com a licença descrita na última entrada de padrão de ficheiro correspondente do ficheiro debian/copyright.

Quando editar o ficheiro debian/copyright auto gerado, por favor certifique-se de manter os padrões de ficheiro genérico no topo da lista.

[Dica]Dica

Para todos os novos lançamentos do autor, corra o comando debmake -k para assegurar que o ficheiro debian/copyright é actual.

O comando debmake invocado com a opção -P verifica pedantemente ficheiros auto-gerados para texto copyright+licença mesmo que eles estejam com licença permissiva.

Esta opção não afecta apenas o conteúdo do ficheiro debian/copyright gerado por execução normal, mas também os resultados pela execução com as opções -k, -c, -cc, e -ccc.

O comando debmake invocado com a opção -T escreve adicionalmente linhas de comentários tutoriais detalhados. As linhas marcadas com ### nos ficheiros modelo fazem parte das linhas de comentários tutoriais detalhados.

A quantidade de ficheiros modelo gerados pelo comando debmake depende da opção -x[01234].

[Nota]Nota

Nenhum dos ficheiros de configuração existentes são modificados pelo comando debmake.