.\" -*- coding: UTF-8 -*-
'\" t
.\" Title: pkgbuild
.\" Author: [see the "Authors" section]
.\" Generator: DocBook XSL Stylesheets vsnapshot
.\" Date: 2024-02-06
.\" Manual: Pacman Manual
.\" Source: Pacman 6.0.2
.\" Language: English
.\"
.\"*******************************************************************
.\"
.\" This file was generated with po4a. Translate the source file.
.\"
.\"*******************************************************************
.TH PKGBUILD 5 "6 fevereiro 2024" "Pacman 6\&.0\&.2" "Manual do pacman"
.ie \n(.g .ds Aq \(aq
.el .ds Aq '
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.\" http://bugs.debian.org/507673
.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
.\" -----------------------------------------------------------------
.\" * MAIN CONTENT STARTS HERE *
.\" -----------------------------------------------------------------
.SH NOME
PKGBUILD \- Arquivo de descrição de compilação de pacotes do Arch Linux
.SH SINOPSE
.sp
PKGBUILD
.SH DESCRIÇÃO
.sp
Esta página do manual descreve as regras gerais sobre PKGBUILDs\&. Uma vez
que um PKGBUILD é escrito, o pacote real é compilado usando makepkg e
instalado com pacman\&.
.if n \{\
.sp
.\}
.RS 4
.it 1 an-trap
.nr an-no-space-flag 1
.nr an-break-flag 1
.br
.ps +1
\fBNota\fP
.ps -1
.br
.sp
Um exemplo de PKGBUILD, útil para referência, está localizado em
\fI/usr/share/pacman\fP junto com outros arquivos de exemplo, como um script de
instalação\&. Você pode copiar o arquivo PKGBUILD\&.proto fornecido para um
novo diretório de compilação de pacote e fazer personalizações para atender
às suas necessidades\&.
.sp .5v
.RE
.SH "OPÇÕES E DIRETIVAS"
.sp
A seguir está uma lista de opções e diretivas padrão disponíveis para uso em
um PKGBUILD\&. Todos eles são compreendidos e interpretados pelo makepkg, e
a maioria deles será transferida diretamente para o pacote compilado\&. Os
campos obrigatórios para um PKGBUILD minimamente funcional são \fBpkgname\fP,
\fBpkgver\fP, \fBpkgrel\fP e \fBarch\fP\&.
.sp
Se você precisar criar qualquer variável personalizada para uso em seu
processo de compilação, é recomendado prefixar seu nome com um \fI_\fP
(sublinhado)\&. Isso evitará qualquer conflito de nome possível com
variáveis internas do makepkg\&. Por exemplo, para armazenar a versão base
do kernel em uma variável, use algo semelhante a $_basekernver\&.
.PP
\fBpkgname (array)\fP
.RS 4
O nome do pacote ou um array de nomes para pacotes divididos\&. Os
caracteres válidos para membros deste array são alfanuméricos e qualquer um
dos seguintes caracteres: \(lq@ \&. _ + \-\(rq\&. Além disso, os nomes não
podem começar com hífenes ou pontos\&.
.RE
.PP
\fBpkgver\fP
.RS 4
A versão do software conforme lançada pelo autor (por exemplo,
\fI2\&.7\&.1\fP)\&. A variável não pode conter dois pontos, barras, hífenes ou
espaços em branco\&.
.sp
A variável pkgver pode ser atualizada automaticamente fornecendo uma função
pkgver() no PKGBUILD que produz a nova versão do pacote\&. Isso é executado
após o download e a extração de fontes e a execução da função prepare() (se
houver), para que possa usar esses arquivos para determinar o novo
pacote\&. Isso é mais útil quando usado com fontes de sistemas de controle
de versão (veja abaixo)\&.
.RE
.PP
\fBpkgrel\fP
.RS 4
Este é o número de lançamento específico para a distribuição\&. Isso permite
que os mantenedores do pacote façam atualizações nos sinalizadores de
configuração do pacote, por exemplo\&. Isso normalmente é definido como \fI1\fP
para cada nova versão de software upstream e incrementado para atualizações
intermediárias de PKGBUILD\&. A variável é positiva inteiro, com um nível de
sub\-lançamento opcional especificado pela adição de outro inteiro positivo
separado por um ponto (ou seja, na forma x\&.y)\&.
.RE
.PP
\fBepoch\fP
.RS 4
Usado para forçar o pacote a ser visto como mais novo do que qualquer versão
anterior com uma época inferior, mesmo se o número da versão normalmente não
acionaria tal atualização\&. Este valor deve ser um número inteiro positivo;
o valor padrão se não for especificado é \fI0\fP\&. Isso é útil quando o
esquema de numeração de versão de um pacote muda (ou é alfanumérico),
quebrando a lógica de comparação de versão normal\&. Veja \fBpacman\fP(8) para
mais informações sobre comparações de versão\&.
.RE
.PP
\fBpkgdesc\fP
.RS 4
Esta deve ser uma breve descrição do pacote e sua funcionalidade\&. Tente
manter a descrição em uma linha de texto e não usar o nome do pacote\&.
.RE
.PP
\fBurl\fP
.RS 4
Este campo contém uma URL que está associado ao software sendo
empacotado\&. Normalmente é o site do projeto \&.
.RE
.PP
\fBlicense (array)\fP
.RS 4
Este campo especifica a(s) licença(s) que se aplicam ao pacote\&. As
licenças comumente usadas podem ser encontradas em
\fI/usr/share/licences/common\fP\&. Se você vir a licença do pacote lá,
simplesmente faça referência a ela no campo de licença (por exemplo,
license=(\*(AqGPL\*(Aq))\&. Se o pacote fornece uma licença não disponível
em \fI/usr/share/licences/common\fP, então você deve incluí\-lo no próprio
pacote e definir license=(\*(Aqcustom\*(Aq) ou
license=(\*(Aqcustom:NomeLicença\*(Aq)\&. A licença deve ser colocada em
\fI$pkgdir/usr/share/licenses/$pkgname/\fP ao compilar o pacote\&. Se várias
licenças forem aplicáveis, liste todas elas: license=(\*(AqGPL\*(Aq
\*(AqFDL\*(Aq)\&.
.RE
.PP
\fBinstall\fP
.RS 4
Especifica um script de instalação especial que deve ser incluído no
pacote\&. Este arquivo deve residir no mesmo diretório que o PKGBUILD e será
copiado para o pacote por makepkg\&. Não precisa ser incluído no array de
fontes (por exemplo, install=$pkgname\&.install)\&.
.RE
.PP
\fBchangelog\fP
.RS 4
Especifica um arquivo changelog que deve ser incluído no pacote\&. O arquivo
changelog deve terminar com uma única nova linha\&. Este arquivo deve
residir no mesmo diretório que o PKGBUILD e será copiado para o pacote pelo
makepkg\&. Não precisa ser incluído no array de fontes (por exemplo,
changelog=$pkgname\&.changelog)\&.
.RE
.PP
\fBsource (array)\fP
.RS 4
Um array de arquivos fonte necessários para compilar o pacote\&. Os arquivos
fonte devem residir no mesmo diretório que o PKGBUILD ou ser uma URL
totalmente qualificada que o makepkg pode usar para baixar o arquivo\&. Para
simplificar a manutenção de PKGBUILDs, use as variáveis $pkgname e $pkgver
ao especificar o local do download, se possível\&. Os arquivos compactados
serão extraídos automaticamente, a menos que sejam encontrados no array
noextract descrito abaixo\&.
.sp
Fontes adicionais específicas da arquitetura podem ser adicionadas anexando
um sublinhado e o nome da arquitetura, como, por exemplo,
\fIsource_x86_64=()\fP\&. Deve haver uma array de integridade correspondente
com somas de verificação, por exemplo, \fIcksums_x86_64=()\fP\&.
.sp
Também é possível alterar o nome do arquivo baixado, o que é útil com URLs
estranhas e para lidar com vários arquivos fonte com o mesmo nome\&. A
sintaxe é: source=(\*(Aqnomedoarquivo::url\*(Aq)\&.
.sp
makepkg também oferece suporte à compilação de versões de desenvolvimento de
pacotes usando fontes baixadas de sistemas de controle de versão
(VCS)\&. Para obter mais informações, consulte Usando fontes VCS abaixo\&.
.sp
Os arquivos no array fonte com extensões \&.sig, \&.sign ou \&.asc são
reconhecidos pelo makepkg como assinaturas PGP e serão usados
automaticamente para verificar a integridade do arquivo fonte
correspondente\&.
.RE
.PP
\fBvalidpgpkeys (array)\fP
.RS 4
Um array de impressões digitais PGP\&. Se este array não estiver vazio,
makepkg só aceitará assinaturas das chaves listadas aqui e irá ignorar os
valores de confiança do chaveiro\&. Se o arquivo fonte foi assinado com uma
subchave, makepkg ainda usará a chave primária para comparação\&.
.sp
Somente impressões digitais completas são aceitas\&. Elas devem estar em
maiúsculas e não devem conter caracteres de espaço em branco\&.
.RE
.PP
\fBnoextract (array)\fP
.RS 4
Um array de nomes de arquivos correspondentes aos do array fonte\&. Os
arquivos listados aqui não serão extraídos com o restante dos arquivos
fonte\&. Isso é útil para pacotes que usam dados compactados diretamente\&.
.RE
.PP
\fBcksums (array)\fP
.RS 4
Este array contém somas de verificação CRC para cada arquivo fonte
especificado no array de fontes (na mesma ordem)\&. makepkg usará isso para
verificar a integridade do arquivo fonte durante as compilações
subsequentes\&. Se \fISKIP\fP for colocado no array no lugar de um hash normal,
a verificação de integridade desse arquivo fonte será ignorada\&. Para gerar
facilmente cksums, execute \(lqmakepkg \-g >> PKGBUILD\(rq\&. Se
desejar, mova a linha ck5sums para um local apropriado\&. Note que somas de
verificação gerados por "makepkg \-g" devem ser verificados usando valores de
soma de verificação fornecido pelo desenvolvedor do software\&.
.RE
.PP
\fBmd5sums, sha1sums, sha224sums, sha256sums, sha384sums, sha512sums, b2sums (arrays)\fP
.RS 4
Verificações de integridade alternativas aceitas pelo makepkg; todos elas se
comportam de forma semelhante à opção cksums descrita acima\&. Para
habilitar o uso e geração dessas somas de verificação, certifique\-se de
configurar a opção INTEGRITY_CHECK em \fBmakepkg.conf\fP(5)\&.
.RE
.PP
\fBgroups (array)\fP
.RS 4
Um array de nomes simbólicos que representam grupos de pacotes, permitindo
que você instale vários pacotes solicitando um único destino\&. Por exemplo,
pode\-se instalar todos os pacotes do KDE instalando o grupo \fIkde\fP\&.
.RE
.PP
\fBarch (array)\fP
.RS 4
Define em quais arquiteturas o pacote fornecido está disponível (por
exemplo, arch=(\*(Aqi686\*(Aq \*(Aqx86_64\*(Aq))\&. Pacotes que não contêm
arquivos específicos de arquitetura deve usar arch=(\*(Aqany\*(Aq)\&. Os
caracteres válidos para membros desta matriz são alfanuméricos e
\(lq_\(rq\&.
.RE
.PP
\fBbackup (array)\fP
.RS 4
Um array de nomes de arquivo, sem barras no início, cujo backup deve ser
feito se o pacote for removido ou atualizado\&. Isso é comumente usado para
pacotes que colocam arquivos de configuração em \fI/etc\fP\&. Veja "Manipulação
de Arquivos de Configuração" em \fBpacman\fP(8) para mais informações\&.
.RE
.PP
\fBdepends (array)\fP
.RS 4
Um array de pacotes dos quais este pacote depende para executar\&. As
entradas nesta lista devem ser colocadas entre aspas simples e conter pelo
menos o nome do pacote\&. As inscrições também podem incluir um requisito de
versão no formato \fInome<>versão\fP, onde <> é uma das cinco
comparações: >= (maior ou igual a), <= (menor ou igual a), = (igual
a), > (maior que) ou < (menor que)\&.
.sp
Se o nome da dependência parece ser uma biblioteca (termina com \&.so),
makepkg tentará encontrar um binário que dependa da biblioteca no pacote
compilado e anexará a versão necessária para o binário\&. Anexar você mesmo
a versão desativa a detecção automática\&.
.sp
Dependências específicas da arquitetura adicionais podem ser adicionadas
anexando um sublinhado e o nome da arquitetura, por exemplo,
\fIdepends_x86_64=()\fP\&.
.RE
.PP
\fBmakedepends (array)\fP
.RS 4
Um array de pacotes dos quais este pacote depende para compilar, mas não são
necessários em tempo de execução\&. Os pacotes nesta lista seguem o mesmo
formato que o array depends\&.
.sp
Outros makedepends específicos de arquitetura podem ser adicionados anexando
um sublinhado e o nome da arquitetura, por exemplo,
\fImakedepends_x86_64=()\fP\&.
.RE
.PP
\fBcheckdepends (array)\fP
.RS 4
Um array de pacotes dos quais este pacote depende para executar seu conjunto
de testes, mas não são necessários em tempo de execução\&. Os pacotes nesta
lista seguem o mesmo formato que depends\&. Essas dependências são
consideradas apenas quando a função check() está presente e deve ser
executada por makepkg\&.
.sp
Outros checkdepends específicos da arquitetura podem ser adicionados
anexando um sublinhado e o nome da arquitetura, por exemplo,
\fIcheckdepends_x86_64=()\fP\&.
.RE
.PP
\fBoptdepends (array)\fP
.RS 4
Um array de pacotes (e os motivos que os acompanham) que não são essenciais
para a funcionalidade básica, mas podem ser necessários para fazer uso
completo do conteúdo deste pacote\&. optdepends são atualmente apenas para
fins informativos e não são utilizados pelo pacman durante a resolução de
dependência\&. Os pacotes nesta lista seguem o mesmo formato que depende,
com uma descrição opcional anexada\&. O formato para especificar as
descrições optdepends é:
.sp
.if n \{\
.RS 4
.\}
.nf
optdepends=(\*(Aqpython: for library bindings\*(Aq)
.fi
.if n \{\
.RE
.\}
.sp
Opções adicionais específicas da arquitetura podem ser adicionadas anexando
um sublinhado e o nome da arquitetura, por exemplo,
\fIoptdepends_x86_64=()\fP\&.
.RE
.PP
\fBconflicts (array)\fP
.RS 4
Um array de pacotes que entrarão em conflito com este pacote (ou seja, eles
não podem ser instalados ao mesmo tempo)\&. Esta diretiva segue o mesmo
formato que depends\&. Conflitos versionados são suportados usando os
operadores conforme descrito em depends\&.
.sp
Conflitos específicos de arquitetura adicionais podem ser adicionados
anexando um sublinhado e o nome da arquitetura, por exemplo,
\fIconflicts_x86_64=()\fP\&.
.RE
.PP
\fBprovides (array)\fP
.RS 4
Um array de \(lqprovisões virtuais\(rq que este pacote oferece\&. Isso
permite que um pacote forneça dependências diferentes de seu próprio nome de
pacote\&. Por exemplo, o pacote dcron pode fornecer \fIcron\fP, que permite que
os pacotes dependam do \fIcron\fP em vez de \fIdcron OU fcron\fP\&.
.sp
Provisões versionadas também são possíveis, no formato \fInome=versão\fP\&. Por
exemplo, dcron pode fornecer \fIcron=2\&.0\fP para satisfazer a dependência
\fIcron>=2\&.0\fP de outros pacotes\&. As disposições que envolvem os
operadores > e < são inválidas, pois apenas versões específicas de
um pacote podem ser fornecidas\&.
.sp
Se o nome da provisão parecer uma biblioteca (termina com \&.so), makepkg
tentará encontrar a biblioteca no pacote compilado e anexar a versão
correta\&. Anexar você mesmo a versão desativa a detecção automática\&.
.sp
Provisões específicas de arquitetura adicionais podem ser adicionadas
anexando um sublinhado e o nome da arquitetura, por exemplo,
\fIprovides_x86_64=()\fP\&.
.RE
.PP
\fBreplaces (array)\fP
.RS 4
Um array de pacotes que este pacote deve substituir\&. Isso pode ser usado
para lidar com pacotes renomeados/combinados\&. Por exemplo, se o pacote
\fBj2re\fP for renomeado para \fBjre\fP, esta diretiva permite que atualizações
futuras continuem conforme o esperado, mesmo que o pacote tenha sido
movido\&. Há suporte a substituições versionadas ao usar os operadores
conforme descrito em depends\&.
.sp
O sysupgrade é atualmente a única operação pacman que utiliza este
campo\&. Uma sincronização ou atualização normal não usará seu valor\&.
.sp
Substituições específicas de arquitetura adicionais podem ser adicionadas
anexando um sublinhado e o nome da arquitetura, por exemplo,
\fIreplaces_x86_64=()\fP\&.
.RE
.PP
\fBoptions (array)\fP
.RS 4
Este array permite que você substitua alguns dos comportamentos padrão do
makepkg ao compilar pacotes\&. Para definir uma opção, apenas inclua o nome
da opção na array de opções\&. Para reverter o comportamento padrão, coloque
um \(lq!\(rq na frente da opção\&. Especifique apenas as opções que deseja
substituir, o resto será obtido de \fBmakepkg.conf\fP(5)\&. \fBNOTA:\fP \fIforce\fP é
uma opção agora removida em favor da variável de nível superior \fIepoch\fP\&.
.PP
\fBstrip\fP
.RS 4
Retira símbolos de binários e bibliotecas\&. Se você usa frequentemente um
depurador em programas ou bibliotecas, pode ser útil desabilitar esta
opção\&.
.RE
.PP
\fBdocs\fP
.RS 4
Armazena diretórios de documentação\&. Se você deseja excluir diretórios
doc, especifique !docs no array\&.
.RE
.PP
\fBlibtool\fP
.RS 4
Deixa arquivos libtool (\&.la) nos pacotes\&. Especifique !libtool para
removê\-los\&.
.RE
.PP
\fBstaticlibs\fP
.RS 4
Deixa os arquivos de biblioteca estática (\&.a) nos pacotes\&. Especifique
!staticlibs para removê\-los (se eles tiverem uma contraparte
compartilhada)\&.
.RE
.PP
\fBemptydirs\fP
.RS 4
Deixa diretórios vazios nos pacotes\&.
.RE
.PP
\fBzipman\fP
.RS 4
Comprime páginas man e info com gzip\&.
.RE
.PP
\fBccache\fP
.RS 4
Permite o uso de ccache durante o build()\&. Mais útil em sua forma negativa
!ccache com pacotes selecionados que têm problemas de compilação com
ccache\&.
.RE
.PP
\fBdistcc\fP
.RS 4
Permite o uso de distcc durante o build()\&. Mais útil em sua forma negativa
!distcc com pacotes selecionados que têm problemas de compilação com
distcc\&.
.RE
.PP
\fBbuildflags\fP
.RS 4
Permite o uso de buildflags específicos do usuário (CPPFLAGS, CFLAGS,
CXXFLAGS, LDFLAGS) durante o build() conforme especificado no
\fBmakepkg.conf\fP(5)\&. Mais útil em sua forma negativa !buildflags com
pacotes selecionados que têm problemas de compilação com buildflags
personalizados\&.
.RE
.PP
\fBmakeflags\fP
.RS 4
Permite o uso de makeflags específicos do usuário durante o build() conforme
especificado no \fBmakepkg.conf\fP(5)\&. Mais útil em sua forma negativa
!makeflags com pacotes selecionados que têm problemas para compilar com
makeflags personalizados como \-j2 (ou superior)\&.
.RE
.PP
\fBdebug\fP
.RS 4
Adiciona os sinalizadores de depuração especificados pelo usuário
(DEBUG_CFLAGS, DEBUG_CXXFLAGS) aos seus buildflags correspondentes, conforme
especificado em \fBmakepkg.conf\fP(5). Quando usado em combinação com a opção
\(oqstrip\(cq, um pacote separado contendo os símbolos de depuração é
criado\&.
.RE
.PP
\fBlto\fP
.RS 4
Habilita compilação de pacotes usando otimização em tempo de vinculação
(link time optimization)\&. Adiciona \fI\-flto\fP a CFLAGS e CXXFLAGS\&.
.RE
.RE
.SH "FUNÇÕES DE EMPACOTAMENTO"
.sp
Além das diretivas acima, PKGBUILDs exigem um conjunto de funções que
fornecem instruções para compilar e instalar o pacote\&. No mínimo, o
PKGBUILD deve conter uma função package() que instala todos os arquivos do
pacote no diretório de empacotamento, com funções opcionais prepare(),
build() e check() sendo usadas para criar esses arquivos a partir do
código\-fonte\&.
.sp
Ele é obtido e executado diretamente pelo makepkg, portanto, qualquer coisa
que o Bash ou o sistema tenha disponível está disponível para uso
aqui\&. Certifique\-se de que quaisquer comandos exóticos usados sejam
cobertos pelo array makedepends\&.
.sp
Se você criar qualquer variável própria em qualquer uma dessas funções, é
recomendável usar a palavra\-chave local do Bash para definir o escopo da
variável dentro da função\&.
.PP
\fBFunção package()\fP
.RS 4
A função package() é usada para instalar arquivos no diretório que se
tornará o diretório raiz do pacote compilado e é executada após todas as
funções opcionais listadas abaixo\&. O estágio de empacotamento é executado
usando fakeroot para garantir as permissões de arquivo corretas no pacote
resultante\&. Todas as outras funções serão executadas como o usuário
chamando makepkg\&.
.RE
.PP
\fBFunção prepare()\fP
.RS 4
Uma função opcional prepare() pode ser especificada na qual operações para
preparar fontes para compilação, como aplicação de patches, são
realizadas\&. Esta função é executada após a extração de fonte e antes da
função build()\&. A função prepare() é ignorada quando a extração de fonte é
ignorada\&.
.RE
.PP
\fBFunção build()\fP
.RS 4
A função opcional build() é usada para compilar e/ou ajustar os arquivos
fontes na preparação para serem instalados pela função package()\&.
.RE
.PP
\fBFunção check()\fP
.RS 4
Uma função opcional check() pode ser especificada na qual um conjunto de
testes do pacote pode ser executado\&. Esta função é executada entre as
funções build() e package()\&. Certifique\-se de que todos os comandos
exóticos usados sejam cobertos pelo array checkdepends\&.
.RE
.sp
Todas as variáveis acima, como $pkgname e $pkgver, estão disponíveis para
uso nas funções de empacotamento\&. Além disso, makepkg define as seguintes
variáveis:
.PP
\fBsrcdir\fP
.RS 4
Contém o diretório onde makepkg extrai, ou copia, todos os arquivos fonte\&.
.sp
Todas as funções de empacotamento definidas acima são executadas a partir de
$srcdir
.RE
.PP
\fBpkgdir\fP
.RS 4
Contém o diretório onde makepkg empacota o pacote instalado\&. Este
diretório se tornará o diretório raiz do seu pacote compilado\&. Esta
variável deve ser usada apenas na função package().
.RE
.PP
\fBstartdir\fP
.RS 4
Contém o caminho absoluto para o diretório onde o PKGBUILD está localizado,
que normalmente é a saída de $(pwd) quando o makepkg é iniciado\&. O uso
desta variável foi descontinuado e fortemente desencorajado\&.
.RE
.SH "DIVISÃO DE PACOTES"
.sp
makepkg oferece suporte à compilação de múltiplos pacotes de um único
PKGBUILD\&. Isso é obtido atribuindo um array de nomes de pacotes à diretiva
pkgname\&. Cada pacote dividido usa uma função de empacotamento
correspondente com o nome package_foo(), onde foo é o nome do pacote
dividido\&.
.sp
Todas as opções e diretivas para os pacotes divididos são padronizados para
os valores globais fornecidos no PKGBUILD\&. No entanto, os seguintes podem
ser substituídos dentro da função de empacotamento de cada pacote dividido:
pkgdesc, arch, url, license, groups, depends, optdepends, provides,
conflicts, replaces, backup, options, install e changelog\&.
.sp
Note que makepkg não considera as dependências de um pacote dividido
específico ao verificar se as dependências estão instaladas antes da
compilação do pacote e com \-\-syncdeps\&. Todos os pacotes necessários para
compilar o pacote devem ser especificados nos arrays globais depends e
makedepends\&.
.sp
Uma diretiva global opcional está disponível ao compilar um pacote dividido:
.PP
\fBpkgbase\fP
.RS 4
O nome usado para se referir ao grupo de pacotes na saída do makepkg e na
nomenclatura de tarballs apenas com o código\-fonte\&. Se não for
especificado, o primeiro elemento no array pkgname é usado\&. Os caracteres
válidos para esta variável são alfanuméricos e qualquer um dos seguintes
caracteres: \(lq@ \&. _ + \-\(rq\&. Além disso, a variável não pode começar
com hífenes ou pontos\&.
.RE
.SH "SCRIPT DE INSTALAÇÃO/ATUALIZAÇÃO/REMOÇÃO"
.sp
Pacman tem a capacidade de armazenar e executar um script específico do
pacote ao instalar, remover ou atualizar um pacote\&. Isso permite que um
pacote se configure após a instalação e execute uma ação oposta na
remoção\&.
.sp
A hora exata em que o script é executado varia com cada operação e deve ser
autoexplicativa\&. Observe que durante uma operação de atualização, nenhuma
das funções de instalação ou remoção será chamada\&.
.sp
Os scripts são passados por uma ou duas \(lqstrings de versão
completa\(rq, onde uma string de versão completa é \fIpkgver\-pkgrel\fP ou
\fIepoch:pkgver\-pkgrel\fP, se epoch for diferente de zero\&.
.PP
\fBpre_install\fP
.RS 4
Executa imediatamente antes dos arquivos serem extraídos\&. Um argumento é
passado: string de versão completa do pacote novo\&.
.RE
.PP
\fBpost_install\fP
.RS 4
Executa imediatamente após os arquivos serem extraídos\&. Um argumento é
passado: string de versão completa do pacote novo\&.
.RE
.PP
\fBpre_upgrade\fP
.RS 4
Executa imediatamente antes dos arquivos serem extraídos\&. Dois argumentos
são passados nesta ordem: string da versão completa do pacote novo, string
da versão completa do pacote antigo\&.
.RE
.PP
\fBpost_upgrade\fP
.RS 4
Executa após os arquivos serem extraídos\&. Dois argumentos são passados
nesta ordem: string da versão completa do pacote novo, string da versão
completa do pacote antigo\&.
.RE
.PP
\fBpre_remove\fP
.RS 4
Executa imediatamente antes dos arquivos serem removidos\&. Um argumento é
passado: string de versão completa do pacote antigo\&.
.RE
.PP
\fBpost_remove\fP
.RS 4
Executa logo após os arquivos serem removidos\&. Um argumento é passado:
string de versão completa do pacote antigo\&.
.RE
.sp
Para usar esse recurso, crie um arquivo como \fIpkgname\&.install\fP e
coloque\-o no mesmo diretório do script PKGBUILD\&. Em seguida, use a
diretiva de instalação:
.sp
.if n \{\
.RS 4
.\}
.nf
install=pkgname\&.install
.fi
.if n \{\
.RE
.\}
.sp
O script de instalação não precisa ser especificado no array de fontes\&. Um
arquivo de instalação de modelo está disponível em \fI/usr/share/pacman\fP como
\fIproto\&.install\fP para referência com todas as funções disponíveis
definidas\&.
.SH "USANDO FONTES VCS"
.sp
A compilação de uma versão de desenvolvimento de um pacote usando fontes de
um sistema de controle de versão (VCS) é habilitada especificando a fonte no
formato:
.sp
.if n \{\
.RS 4
.\}
.nf
source=(\*(Aqdiretório::url#fragmento?consulta\*(Aq)
.fi
.if n \{\
.RE
.\}
.sp
Atualmente, o makepkg tem suporte aos sistemas de controle de versão Bazaar,
Git, Subversion, Fossil e Mercurial\&. Para outros sistemas de controle de
versão, a clonagem manual dos repositórios upstream deve ser feita na função
prepare()\&.
.sp
O URL de fonte é dividido em quatro componentes:
.PP
\fBdiretório\fP
.RS 4
(opcional) Especifica um nome de diretório alternativo para makepkg para
baixar o código\-fonte de VCS\&.
.RE
.PP
\fBurl\fP
.RS 4
A URL para o repositório VCS\&. Isso deve incluir o VCS no protocolo de URL
para makepkg para reconhecê\-lo como uma fonte VCS\&. Se o protocolo não
incluir o nome VCS, ele pode ser adicionado prefixando a URL com vcs+\&. Por
exemplo, usar um repositório Git sobre HTTPS teria uma URL de fonte no
formato: git+https://\&.\&.\&.\&.
.RE
.PP
\fBfragmento\fP
.RS 4
(opcional) Permite especificar um número de revisão ou branch para makepkg
para checkout do VCS\&. Um fragmento tem o formato tipo=valor.Por exemplo,
para fazer o checkout de uma determinada revisão, a linha de fonte teria o
formato source=(url#revision=123)\&. Os tipos disponíveis dependem do VCS
sendo usado:
.PP
\fBbzr\fP
.RS 4
revisão (veja \*(Aqbzr help revisionspec\*(Aq para detalhes)
.RE
.PP
\fBfossil\fP
.RS 4
branch, commit, tag
.RE
.PP
\fBgit\fP
.RS 4
branch, commit, tag
.RE
.PP
\fBhg\fP
.RS 4
branch, revisão, tag
.RE
.PP
\fBsvn\fP
.RS 4
revisão
.RE
.RE
.PP
\fBconsulta\fP
.RS 4
(opcional) Permite especificar se um checkout VCS deve ser verificado para
revisões assinadas por PGP\&. A linha de origem deve ter o formato
source=(url#fragmento?assinada) ou
source=(url?assinada#fragmento)\&. Atualmente há suporte apenas para Git\&.
.RE
.SH EXEMPLO
.sp
A seguir está um exemplo de PKGBUILD para o pacote de \fIpatch\fP\&. Para mais
exemplos, dê uma olhada nos arquivos de compilação dos pacotes de sua
distribuição\&. Para aqueles que usam Arch Linux, consulte a árvore Arch
Build System (ABS)\&.
.sp
.if n \{\
.RS 4
.\}
.nf
# Maintainer: João Usuário
pkgname=patch
pkgver=2\&.7\&.1
pkgrel=1
pkgdesc="A utility to apply patch files to original sources"
arch=(\*(Aqi686\*(Aq \*(Aqx86_64\*(Aq)
url="https://www\&.gnu\&.org/software/patch/patch\&.html"
license=(\*(AqGPL\*(Aq)
groups=(\*(Aqbase\-devel\*(Aq)
depends=(\*(Aqglibc\*(Aq)
makedepends=(\*(Aqed\*(Aq)
optdepends=(\*(Aqed: for "patch \-e" functionality\*(Aq)
source=("ftp://ftp\&.gnu\&.org/gnu/$pkgname/$pkgname\-$pkgver\&.tar\&.xz"{,\&.sig})
md5sums=(\*(Aqe9ae5393426d3ad783a300a338c09b72\*(Aq
\*(AqSKIP\*(Aq)
build() {
cd "$srcdir/$pkgname\-$pkgver"
\&./configure \-\-prefix=/usr
make
}
package() {
cd "$srcdir/$pkgname\-$pkgver"
make DESTDIR="$pkgdir/" install
}
.fi
.if n \{\
.RE
.\}
.SH "VEJA TAMBÉM"
.sp
\fBmakepkg\fP(8), \fBpacman\fP(8), \fBmakepkg.conf\fP(5)
.sp
Consulte o site do pacman em https://archlinux\&.org/pacman/ para obter
informações atuais sobre o pacman e suas ferramentas relacionadas\&.
.SH BUGS
.sp
Bugs? Você deve estar brincando; não há erros neste software\&. Mas se por
acaso estivermos errados, envie um relatório de erro com o máximo de
detalhes possível no rastreador de erros do Arch Linux na seção Pacman\&.
.SH AUTORES
.sp
Atuais mantenedores:
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
Allan McRae
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
Andrew Gregory
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
Eli Schwartz
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
Morgan Adamiec
.RE
.sp
Principais colaboradores anteriores:
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
Judd Vinet
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
Aurelien Foret
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
Aaron Griffin
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
Dan McGee
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
Xavier Chantry
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
Nagy Gabor
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
Dave Reisner
.RE
.sp
Para outros contribuidores, use git shortlog \-s no repositório
pacman\&.git\&.
.PP
.SH TRADUÇÃO
A tradução para português brasileiro desta página man foi criada por
Rafael Fontenelle
.
.PP
Esta tradução é uma documentação livre; leia a
.UR https://www.gnu.org/licenses/gpl-3.0.html
Licença Pública Geral GNU Versão 3
.UE
ou posterior para as condições de direitos autorais.
Nenhuma responsabilidade é aceita.
.PP
Se você encontrar algum erro na tradução desta página de manual,
envie um e-mail para
.MT debian-l10n-portuguese@lists.debian.org
a lista de discussão de tradutores
.ME .