dpkg-buildpackage(1)

NOME
dpkg-buildpackage - compila pacotes binários ou fonte a partir de fontes

SINOPSE
dpkg-buildpackage [option...]

DESCRIÇÃO
dpkg-buildpackage é um programa que automatiza os processos de compilar um pacote Debian. Consiste nos seguintes passos:

1.  Prepara o ambiente de compilação ao definir várias variáveis de ambiente. (veja ENVIRONMENT), corre o hook init, e chama dpkg-source --before-build (a menos que -T ou --target sejam usados).

2.  Verifica se as dependências de compilação e os conflitos de compilação estão satisfeitos (a menos que -d ou --no-check-builddeps seja especificado).

3.  Se um ou mais alvos específicos foram seleccionado com a opção -T ou --target, chama esses alvos e pára aqui. Caso contrário corre o hook preclean e chama fakeroot debian/rules clean para limpar a árvore de compilação (a menos que -nc ou --no-pre-clean seja especificado).

4.  Corre o hook source e chama dpkg-source -b para gerar o pacote fonte. (se foi requerida uma compilação source com --build ou com opções equivalentes).

5.  Corre o hook build e chama debian/rules build-target, depois corre o hook binary seguido de fakeroot debian/rules binary-target (a menos que tenha sido requerido uma compilação apenas-fonte com --build=source ou opções equivalentes). Note que build-target e binary-target são ou build e binary (caso predefinido, ou se uma compilação any e all foi requerida com --build ou opções equivalentes), ou build-arch e binary-arch (se uma compilação any e não all foi requerida com --build ou opções equivalentes), ou build-indep e binary-indep (se uma compilação all e não any foi requerida com --build ou opções equivalentes).

6.  Corre o hook buildinfo, e chama dpkg-genbuildinfo para gerar um ficheiro .buildinfo. Várias opções de dpkg-buildpackage são reencaminhadas para o dpkg-genbuildinfo.

7.  Corre o hook changes e chama dpkg-genchanges para gerar um ficheiro .changes. O nome do ficheiro .changes irá depender do tipo de compilação e será tão específico quando necessário mas não mais; para uma compilação que inclua any o nome será source-name_binary-version_arch.changes, ou caso contrário para uma compilação que inclua all o nome será source-name_binary-version_all.changes, ou caso contrário para uma compilação que inclua source o nome será source-name_source-version_source.changes. Muitas opções de dpkg-buildpackage são reencaminhadas para dpkg-genchanges.

8.  Corre o hook postclean e se -tc ou --post-clean for especificado, irá chamar fakeroot debian/rules clean outra vez.

9.  Chama dpkg-source --after-build.

10. Corre o hook check e chama um verificados de pacote para o ficheiro .changes (se um comando for especificado em DEB_CHECK_COMMAND ou com --check-command).

11. It runs the sign hook and signs using the OpenPGP backend (as long as it is not an UNRELEASED build, or --no-sign is specified) to sign the .dsc file (if any, unless -us or --unsigned-source is specified), the .buildinfo file (unless -ui, --unsigned-buildinfo, -uc or --unsigned-changes is specified) and the .changes file (unless -uc or --unsigned-changes is specified).

12. Corre o hook done.

OPÇÕES
Todas as opções longas podem ser especificadas em ambos linha de comandos e no sistema dpkg-buildpackage e nos ficheiros de configuração do utilizador. Cada linha no ficheiro de configuração é ou uma opção (exatamente igual a uma opção de linha de comandos mas sem os hífens iniciais) ou um comentário (se começar com ‘#’).

--build=type
    Specifies the build type from a comma-separated list of components (since dpkg 1.18.5). All the specified components get combined to select the single build type to use, which implies a single build run with a single .changes file generated. Passed to dpkg-genchanges.

    Os valores permitidos são:

    source
        Compila o pacote fonte.

        Nota: Quando se usa este valor autónomo e se o que você quer é simplesmente (re-)compilar o pacote fonte a partir de uma árvore fonte limpa, usar dpkg-source directamente é sempre uma melhor opção pois não requer que sejam instaladas quaisquer dependências de compilação as quais, caso contrário, são precisas para ser capaz de chamar o alvo clean.

    any Compila os pacotes binários específicos de arquitectura.

    all Compila os pacotes binários independentes de arquitectura.

    binary
        Compila os pacotes binários independentes e específicos de arquitectura. Isto é um alias para any,all.

    full
        Compila tudo. Isto é um alias para source,any,all, e o mesmo que o caso predefinido quando não é especificada nenhuma opção de compilação.

-g  Equivalente a --build=source,all (desde dpkg 1.17.11).

-G  Equivalente a --build=source,any (desde dpkg 1.17.11).

-b  Equivalente a --build=binary ou --build=any,all.

-B  Equivalente a --build=any.

-A  Equivalente a --build=all.

-S  Equivalente a --build=source.

-F  Equivalente a --build=full, --build=source,binary ou --build=source,any,all (desde dpkg 1.15.8).

--target=target[,...]
--target target[,...]
-T, --rules-target=target[,...]
    Chama debian/rules target uma vez por cada alvo especificado, após ter configurado o ambiente de compilação (excepto para chamar dpkg-source --before-build), e pára o processo de compilação do pacote aqui (desde dpkg 1.15.0, opção longa desde dpkg 1.18.8, suporte a multi-alvo desde dpkg 1.18.16). Se --as-root for também fornecido, então o comando é executado como root (veja --root-command). Note que alvos conhecidos que são obrigados a correr como root não precisam desta opção (isto é, os alvos clean, binary, binary-arch e binary-indep).

--as-root
    Apenas significativo junto com --target (desde dpkg 1.15.0). Requer que o alvo seja corrido com direitos de root.

-si
-sa
-sd
-vversion
-Cchanges-description
-mmaintainer-address
-emaintainer-address
    Passado sem alterações ao dpkg-genchanges. Veja o seu manual.

--build-by=maintainer-address
--source-by=maintainer-address (since dpkg 1.21.10)
    Pass as -m to dpkg-genchanges. See its manual page.

--release-by=maintainer-address
--changed-by=maintainer-address (since dpkg 1.21.10)
    Pass as -e to dpkg-genchanges. See its manual page.

-a, --host-arch architecture
    Especifica a arquitectura Debian para qual compilamos (opção longa desde dpkg 1.17.17). A arquitectura da máquina onde compilamos é determinada automaticamente, e é também a predefinida para a máquina anfitriã.

-t, --host-type gnu-system-type
    Especifica o tipo de sistema GNU para qual compilamos (opção longa desde dpkg 1.17.17). Pode ser usado no lugar de --host-arch ou como um complemento para sobrepor o tipo de sistema GNU predefinido da arquitectura Debian anfitriã.

--target-arch architecture
    Especifica a arquitectura Debian para que os binários são compilados (desde dpkg 1.17.17). O valor predefinido é o da máquina anfitriã.

--target-type gnu-system-type
    Especifica o tipo de sistema GNU para que os binários são compilados (desde dpkg 1.17.17). Pode ser usado no lugar de --target-arch ou como um complemento para sobrepor o tipo de sistema GNU predefinido da arquitectura Debian do alvo.

-P, --build-profiles=profile[,...]
    Especifica os perfil(es) que compilamos, como uma lista separada por vírgulas (desde dpkg 1.17.2, opção longa desde dpkg 1.18.8). O comportamento predefinido é compilar para nenhum perfil específico. Também os define (como uma lista separada por espaços) como a variável de ambiente DEB_BUILD_PROFILES o que permite, por exemplo, ficheiros debian/rules usarem esta informação para compilações condicionais.

-j, --jobs[=jobs|auto]
    Specifies the number of jobs allowed to be run simultaneously (since dpkg 1.14.7, long option since dpkg 1.18.8). The number of jobs matching the number of online processors if auto is specified (since dpkg 1.17.10), or unlimited number if jobs is not specified. The default behavior is auto (since dpkg 1.18.11) in non-forced mode (since dpkg 1.21.10), and as such it is always safer to use with any package including those that are not parallel-build safe. Setting the number of jobs to 1 will restore serial execution.

    Will add parallel=jobs or parallel to the DEB_BUILD_OPTIONS environment variable which allows debian/rules files to opt-in to use this information for their own purposes. The jobs value will override the parallel=jobs or parallel option in the DEB_BUILD_OPTIONS environment variable. Note that the auto value will get replaced by the actual number of currently active processors, and as such will not get propagated to any child process. If the number of online processors cannot be inferred then the code will fallback to using serial execution (since dpkg 1.18.15), although this should only happen on exotic and unsupported systems.

-J, --jobs-try[=jobs|auto]
    This option (since dpkg 1.18.2, long option since dpkg 1.18.8) is equivalent to the -j above.

    Since the behavior for -j changed in dpkg 1.21.10 to the opt-in mode, you can use this option instead if you need to guarantee semantics across dpkg release series.

--jobs-force[=jobs|auto]
    This option (since dpkg 1.21.10) is equivalent to the --jobs option except that it will enable forced parallel mode, by adding the make -j option with the computed number of parallel jobs to the MAKEFLAGS environment variable.

    This should cause all subsequent make invocations to inherit the option, thus forcing the parallel setting on the packaging (and possibly the upstream build system if that uses make(1)) regardless of their support for parallel builds, which might cause build failures.

    Note: Any Makefile that is not parallel-safe should be considered to be buggy. These should either be made parallel-safe, or marked as not being safe with the make(1) .NOTPARALLEL target.

-D, --check-builddeps
    Verifica dependências e conflitos de compilação; aborta se não satisfeitos (opção longa desde dpkg 1.18.8). Este é o comportamento predefinido.

-d, --no-check-builddeps
    Não verifica dependências e conflitos de compilação (opção longa desde dpkg 1.18.8).

--ignore-builtin-builddeps
    Não verifica dependências de compilação embutidas e conflitos (desde dpkg 1.18.2). Estas as dependências de compilação implícitas e específicas da distribuição requeridas num ambiente de compilação, o chamado conjunto de pacotes Build-Essential.

--rules-requires-root
    Não respeita o campo Rules-Requires-Root, caindo para o seu valor de predefinição antiga (desde dpkg 1.19.1).

-nc, --no-pre-clean
    Não limpa a árvore fonte antes de compilar (opção longa desde dpkg 1.18.8). Implica -b se nada mais foi seleccionado entre -F, -g, -G, -B, -A ou -S. Implica -d com -S (desde dpkg 1.18.0).

--pre-clean
    Limpa a árvore fonte antes de compilar (desde dpkg 1.18.8). Este é o comportamento predefinido.

-tc, --post-clean
    Limpa a árvore fonte (usando gain-root-command debian/rules clean) após o pacote ter sido compilado (opção longa desde dpkg 1.18.8).

--no-post-clean
    Não limpa a árvore fonte após o pacote ter sido compilado (desde dpkg 1.19.1). Este é o comportamento predefinido.

--sanitize-env
    Higieniza o ambiente de compilação (desde dpkg 1.20.0). Isto irá repor ou remover variáveis de ambiente, umask, e quaisquer outros atributos de processo que poderiam caso contrário afectar adversamente a compilação dos pacotes. Porque o ponto de entrada oficial para compilar pacotes é debian/rules, os pacotes não podem confiar que estas definições estejam no lugar, e assim devem funcionar mesmo quando elas não estão. O que há a higienizar é específico do fornecedor.

-r, --root-command=gain-root-command
    Quando o dpkg-buildpackage precisa de executar parte do processo de compilação como root, prefixa o comando que executa com gain-root-command se foi especificado um (opção longa desde dpkg 1.18.8). Caso contrário, se nenhum foi especificado, será usado por predefinição o fakeroot, se o comando estiver presente. gain-root-command deverá começar com o nome de um programa presente na PATH e receberá como argumentos o nome do comando real a correr e os argumentos que este deve receber. O gain-root-command pode incluir parâmetros (têm se ser separados por espaços) mas não meta-caracteres da shell. O gain-root-commandpode ser tipicamente fakeroot, sudo, super ou really. O su não é apropriado, pois ele só pode invocar a shell do utilizador com -c em vez de passar argumentos individualmente aos comandos que corre.

-R, --rules-file=rules-file
    Compilar um pacote Debian geralmente involve invocar debian/rules como um comando com vários parâmetros standard (desde dpkg 1.14.17, opção longa desde dpkg 1.18.8). Com esta opção é possível usar outra invocação de programa para compilar o pacote (pode incluir parâmetros separados por espaços). Em alternativa pode ser usado para executar o ficheiro de regras standard com outro programa make (por exemplo ao usar /usr/local/bin/make -f debian/rules como rules-file).

--check-command=check-command
    Comando usado para verificar o próprio ficheiro .changes e qualquer artefacto de compilação referenciado no ficheiro (desde dpkg 1.17.6). O comando deve receber o nome de caminho de .changes como um argumento. Este comando é geralmente o lintian.

--check-option=opt
    Passa a opção opção ao comando-de-verificação especificado com DEB_CHECK_COMMAND ou --check-command (desde dpkg 1.17.6). Pode ser usado várias vezes.

--hook-hook-name=hook-command
    Define o código shell especificado hook-command como o hook hook-name, o qual vai correr nos tempos especificados nos passos de execução (desde dpkg 1.17.6). Os hooks irão sempre ser executados mesmo que a acção seguinte não seja executada (excepto para o hook binary). Todos os hooks irão correr no directório fonte desempacotado.

    Nota: Os hooks podem afectar o processo de compilação, e causar falhas ao compilar se os seus comandos falharem, portanto esteja atento a consequências indesejadas.

    Os nome-de-hook actualmente suportados são:

    init preclean source build binary buildinfo changes postclean check sign done

    O comando-hook suporta as seguintes strings de formato de substituição, que lhes serão aplicadas antes da execução.

    %%  Um único caracteres %.

    %a  Um valor booleano (0 ou 1), que representa se a seguinte acção foi executada.

    %p  O nome do pacote fonte.

    %v  A versão do pacote fonte

    %s  A versão do pacote fonte (sem a época).

    %u  A versão do autor.

--buildinfo-file=filename
    Define o nome-ficheiro para o ficheiro .buildinfo gerado (desde dpkg 1.21.0).

--buildinfo-option=opt
    Passa a opção opt ao dpkg-genbuildinfo (desde dpkg 1.18.11). Pode ser usado várias vezes.

--sign-backend=sign-backend
    Specify an OpenPGP backend interface to use when invoking the sign-command (since dpkg 1.21.10).

    The default is auto, where the best current backend available will be used. The specific OpenPGP backends supported in order of preference are:

    sop (any conforming Stateless OpenPGP implementation)
    sq (from Sequoia-PGP)
    gpg (from GnuPG)
-p, --sign-command=sign-command
    When dpkg-buildpackage needs to execute an OpenPGP backend command to sign a source control (.dsc) file or a .changes file it will run sign-command (searching the PATH if necessary) instead of the default or auto-detected backend command (long option since dpkg 1.18.8). sign-command will get all the arguments defined by the --sign-backend. sign-command should not contain spaces or any other shell metacharacters.

-k, --sign-keyid=key-id
--sign-key=key-id
    Specify an OpenPGP key-ID (either a fingerprint or a user-ID) for the secret key to use when signing packages (--sign-key since dpkg 1.18.8, --sign-keyid since dpkg 1.21.10).

--sign-keyfile=key-file
    Specify an OpenPGP key-file containing the secret key to use when signing packages (since dpkg 1.21.10).

    Note: For security reasons the key-file is best kept locked with a password.

-us, --unsigned-source
    Não assina o pacote fonte (opção longa desde dpkg 1.18.8).

-ui, --unsigned-buildinfo
    Não assina o ficheiro .buildinfo (desde dpkg 1.18.19).

-uc, --unsigned-changes
    Não assina os ficheiros .buildinfo e .changes (opção longa desde dpkg 1.18.8).

--no-sign
    Não assina nenhum ficheiro, isto inclui o pacote fonte, o ficheiro .buildinfo e o ficheiro .changes (desde dpkg 1.18.20).

--force-sign
    Força o assinar dos ficheiros resultantes (desde dpkg 1.17.0), independentemente de -us, --unsigned-source, -ui, --unsigned-buildinfo, -uc, --unsigned-changes ou de outras heurísticas internas.

-sn
-ss
-sA
-sk
-su
-sr
-sK
-sU
-sR
-i, --diff-ignore[=regex]
-I, --tar-ignore[=pattern]
-z, --compression-level=level
-Z, --compression=compressor
    Passado sem alterações ao dpkg-source. Veja o seu manual.

--source-option=opt
    Passa a opção opção ao dpkg-source (desde dpkg 1.15.6. Pode ser usado várias vezes.

--changes-file=filename
    Define o nome-ficheiro para o ficheiro .changes gerado (desde dpkg 1.21.0).

--changes-option=opt
    Passa a opção opção ao dpkg-genchanges (desde dpkg 1.15.6). Pode ser usado várias vezes.

--admindir=dir
--admindir dir
    Altera a localização da base de dados do dpkg (desde dpkg 1.14.0). A localização predefinida é /var/lib/dpkg.

-?, --help
    Mostra a mensagem de utilização e termina.

--version
    Mostra a versão e termina.

AMBIENTE

  Ambiente externo

DEB_CHECK_COMMAND
    Se definido, será usado como o comando para verificar o ficheiro .changes (desde dpkg 1.17.6). Sobreposto pela opção --check-command.

DEB_SIGN_KEYID
    If set, it will be used to sign the .changes, .buildinfo and .dsc files (since dpkg 1.17.2). Overridden by the --sign-key option.

DEB_SIGN_KEYFILE
    If set, it will be used to sign the .changes, .buildinfo and .dsc files (since dpkg 1.21.10). Overridden by the --sign-keyfile option.

DEB_BUILD_OPTIONS
    Se definido, irá conter uma lista de opções separadas por espaços que podem afectar o processo de compilação em debian/rules, e o comportamento de alguns comandos do dpkg.

    Com nocheck a variável DEB_CHECK_COMMAND será ignorada. com parallel=N os trabalhos paralelos serão definidos para N, sobrepostos pela opção --jobs-try.

DEB_BUILD_PROFILES
    Se definido, será usado como perfil(es) de compilação activos para o pacote a ser compilado (desde dpkg 1.17.2). É uma lista separada por espaços de nomes de perfis. Sobreposto pela opção -P.

DPKG_COLORS
    Define o modo de cor (desde dpkg 1.18.5). Os valores actualmente aceites são: auto (predefinido), always e never.

DPKG_NLS
    Se definida, será usada para decidir se deve activar o Suporte a Linguagem Nativa. Também como conhecido como suporte de internacionalização (ou i18n) (desde dpkg 1.19.0). Os valores aceites são 0 e 1 (predefinição).

  Ambiente interno
Mesmo que dpkg-buildpackage exporte algumas variáveis, o debian/rules não deve confiar na sua presença e deve em vez disso usar a interface respectiva para obter os valore que precisa, porque esse ficheiro é o ponto de entrada principal para compilar pacotes e deve ser suportado poder fazê-lo sozinho.

DEB_BUILD_*
DEB_HOST_*
DEB_TARGET_*
    dpkg-architecture é chamado com os parâmetros -a e -t reencaminhados. Qualquer variável que seja resultante da sua opção -s é integrada no ambiente de compilação.

DEB_RULES_REQUIRES_ROOT
    Esta variável é definida para o valor obtido a partir do campo Rules-Requires-Root ou a partir da linha de comandos. Quando definida, será um valor válido para o campo Rules-Requires-Root. É usada para notificar debian/rules se a especificação rootless-builds.txt é suportada.

DEB_GAIN_ROOT_CMD
    Esta variável é definida para gain-root-command quando o campo Rules-Requires-Root é definido para um valor diferente de no e binary-targets.

SOURCE_DATE_EPOCH
    Esta variável é definida à marca temporal de Unix desde a época da última entrada em debian/changelog, se não estiver já definida.

FICHEIROS

/etc/dpkg/buildpackage.conf
    Ficheiro de configuração geral do sistema

$XDG_CONFIG_HOME/dpkg/buildpackage.conf ou
$HOME/.config/dpkg/buildpackage.conf
    Ficheiro de configuração do utilizador.

NOTAS

  As bandeiras de compilador já não são exportadas
Entre dpkg 1.14.17 e 1.16.1, dpkg-buildpackage exportava as bandeiras de compilador (CFLAGS, CXXFLAGS, FFLAGS, CPPFLAGS e LDFLAGS) com valores como retornados por dpkg-buildflags. Isto já não acontece.

  Metas de compilação predefinidas
dpkg-buildpackage está a usar os alvos build-arch e build-indep desde dpkg 1.16.2. Esses alvos são assim obrigatórios. Mas para evitar ruturas de pacotes existentes, e facilitar a transição, se o pacote fonte não compilar ambos pacotes binários independentes e dependentes da arquitectura (desde dpkg 1.18.8) irá regressar ao uso de alvo build se make -f debian/rules -qn build-target retornar 2 como código de saída.

BUGS
Deverá ser possível especificar espaços e meta-caracteres de shell e argumentos iniciais para gain-root-command e sign-command.

VEJA TAMBÉM
/usr/share/doc/dpkg-1.21.15-r3/spec/rootless-builds.txt, dpkg-source(1), dpkg-architecture(1), dpkg-buildflags(1), dpkg-genbuildinfo(1), dpkg-genchanges(1), fakeroot(1), lintian(1), <https://datatracker.ietf.org/doc/draft-dkg-openpgp-stateless-cli/>, sq(1), gpg(1).

TRADUÇÃO
Américo Monteiro

Se encontrar algum erro na tradução deste documento, por favor comunique para Américo Monteiro <a_monteiro@gmx.com>.