Provided by: dpkg-dev_1.22.6ubuntu6.1_all
NOME
dpkg-buildpackage - compila pacotes binários ou fonte a partir de fontes
RESUMO
dpkg-buildpackage [option...]
DESCRIÇÃO
dpkg-buildpackage é um programa que automatiza os processos de compilar um pacote Debian. Consiste nos seguintes passos: 1. Corre o hook preinit antes de ler qualquer ficheiro fonte. 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 quanto necessário mas não mais; o nome irá ser: source-name_binary-version_arch.changes para uma compilação que inclua any source-name_binary-version_all.changes caso contrário para uma compilação que inclua all source-name_source-version_source.changes. caso contrário para uma compilação que inclua source Muitas opções do 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. Corre o hook sign e assina usando o backend OpenPGP (desde que não seja uma compilação NÃO-LANÇADA, ou se --no-sign for especificado) para assinar o ficheiro .dsc (se algum, a menos que -us ou --unsigned-source sejam especificados), o ficheiro .buildinfo (a menos que -ui, --unsigned-buildinfo, -uc ou --unsigned-changes sejam especificados) e os ficheiros .changes (a menos que -uc ou --unsigned-changes sejam especificados). 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 Especifica o type de compilação a partir de uma lista separada por vírgulas de componentes (desde dpkg 1.18.5). Todos os componentes especificados são combinados para selecionar o único tipo de compilação a usar, o que implica uma única execução de compilação com um único ficheiro changes gerado. Passado para 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 (desde dpkg 1.21.10) Passa como -m ao dpkg-genchanges. Veja o seu manual. --release-by=maintainer-address --changed-by=maintainer-address (desde dpkg 1.21.10) Passa como -e ao dpkg-genchanges. Veja o seu manual. -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] Especifica se o número de trabalhos permitidos para serem corridos em simultâneo (desde dpkg 1.14.7, opção longa desde dpkg 1.18.8). O número de trabalhos correspondente ao número de processadores online se auto for especificado (desde dpkg 1.17.10), ou número ilimitado se jobs não for especificado. O comportamento predefinido é auto (desde dpkg 1.18.11) em modo não-forçado (desde dpkg 1.21.10), e como tal é sempre mais seguro usar com qualquer pacote incluindo aqueles que não seguros para compilação paralela. Definir o número de trabalhos para 1 irá restaurar a execução em série. Irá adicionar parallel=jobs ou parallel à variável de ambiente DEB_BUILD_OPTIONS que permite a ficheiros debian/rules optarem por usar esta informação para os seus próprios objectivos. O valor jobs irá sobrepor a opção parallel=jobs ou parallel na variável de ambiente DEB_BUILD_OPTIONS. Note que o valor auto irá ser substituído pelo número real de processadores actuais activos, e como tal, não será propagado para nenhum processo filho. Se o número de processadores online não poder ser deduzido, então o código ira cair para o uso de execução em série (desde dpkg 1.18.15), no entanto isto apenas deverá acontecer em sistemas exóticos e não suportados. -J, --jobs-try[=jobs|auto] Esta opção (desde dpkg 1.18.2, opção longa desde dpkg 1.18.8) é equivalente a -j em cima. Como o comportamento do -j alterou no dpkg 1.21.10 para o modo opt-in, você pode usar esta opção se precisar de garantir semânticas entre séries de lançamento do dpkg. --jobs-force[=jobs|auto] Esta opção (desde dpkg 1.21.10) é equivalente à opção --jobs excepto que irá activar o modo paralelo forçado, ao adicionar a opção make -j com o número computado de trabalhos em paralelo para a variável de ambiente MAKEFLAGS. Isto deverá causar que todas as invocações make subsequentes herdam a opção assim forçando a definição paralela no empacotamento (e possivelmente o sistema de compilação do autor se isso usar make(1)) independentemente do seu suporte para compilações paralelas, o que pode causar falhas na compilação. Nota: Qualquer Makefile que não seja seguro-paralelo deve ser considerado defeituoso. Estes devem ou tornados seguro-paralelo, ou marcados como não seguros com o alvo make(1) .NOTPARALLEL. -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. Alguns hooks podem receber informação adicional através de variáveis de ambiente (desde dpkg 1.22.0). Todos os hooks obtêm o nome de hook na variável de ambiente DPKG_BUILDPACKAGE_HOOK_NAME (desde dpkg 1.22.0). 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: preinit init preclean source Obtém DPKG_BUILDPACKAGE_HOOK_SOURCE_OPTIONS com as listas de opções separadas-por-espaços que serão passadas à chamada dpkg-source. build Obtém DPKG_BUILDPACKAGE_HOOK_BUILD_TARGET com o nome do alvo de compilação debian/rules chamado, mas apenas se chamado. binary Obtém DPKG_BUILDPACKAGE_HOOK_BINARY_TARGET com o nome de alvo binário debian/rules chamado, mas apenas se chamado. buildinfo Obtém DPKG_BUILDPACKAGE_HOOK_BUILDINFO_OPTIONS com as listas de opções separadas-por-espaços que serão passadas à chamada dpkg-genbuildinfo. changes Obtém DPKG_BUILDPACKAGE_HOOK_CHANGES_OPTIONS com as listas de opções separadas-por-espaços que serão passadas à chamada dpkg-genchanges. postclean check Obtém DPKG_BUILDPACKAGE_HOOK_CHECK_OPTIONS com as listas de opções separadas-por-espaços que serão passadas à chamada do comando de verificação. 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 Especifica uma interface backend OpenPGP a usar quando se invoca o sign-command (desde dpkg 1.21.10). A predefinição é auto, onde o melhor backend actual disponível irá ser usado. Os backends OpenPGP específicos suportados em ordem de preferência são: sop (qualquer implementação em conformidade com Stateless OpenPGP) sq (de Sequoia-PGP) gpg (de GnuPG) -p, --sign-command=sign-command Quando dpkg-buildpackage precisa de executar comando backend OpenPGP para assinar um ficheiro de controle de fonte (.dsc), um ficheiro .buildinfo ou um ficheiro .changes irá correr sign-command (procurando na PATH se necessário) em vez do predefinido ou auto-detectado comando backend (opção longa desde dpkg 1.18.8). O sign-command irá obter todos os argumentos específicos de backend de acordo com o --sign-backend selecionado. sign-command não deve conter espaços ou outros meta-caracteres de shell. -k, --sign-keyid=key-id --sign-key=key-id Especifica um ID-chave OpenPGP (seja uma impressão digital ou um ID de utilizador) para a chave secreta a usar ao assinar pacotes (--sign-key desde dpkg 1.18.8, --sign-keyid desde dpkg 1.21.10). --sign-keyfile=key-file Especifica um key-file OpenPGP que contem a chave secreta usada quando assinar pacotes (desde dpkg 1.21.10). Nota: Por razões de segurança é melhor o key-file ser mantido bloqueado com uma palavra passe. -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 Se definido, será usado para assinar os ficheiros .changes, .buildinfo e .dsc (desde dpkg 1.17.2). Sobreposto pela opção --sign-key. DEB_SIGN_KEYFILE Se definido, será usado para assinar os ficheiros .changes, .buildinfo e .dsc (desde dpkg 1.21.10). Sobreposto pela opção --sign-keyfile. DEB_BUILD_OPTIONS Se definido, irá conter uma lista de opções separadas por espaços que afectam o comportamento de algumas ferramentas do dpkg envolvidas na compilação de pacote, e pode afectar o processo de compilação se o código em debian/rules as honrar. Estas opções podem ter parâmetros especificados imediatamente após um sinal de igual (‘=‘). Para opções que suportem múltiplos parâmetros, estes não serão separadas por espaços, pois estes estão reservados para opções separadas. O seguinte são opções conhecidas e suportadas pelas ferramentas do dpkg, outras opções honradas por debian/rules podem ser definidas por políticas específicas da distribuição. parallel=N O debian/rules no empacotamento pode usar esta opção para definir o processo de compilação a usar N trabalhos em paralelo. É sobreposto pelas opções --jobs e --jobs-force. nocheck dpkg-buildpackage irá ignorar a variável DEB_CHECK_COMMAND. Não é esperado que o debian/rules no empacotamento corra suites de teste durante a compilação. noopt Se debian/rules chamar dpkg-buildflags para definir as bandeiras de compilação, essas serão definidas para não activar nenhumas optimizações. nostrip O debian/rules no empacotamento deve assegurar que os objectos não ficam com a sua informação de depuração removida. Se debian/rules incluir o fragmento de make mk/buildtools.mk a variável de make STRIP irá respeitar esta opção. terse dpkg-buildpackage irá acrescentar a bandeira --no-print-directory make(1) à variável de ambiente MAKEFLAGS. O debian/rules no empacotamento deve reduzir nos detalhes, não sendo completamente silencioso. hardening=feature-spec reproducible=feature-spec abi=feature-spec future=feature-spec qa=feature-spec optimize=feature-spec sanitize=feature-spec Estas são áreas de característica que controlam as características da bandeira de compilação. Veja dpkg-buildflags(1) para mais detalhes. 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, o nível dpkg-build-api 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.
SEGURANÇA
A compilação de pacotes binário ou fonte só deve ser executada sobre dados de fonte de confiança.
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/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>.