Tecnologia

PKGBUILD, o script responsável pela criação de pacotes para o Arch Linux

Se você já usou distros como o Arch Linux e Manjaro, é provável que tenha se deparado com um repositório não oficial chamado AUR (Arch User Repository – Repositório de usuários do Arch), onde há diversos pacotes mantidos pela comunidade. O repositório contém scripts que permitem compilar um pacote e instalá-lo via pacman, que é o gerenciador de pacotes do Arch Linux e derivados, tais scripts são chamados de PKGBUILDs. 

O que é um PKGBUILD?

Quem curte utilizar o terminal e automatizar tarefas com scripts de shell, já deve ter uma noção do que são PKGBUILDs, são scripts de shell com algumas variáveis e funções que possuem instruções para que determinado pacote seja compilado.

pkgbuild

Variáveis comumente usadas num PKGBUILD

Para você entender um pouco melhor o que está acontecendo no script, falaremos um pouco sobre as principais variáveis que compõem um PKGBUILD.

pkgname: A variável pkgname definirá o nome do seu pacote ao instalar e como o gerenciador de pacotes (pacman) irá registrá-lo. O formato dessa variável, assume a forma de “variável=valor”, com o nome da variável à esquerda, o valor da variável à direita, separado por um sinal de igual.

pkgver: A variável pkgver, define a versão do pacote. Isso é muito importante para que o usuário saiba quando o pacote é atualizado pelo mantenedor ao ser configurado com uma versão mais alta.

pkgrel: A variável pkgrel notificará upgrades ao usuário caso o pacote seja configurado com uma versão maior. Ele serve para qualquer alteração que requeira que o pacote permaneça o mesmo, como qualquer alteração no próprio PKGBUILD. Isso será útil se você criou um PKGBUILD para um programa que usa (e deseja manter a versão igual à do pacote) e precisa corrigir um bug no próprio PKGBUILD.

pkgdesc: A variável pkgdesc define uma breve descrição do pacote para ajudar a identificá-lo.

arch: A variável arch define a arquitetura em que o pacote é compatível.

depends: A variável depends lista todas as dependências das quais o pacote necessita para funcionar.

optdepends: A variável optdepends lista dependências que não são necessárias para o funcionamento do pacote, mas que adicionam a ele funcionalidades extras.

conflicts: A variável conflicts dirá ao gerenciador de pacotes quais pacotes são conflitantes, os pacotes listados serão excluídos para que o pacote que será compilado pelo PKGBUILD possa ser instalado sem problemas.

license: A variável license define a licença de software sob a qual o programa será licenciado.

source: A variável source faz com que o makepkg saiba quais arquivos usar para compilar o pacote, pode conter uma variedade de tipos diferentes de fontes, incluindo arquivos e URLs locais.

sha512sums: A variável sha512sums verifica se os arquivos da variável source não foram modificados ou baixados incorretamente.

package: A package é considerada a variável mais importante para, de fato, gerar o pacote. É importante conhecer duas variáveis que compõem a package, são elas:

${srcdir}: É através dessa variável que o makepkg coloca os arquivos na variável source. Este é o diretório onde você pode interagir com os arquivos e fazer qualquer outra modificação necessária para os arquivos.

${pkgdir}: É nessa variável que são colocados os arquivos que serão instalados no sistema. A estrutura de pastas para $ {pkgdir} é configurada como se estivesse em um sistema real (ou seja, $ {pkgdir} /usr/bin/nome-do-script criará o arquivo /usr/bin/nome-do-script ao instalar com pacman.

Como ler o conteúdo de um PKGBUILD

Se você preza por segurança e entende o básico de shell script, é provável que queira ler o conteúdo de um PKGBUILD antes de compilar e instalar o pacote em seu sistema, para ter certeza que não se trata de um script malicioso. Fazer isso é muito simples, basta seguir o passo a passo:

Neste passo a passo, utilizarei o PKGBUILD do popular navegador Google Chrome partindo do preceito que você já tenha baixado o snapshot do arquivo.

Passo 1 – Abra o terminal e vá até o diretório no qual você baixou o arquivo. No meu caso, está no diretório “Downloads”.

passo1

Passo 2 – Você notará que o arquivo está empacotado (.tar) e comprimido (.gz), para desempacotar e descomprimir basta rodar o comando abaixo. O PKGBUILD é um dos arquivos que compõem o .tar.gz.

tar -xvf nome-do-arquivo.tar.gz
passo2

Passo 3 – Agora basta entrar no diretório descompactado e lá estará o PKGBUILD. Para fazer isso basta rodar o comando:

cd nome-do-diretorio
passo3

Passo 4 – O último passo, é abrir o arquivo e pronto, todo o conteúdo do PKGBUILD estará diante dos seus olhos. Para isso, basta utilizar o comando CAT, como mostra o exemplo abaixo, ou abra o arquivo no seu editor de texto favorito, afinal, o PKGBUILD é um arquivo de texto normal como qualquer outro.

cat PKGBUILD
passo4

Compilando um PKGBUILD e instalando o pacote via PACMAN

Você deve estar se perguntando:  “Mas como eu transformo um PKGBUILD em um pacote instalável?” Bom, é mais fácil do que aparenta ser.

Primeiro basta compilar o PKGBUILD utilizando a ferramenta makepkg seguindo os passos abaixo:

Passo 1 – Uma vez tendo desempacotado e descomprimido o arquivo .tar.gz e estando dentro do diretório do pacote, basta rodar o comando abaixo. O comando iniciará a compilação do pacote e resolverá todas as dependências.

makepkg -s


Passo 2 – Ao término da compilação, você terá um pacote instalável que possuirá as extensões .pkg.tar.xz e você poderá instalá-lo facilmente utilizando o gerenciador de pacotes pacman executando o comando:

sudo pacman -U nome-do-pacote.pkg.tar.xz

Prontinho! O pacote instalado já estará pronto para ser utilizado em seu sistema.

Parece que chegamos ao fim. Você já conhecia o PKGBUILD? Espero que tenha compreendido como tudo funciona. Caso queira estudar mais a fundo o PKGBUILD e aprender até mesmo a criar o seu próprio, a wiki do Arch poderá lhe ajudar muito nessa aventura.


Abraços e até a próxima.

Diolinux Ofertas - Aproveite os melhores descontos em diversos produtos!
98 postagens

Sobre o autor
Opa! Fala, meus consagrados. Me chamo Durval Henrique, mais conhecido por aí como Lavrudinho. Apaixonado pelo conceito de tiling window manager, entusiasta da tecnologia em geral e um projeto de desenvolvedor web.
Artigos
Postagens relacionadas
Tecnologia

Descomplicando termos técnicos para hospedagem de sites

TecnologiaVídeo

EcoFlow DELTA 2, uma poderosa estação de energia portátil

Tecnologia

Domine o CSS Grid Layout com o Penpot