PKGBUILD, o script responsável pela criação de pacotes para o Arch Linux.
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 posts

About author
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.
Articles