dpkg-buildpackage
Section: dpkg suite (1)
Updated: 1970-01-01
Page Index
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.
-
Corre o hook sign e chama gpg (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 o 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). 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
-
- -m, --release-by=maintainer-address
-
- -e, --build-by=maintainer-address
-
Passado sem alterações 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]
-
Número de trabalhos permitidos para correr em simultâneo, número de
trabalhos que correspondem ao número de processadores online. Se for
especificado auto(desde dpkg 1.17.10), ou não for especificado um número
limite de jobs, equivalente à opção make(1) do mesmo nome (desde dpkg
1.14.7, opção longa desde dpkg 1.18.8). Irá adiciona-se a ele próprio à
variável de ambiente MAKEFLAGS, a qual pode fazer com que todas as
invocações subsequentes do make herdem a opção. assim forçando a definição
paralela no empacotamento (e possivelmente o sistema de compilação do autor
se esse usar o make) independentemente do seu suporte para compilações
paralelas, a qual pode causar falhas de compilação. Adiciona também
parallel=jobs ou parallel A`variável de ambiente
DEB_BUILD_OPTIONS que permite a ficheiros debian/rules usar esta
informação para os seus próprios objectivos. O valor -j 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
à opção -j excepto em que não define a variável de ambiente MAKEFLAGS,
e como tal é mais segura de usar com qualquer pacote incluindo aqueles que
não são seguros de compilação em paralelo.
auto é o comportamento predefinido (desde dpkg 1.18.11). Definir o número
de trabalhos para 1 irá restaurar um comportamento em série.
- -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-option=opt
-
Passa a opção opt ao dpkg-genbuildinfo (desde dpkg 1.18.11). Pode ser
usado várias vezes.
- -p, --sign-command=sign-command
-
Quando dpkg-buildpackage precisa de executar GPG para assinar um ficheiro
de controle de fonte (.dsc) ou um ficheiro .changes irá correr
sign-command (procurando na PATH se necessário) em vez de gpg
(opção longa desde dpkg 1.18.8). sign-command irá obter todos os
argumentos que gpg teriam obtido. sign-command não deve conter espaços
ou outros meta-caracteres de shell.
- -k, --sign-key=key-id
-
Especifica o ID de chave a usar quando assina pacotes. (opção longa desde
dpkg 1.18.8).
- -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-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 e .dsc
(desde dpkg 1.17.2). Sobreposto pela opção --sign-key.
- 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
dpkg-source(1),
dpkg-architecture(1),
dpkg-buildflags(1),
dpkg-genbuildinfo(1),
dpkg-genchanges(1),
fakeroot(1),
lintian(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>.