dpkg-buildpackage - compila pacotes binários ou fonte a
partir de fontes
dpkg-buildpackage [option...]
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.
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.
- 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).
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.
- /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.
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.
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.
Deverá ser possível especificar espaços e
meta-caracteres de shell e argumentos iniciais para gain-root-command
e sign-command.
Américo Monteiro
Se encontrar algum erro na tradução deste documento,
por favor comunique para Américo Monteiro
<a_monteiro@gmx.com>.