- bookworm-backports 4.24.0-2~bpo12+1
- testing 4.24.0-2
- unstable 4.25.0-1
PKGBUILD(5) | Manual do pacman | PKGBUILD(5) |
NOME¶
PKGBUILD - Arquivo de descrição de compilação de pacotes do Arch Linux
SINOPSE¶
PKGBUILD
DESCRIÇÃO¶
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.
Nota
Um exemplo de PKGBUILD, útil para referência, está localizado em /usr/share/pacman 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.
OPÇÕES E DIRETIVAS¶
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 pkgname, pkgver, pkgrel e arch.
Se você precisar criar qualquer variável personalizada para uso em seu processo de compilação, é recomendado prefixar seu nome com um _ (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.
pkgname (array)
pkgver
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).
pkgrel
epoch
pkgdesc
url
license (array)
install
changelog
source (array)
Fontes adicionais específicas da arquitetura podem ser adicionadas anexando um sublinhado e o nome da arquitetura, como, por exemplo, source_x86_64=(). Deve haver uma array de integridade correspondente com somas de verificação, por exemplo, cksums_x86_64=().
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=('nomedoarquivo::url').
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.
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.
validpgpkeys (array)
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.
noextract (array)
cksums (array)
md5sums, sha1sums, sha224sums, sha256sums, sha384sums, sha512sums, b2sums (arrays)
groups (array)
arch (array)
backup (array)
depends (array)
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.
Dependências específicas da arquitetura adicionais podem ser adicionadas anexando um sublinhado e o nome da arquitetura, por exemplo, depends_x86_64=().
makedepends (array)
Outros makedepends específicos de arquitetura podem ser adicionados anexando um sublinhado e o nome da arquitetura, por exemplo, makedepends_x86_64=().
checkdepends (array)
Outros checkdepends específicos da arquitetura podem ser adicionados anexando um sublinhado e o nome da arquitetura, por exemplo, checkdepends_x86_64=().
optdepends (array)
optdepends=('python: for library bindings')
Opções adicionais específicas da arquitetura podem ser adicionadas anexando um sublinhado e o nome da arquitetura, por exemplo, optdepends_x86_64=().
conflicts (array)
Conflitos específicos de arquitetura adicionais podem ser adicionados anexando um sublinhado e o nome da arquitetura, por exemplo, conflicts_x86_64=().
provides (array)
Provisões versionadas também são possíveis, no formato nome=versão. Por exemplo, dcron pode fornecer cron=2.0 para satisfazer a dependência cron>=2.0 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.
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.
Provisões específicas de arquitetura adicionais podem ser adicionadas anexando um sublinhado e o nome da arquitetura, por exemplo, provides_x86_64=().
replaces (array)
O sysupgrade é atualmente a única operação pacman que utiliza este campo. Uma sincronização ou atualização normal não usará seu valor.
Substituições específicas de arquitetura adicionais podem ser adicionadas anexando um sublinhado e o nome da arquitetura, por exemplo, replaces_x86_64=().
options (array)
strip
docs
libtool
staticlibs
emptydirs
zipman
ccache
distcc
buildflags
makeflags
debug
lto
FUNÇÕES DE EMPACOTAMENTO¶
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.
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.
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.
Função package()
Função prepare()
Função build()
Função check()
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:
srcdir
Todas as funções de empacotamento definidas acima são executadas de dentro de $srcdir
pkgdir
startdir
DIVISÃO DE PACOTES¶
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.
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.
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.
Uma diretiva global opcional está disponível ao compilar um pacote dividido:
pkgbase
SCRIPT DE INSTALAÇÃO/ATUALIZAÇÃO/REMOÇÃO¶
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.
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.
Os scripts são passados por uma ou duas “strings de versão completa”, onde uma string de versão completa é pkgver-pkgrel ou epoch:pkgver-pkgrel, se epoch for diferente de zero.
pre_install
post_install
pre_upgrade
post_upgrade
pre_remove
post_remove
Para usar esse recurso, crie um arquivo como pkgname.install e coloque-o no mesmo diretório do script PKGBUILD. Em seguida, use a diretiva de instalação:
install=pkgname.install
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 /usr/share/pacman como proto.install para referência com todas as funções disponíveis definidas.
USANDO FONTES VCS¶
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:
source=('diretório::url#fragmento?consulta')
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().
O URL de fonte é dividido em quatro componentes:
diretório
url
fragmento
bzr
fossil
git
hg
svn
consulta
EXEMPLO¶
A seguir está um exemplo de PKGBUILD para o pacote com patch. Para mais exemplos, dê uma olhada nos arquivos de compilação dos pacotes de sua distribuição. Para quem está usando Arch Linux, consulte a árvore do Sistema de Compilação do Arch (ABS).
# Maintainer: João Usuário <joao.usuario@example.com> pkgname=patch pkgver=2.7.1 pkgrel=1 pkgdesc="A utility to apply patch files to original sources" arch=('i686' 'x86_64') url="https://www.gnu.org/software/patch/patch.html" license=('GPL') groups=('base-devel') depends=('glibc') makedepends=('ed') optdepends=('ed: for "patch -e" functionality') source=("ftp://ftp.gnu.org/gnu/$pkgname/$pkgname-$pkgver.tar.xz"{,.sig}) md5sums=('e9ae5393426d3ad783a300a338c09b72'
'SKIP') build() {
cd "$srcdir/$pkgname-$pkgver"
./configure --prefix=/usr
make } package() {
cd "$srcdir/$pkgname-$pkgver"
make DESTDIR="$pkgdir/" install }
VEJA TAMBÉM¶
makepkg(8), pacman(8), makepkg.conf(5)
Consulte o site do pacman em https://archlinux.org/pacman/ para obter informações atuais sobre o pacman e suas ferramentas relacionadas.
BUGS¶
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.
AUTORES¶
Atuais mantenedores:
Principais colaboradores anteriores:
Para outros contribuidores, use git shortlog -s no repositório pacman.git.
TRADUÇÃO¶
A tradução para português brasileiro desta página man foi criada por Rafael Fontenelle <rafaelff@gnome.org>
Esta tradução é uma documentação livre; leia a Licença Pública Geral GNU Versão 3 ou posterior para as condições de direitos autorais. Nenhuma responsabilidade é aceita.
Se você encontrar algum erro na tradução desta página de manual, envie um e-mail para a lista de discussão de tradutores.
29 outubro 2024 | Pacman 6.0.2 |