deb-control - formato Debian de ficheiro de controle mestre de pacotes
binários
DEBIAN/control
Cada pacote binário Debian contem um ficheiro
control no seu
membro
control, e o seu formato
deb822(5) é um
subconjunto do ficheiro
debian/control mestre em pacotes fonte Debian,
veja
deb-src-control(5).
Este ficheiro contém um número de campos. Cada campo começa
com uma etiqueta, tal como
Package ou
Version (insensitivo a
maiúsculas/minúsculas) seguido por dois pontos (:), e o corpo do
campo (sensível a maiúsculas/minúsculas a menos que
declarado o contrário). Os campos são delimitados apenas pelas
etiquetas de campo, por outras palavras, o texto do campo pode ter
múltiplas linhas de comprimento, mas as ferramentas de
instalação irão geralmente juntar as linhas quando
processam o corpo do campo (excepto no caso do campo
Description, veja
em baixo).
-
Package: package-name
(necessário)
- O valor deste campo determina o nome do pacote, e é
usado para gerar nomes de ficheiros pela maioria das ferramentas de
instalação.
-
Package-Type:
deb|udeb|type
- Este campo define o tipo de pacote. udeb é
para pacotes de tamanho reduzido usados pelo instalador de debian.
deb é o valor predefinido, é assumido se o campo
estiver ausente. Mais tipos podem ser adicionados no futuro.
-
Version: string-de-versão
(obrigatório)
- Tipicamente, isto é o número de versão
do pacote original seja em que formato o autor do programa usa. Pode
também incluir um número de revisão Debian (para
pacotes não-nativos). O formato exacto e algoritmo de
ordenação estão descritos em
deb-version(7).
-
Maintainer: fullname-email (recomendado)
- Deverá estar no formato "Joe Bloggs
<[email protected]>", e é tipicamente a pessoa que criou o
pacote, e não o autor do software que foi empacotado.
-
Description: short-description
(recomendado)
- long-description
- O formato da descrição do pacote é um
sumário breve e curto an primeira linha (após o campo
Description). As linhas seguintes devem ser usadas para uma
descrição longa e mais detalhada. Cada linha da
descrição longa tem de ser precedida com um espaço, e
as linhas em branco na descrição longa têm de conter
um único ‘ .’ a seguir ao espaço que
precede.
-
Section: section
- Este é um campo geral que dá ao pacote uma
categoria baseada no software que ele instala. Algumas
secções comuns são utils, net,
mail, text, x11, etc.
-
Priority: priority
- Define a importância deste pacote relativamente ao
sistema como um todo. Prioridades comuns são required,
standard, optional, extra, etc.
Os campos
Section e
Priority têm geralmente um conjunto
definido de valores aceites baseados na política específica da
distribuição.
-
Installed-Size: size
- O tamanho total aproximado dos ficheiros instalados pelo
pacote, em unidades KiB. O algoritmo para computar o tamanho está
descrito em deb-substvars(5).
-
Protected: yes|no
- Este campo normalmente não é
necessário quando a resposta é yes. Ele indica um
pacote que é necessário principalmente para o arranque
correcto do sistema ou usado para meta-pacotes personalizados
locais-do-sistema. O dpkg(1) ou qualquer outra ferramenta de
instalação não irá permitir que um pacote
Protected seja removido (pelo menos não sem usar uma das
opções de forçar).
Suportado desde dpkg 1.20.1.
-
Essential: yes|no
- Este campo normalmente não é
necessário quando a resposta é sim. Ele indica um
pacote que é necessário para o sistema de empacotamento,
para a operação correcta do sistema no geral ou durante o
arranque (apesar do último dever ser convertido para o campo
Protected em vez deste). O dpkg(1) ou qualquer outra
ferramenta de instalação não irá permitir que
um pacote <Essential> seja removido (pelo menos não sem usar
uma das opções de forçar).
-
Build-Essential: yes|no
- Este campo geralmente não é necessário
quando a resposta é sim, e é injetado de modo comum
pelo software do arquivo. Denota um pacote que é requerido quando
se compila outros pacotes.
-
Architecture: arch|all
(necessário)
- A arquitectura especifica para que tipo de hardware este
pacote foi compilado. Arquitecturas comuns são amd64,
armel, i386, powerpc, etc. Note que o valor
all é destinada a pacotes que são independentes da
arquitectura. Alguns exemplos disto são scripts de shell e Perl, e
documentação.
-
Origin: name
- O nome da distribuição de onde este pacote
originou.
-
Bugs: url
- O url do sistema de acompanhamento de bugs deste
pacote. O formato actualmente usado é
tipo-bts://endereço-bts, como
debbugs://bugs.debian.org.
-
Homepage: url
- O url da página inicial do projecto do
autor.
-
Tag: tag-list
- Lista de etiquetas que descrevem as qualidades do pacote. A
descrição e a lista de etiquetas suportadas pode ser
encontrada no pacote debtags.
-
Multi-Arch:
no|same|foreign|allowed
- Este campo é usado para indicar como este pacote
deve comportar-se em instalações de multi-arquitectura.
- no
- Este valor é a predefinição quando o
campo é omitido, e neste caso adicionar o campo com um valor
no explícito geralmente não é
necessário.
- same
- Este pacote é co-instalável com ele
próprio, mas não pode ser usado para satisfazer a
dependência de qualquer pacote de uma arquitectura diferente de ele
próprio.
- foreign
- Este pacote não é co-instalável com
ele próprio, mas deve ser permitido satisfazer uma
dependência non-arch-qualified de um pacote de uma arquitectura
diferente dele próprio (se uma dependência tiver um
arch-qualifier explícito então o valor foreign
é ignorado).
- allowed
- Isto permite a dependências-reversas indicarem no
seu campo Depends que elas aceitam este pacote de outra
arquitectura ao qualificar o nome do pacote com :any, mas de outro
modo não tem efeito.
-
Source: source-name
[(source-version )]
- O nome do pacote fonte de onde este pacote binário
veio, se for diferente do nome do próprio pacote. Se a
versão fonte diferir da versão binária, então
o source-name será seguido por um source-version em
parênteses. Isto pode acontecer por exemplo, num envio de
não-maintainer apenas-binário, ou quando se define uma
versão binária diferente via « dpkg-gencontrol
-v».
-
Subarchitecture: value
-
Kernel-Version: value
-
Installer-Menu-Item: value
- Estes campos são usados pelo instalador de debian e
geralmente não são necessários. Para mais detalhes
acerca deles, veja
<https://salsa.debian.org/installer-team/debian-installer/-/raw/master/doc/devel/modules.txt>.
-
Depends: package-list
- Lista de pacotes que ao requeridos para este pacotes poder
disponibilizar uma não-trivial quantidade de funcionalidades. O
software de manutenção de pacotes não irá
permitir que o pacote seja instalado se os pacotes listados no seu campo
Depends não estiverem instalados (pelo menos não sem
sem serem usadas opções de forçar). Numa
instalação, os scripts postinst dos pacotes listados nos
campos Depends são corridos antes daqueles do pacote que
depende deles. Em oposto, numa remoção, o script prerm de um
pacote é corrido antes daqueles dos pacotes listados no seu campo
Depends.
-
Pre-Depends: package-list
- Lista de pacotes que têm de ser instalados e
configurados antes de este poder ser instalado. Isto é usado
geralmente quando este pacote requer outro programa para correr o seu
script preinst.
-
Recommends: package-list
- Lista pacotes que seriam encontrados juntamente com este em
todas as instalações menos nas forma do normal. O software
de manutenção de pacotes irá avisar o utilizador se
ele instalar um pacote sem aqueles listados no campo
Recommends.
-
Suggests: package-list
- Lista pacotes que estão relacionados com este e
podem talvez aumentar a sua utilidade, mas é perfeitamente
razoável instalar este pacote sem eles.
A sintaxe dos campos
Depends,
Pre-Depends,
Recommends e
Suggests é uma lista de grupos de pacotes alternativos. Cada
grupo é uma lista de pacotes separados por símbolos de barras
verticais (ou “pipe”) ‘
|’. Os grupos
são separados por vírgulas, As vírgulas devem ser lidas
como "E", e os pipes como "OU", com os pipes a vincular
com mais firmeza. Cada nome de pacote é opcionalmente seguido por um
qualificador de arquitectura anexado após dois pontos ‘
:’, opcionalmente seguido por uma especificação de
número de versão em parêntesis.
Um nome qualificador de arquitectura pode ser um nome de arquitectura Debian
real (desde dpkg 1.16.5) ou
any (desde dpkg 1.16.2). Se omitido, a
predefinição é a arquitectura do pacote binário
actual. Um nome de arquitectura Debian real irá corresponder
exactamente à arquitectura para o nome do pacote.
any irá
corresponder a qualquer arquitectura para esse nome de pacote. se o pacote foi
marcado como
Multi-Arch: allowed.
Um número de versão pode começar com um ‘
>>’, nesse caso qualquer versão posterior
irá corresponder, e pode especificar ou omitir a revisão de
empacotamento Debian (separada por um hífen). Relacionamentos de
versão aceites são ‘
>>’ para maior
que, ‘
<<’ para menor que,
‘
>=’ para maior ou igual a, ‘
<=’ para menor ou igual a, e ‘
=’ para
igual a.
-
Breaks: package-list
- Lista os pacotes que este quebra, por exemplo ao expor bugs
quando os pacotes nomeados precisam deste. O software de
manutenção de pacotes não irá permitir que
pacotes quebrados sejam configurados; geralmente a resolução
é actualizar os pacotes nomeados no campo Breaks.
-
Conflicts: package-list
- Lista os pacotes que entram em conflito com este, por
exemplo por conter ficheiros com os mesmos nomes. O software de
manutenção de pacotes não irá permitir que
pacotes em conflito sejam instalados ao mesmo tempo. Dois pacotes em
conflito deverão ambos incluir uma linha Conflicts
mencionando o outro.
-
Replaces: package-list
- Lista os pacotes que este substitui. Isto é usado
para permitir que este pacote sobrescreva os ficheiros de outro pacote e
é geralmente usado com o campo Conflicts para forçar
a remoção do outro pacote. caso este tenha os mesmos
ficheiros que o pacote em conflito.
A sintaxe de
Breaks,
Conflicts e
Replaces é uma
lista de nomes de pacotes, separados por vírgulas (e opcionalmente por
espaços em branco). Nos campos
Breaks e
Conflicts, a
vírgula deve ler-se como "OU". Um qualificador opcional de
arquitectura pode também ser anexado ao nome do pacote com a mesma
sintaxe de em cima, mas a predefinição é
any em
vez da arquitectura de pacote binário. Pode também ser fornecida
uma versão opcional com a mesma sintaxe como em cima para os campos
Breaks,
Conflicts e
Replaces.
-
Enhances: package-list
- Isto é uma lista de pacotes que este melhora.
É semelhante a Suggests mas na direcção
oposta.
-
Provides: package-list
- Isto é uma lista de pacotes virtuais que este
fornece. Geralmente sito é usado no caso de vários pacotes
todos fornecerem o mesmo serviço. Por exemplo, sendmail e exim
podem servir como servidor de mail, assim eles fornecem um pacote comum
(“mail-transport-agent”) sobre o qual outros pacotes podem
depender. Isto vai permitir ao sendmail ou ao exim servir como
opção válida para satisfazer a dependência.
Isto previne que os pacotes que dependem de um servidor de mail tenham que
saber os nomes de pacotes de todos eles, e usar ‘ |’
para separar a lista.
A sintaxe de
Provides é uma lista de nomes de pacotes, separados
por vírgulas (e opcionalmente por espaços em branco). Um
qualificador opcional de arquitectura pode também ser anexado ao nome
do pacote com a mesma sintaxe de em cima. Se omitido, a
predefinição é a arquitectura do pacote binário
actual. Uma versão exacta (igual a) opcional pode também ser
dada com a mesma sintaxe de em cima (honrado desde dpkg 1.17.11).
-
Built-Using: package-list
- Este campo de dependência lista pacotes fonte extra
que foram usados durante a compilação deste pacote
binário, com o objectivo de respeitar licenças. Isto
é uma indicação para o software de
manutenção do arquivo que estes pacotes fonte extra
têm de ser mantidos enquanto este pacote biblioteca for mantido.
Este campo tem de ser uma lista de nomes de pacotes fonte separados por
vírgulas com relacionamentos de versão estritos ‘
=’ fechados dentro de parênteses. Note que é
provável que o software de manutenção do arquivo se
recuse a aceitar um envio que declare uma relação
Built-Using que não possa ser satisfeita dentro do
arquivo.
-
Static-Built-Using: package-list
- Este campo de dependência lista pacotes fonte extra
que foram usados durante a compilação deste pacote
binário, para objectivos de compilação
estática (por exemplo vincular contra bibliotecas estáticas.
compilações para linguagens centradas-na-fonte tais como Go
ou Rust, utilização de bibliotecas C/C++
apenas-cabeçalho, injectar bolhas de dados em código, etc.).
Isto é útil para seguir se este pacote pode precisar de ser
recompilado quando os pacotes fonte listados aqui forem actualizados, por
exemplo devido a actualizações de segurança. Este
campo tem de ser uma lista separada por vírgulas de nomes de
pacotes fonte com relacionamentos estritos de versão ‘
=’ fechados dentro de parênteses.
Suportado desde dpkg 1.21.3.
-
Built-For-Profiles: profile-list
(obsoleto)
- Este campo era usado para especificar uma lista de perfis
de compilação separados por espaços com que este
pacote binário foi compilado com (desde dpkg 1.17.2 até
1.18.18). A informação antes encontrada neste campo pode
agora ser encontrada no ficheiro .buildinfo, que o suplanta.
-
Auto-Built-Package: reason-list
- Esta campo especifica uma lista de razões separadas
por espaços de porquê este pacote foi auto-gerado. OS
pacotes binários marcados com este campo não irão
aparecer no ficheiro de controle fonte mestre debian/control. A
única razão usada actualmente é
debug-symbols.
-
Build-Ids: elf-build-id-list
- Este campo especifica uma lista de ids de
compilação de ELF separados por espaços. Estes
são identificadores únicos para objetos ELF semanticamente
idênticos, para cada um destes dentro do pacote.
O formato ou o modo de computar cada build-id não é definido
pelo desenho.
Package: grep
Essential: yes
Priority: required
Section: base
Maintainer: Wichert Akkerman <[email protected]>
Architecture: sparc
Version: 2.4-1
Pre-Depends: libc6 (>= 2.0.105)
Provides: rgrep
Conflicts: rgrep
Description: GNU grep, egrep and fgrep.
The GNU family of grep utilities may be the "fastest grep in the west".
GNU grep is based on a fast lazy-state deterministic matcher (about
twice as fast as stock Unix egrep) hybridized with a Boyer-Moore-Gosper
search for a fixed string that eliminates impossible text from being
considered by the full regexp matcher without necessarily having to
look at every character. The result is typically many times faster
than Unix grep or egrep. (Regular expressions containing backreferencing
will run more slowly, however).
O campo
Build-Ids usa um nome um pouco genérico fora do seu
contexto original dentro de um objeto ELF, o que serve um objectivo muito
específico e formato executável.
deb822(5),
deb-src-control(5),
deb(5),
deb-version(7),
debtags(1),
dpkg(1),
dpkg-deb(1).
Américo Monteiro
Se encontrar algum erro na tradução deste documento, por favor
comunique para Américo Monteiro <
[email protected]>.