Pular para o conteúdo

Introdução ao Arch Build System

O artigo descreve de forma geral o uso do Arch Build System, que torna possível a compilação de pacotes para Arch Linux a partir dos códigos-fonte ao estilo "Ports" do FreeBSD. Também será dado uma introdução sobre PKGBUILDS e FLAGS para uso no arquivo makepkg.conf.
Xerxes xerxeslins
Hits: 24.768 Categoria: Linux Subcategoria: Introdução
  • Indicar
  • Impressora
  • Denunciar

Parte 2: PKGBUILD e Makeworld

Eis o formato de um PKGBUILD:

# Contributor: Seu Nome <seuemaill@dominio.com>
pkgname=NOME
pkgver=VERSAO
pkgrel=1
pkgdesc=""
arch=()
url=""
license=('GPL')
groups=()
depends=()
makedepends=()
provides=()
conflicts=()
replaces=()
backup=()
install=
source=($pkgname-$pkgver.tar.gz)
noextract=()
md5sums=() #gerado com 'makepkg -g'

build() {
  cd "$srcdir/$pkgname-$pkgver"

  ./configure --prefix=/usr
  make || return 1
  make DESTDIR="$pkgdir/" install
}

Entendendo os parâmetros:
  • pkgname: o nome do pacote;
  • pkgver: a versão do pacote;
  • pkgrel: a versão release' do pacote modificado quando o PKGBUILD é editado;
  • pkgdesc: uma breve descrição do pacote;
  • arch: arquiteturas em que o pacote será compilado;
  • url: a página do pacote;
  • license: a licença de distribuição do pacote;
  • provides: o que o pacote provê (outro pacote);
  • depends: dependências do pacote;
  • makedepends: dependências para compilar o pacote;
  • conflicts: pacotes que não podem coexistir;
  • replaces: mostra o pacote que este substitui;
  • backup: arquivos de backup quando o pacote é removido;
  • install: nome do script de instalação do pacote;
  • source: o caminho para download do código-fonte;
  • md5sums: somas md5 do pacote para checagem de integridade.

A função build(), como você já notou, possui os comandos para a compilação do pacote, ou seja, é o velho e manjado "./configure, make, make install", (o mantra dos slackers).

Você pode alterar o PKGBUILD para, por exemplo, mudar o local de instalação. Ou se preferir pode comentar a linha corresponde ao "install" da função build(), para que o pacote não seja instalado, mas tão somente compilado. Você pode inserir outros parâmetros ao "install" para habilitar certas funções. Resumindo, aquilo que você gostaria de fazer compilando "na mão", você coloca como parâmetro no script e roda o makepkg.

Relembro ao leitor que o objetivo do artigo é fornecer um apanhado geral, caso queira mais informações sobre o assunto consulte: ABS_PKGBUILD_Explained

Uma diferença entre Arch Linux e Gentoo

De cara percebemos que enquanto o Arch originalmente disponibiliza pacotes binários pré-compilados, o Gentoo baixa o código e faz todo o processo de compilação. Assim, no Gentoo, tem-se um maior controle por parte do usuário em configurar os parâmetros de compilação, no entanto, o preço disso é o aumento do tempo que se leva para construir o sistema.

No Arch, devido à pré-compilação, a construção do sistema é mais rápida, mas o controle sobre os parâmetros não são tão grandes como no Gentoo.

Notamos que, embora o Arch Linux tenha mecanismos para compilação a partir dos fontes, o mesmo é muito primitivo em relação ao Portage do Gentoo que automatiza todo o processo.

Então a próxima pergunta lógica que nos fazemos é: pode o Arch Linux, de alguma forma, automatizar esse processo de baixar e compilar direto dos fontes, como o Gentoo faz utilizando o comando "emerge"?

A resposta mais sincera: Não. Como o comando "emerge", não.

Mas há algo semelhante. É possível compilar TUDO a partir dos fontes, de forma automática, através do makeworld. Os parâmetros de compilação "universais" são aplicados através do makepkg.conf, que veremos mais a frente.

Makeworld

Para compilar tudo de uma vez no Arch Linux é preciso usar o comando:

# makeworld -c [ponto de montagem] [repositório1] [repositório2] [repositório]

Para mais informações:

makeworld --help

Veremos apenas um simples exemplo compilando todo o "core" de forma segura...

Atualizando a árvore:

# abs

Copiando os scripts para um ponto diferente (para não alterar os originais):

# cp -r /var/abs /home/abs

Criando diretório para utilização e aplicando seu usuário como dono:

# mkdir -p /home/packages
# chown -R seuusuario /home/abs
# chown -R seuusuario /home/packages


Indo para o diretório dos scripts:

cd /home/abs

Iniciando compilação e instalação do repositório core, tendo o diretório packages como ponto de montagem:

# makeworld --as-root -c -i /home/packages/ core

Agora vá dormir ou vá estudar/trabalhar, depois ver um filme, namorar... o processo levará um bom tempo (a lá Gentoo).

Mas claro que tudo isso só valerá a pena, só fará diferença, após a configuração do makepkg, nosso próximo tópico.

   1. ABS
   2. PKGBUILD e Makeworld
   3. CFLAGS e Makepkg.conf

Jogando Daikatana (Steam) com Patch 1.3 via Luxtorpeda no Linux

Estrutura e Funcionamento de um Ebuild no Gentoo Linux

Fedorinha, fedorão: comandinhos de montão

Todos os atalhos do Cinnamon

Berry Bank: Criando um Banco Digital Gamificado para seus Filhos com Gentoo, Flask e Tailscale

Gerenciamento de pacotes Debian - principais comandos LPIC-1

Apresentando o Linux Mint LXDE Edition

Gerenciando Processos com o Shell

O maravilhoso Xandros Linux Desktop

Apresentando a distribuição OpenSuSE Linux

#1 Comentário enviado por removido em 15/08/2009 - 10:02h
muito bom ...
#2 Comentário enviado por removido em 15/08/2009 - 17:29h
Muito bom o artigo, parabéns.

É uma boa para quem não atualiza o sistema constantemente. No meu caso, já fica inviável usar o abs em muitos pacotes, já que no Arch os pacotes são atualizados constantemente e eu atualizo meu sistema pelo menos de dois em dois dias.
#3 Comentário enviado por xerxeslins em 15/08/2009 - 18:23h
De fato, wdmatheus, embora exista a possibilidade de compilar os fontes, essa não é a filosofia do Arch... Além disso, desconfio que o ganho de desempenho com esse processo é humanamente imperceptível.

Para usar o Arch, ao meu ver, (posso estar enganado... opinião de iniciante) basta compilar o kernel. Não seria necessário se preocupar com flags de compilação. No entanto, há essa possibilidade com o ABS.

Eu mesmo no dia-a-dia prefiro a praticidade dos binários pré-compilados como você...

Abraço
#4 Comentário enviado por albfneto em 17/08/2009 - 14:48h
legal, é um tipo de Portage para Arch.
Arch é muito rápido, quase tanto quanto o gentoo.
#5 Comentário enviado por augustouser em 17/08/2009 - 15:29h
Que beleza de artigo, parabéns.

Ps: sobre o ultimo item, de usuários experientes não se pode contar com muita coisa, nem mesmo com artigos. A não ser os que só aparecem pra malhar e cornetar. O VOL precisa é de "iniciantes" (ta de brincadeira você se intitular iniciante) como o amigo xerxeslins.
#6 Comentário enviado por victorwpbastos em 19/01/2010 - 09:37h
Em relação ao ABS, eu notei sim grande mudanças ao compilar alguns pacotes que mais uso (gedit, xorg, firefox). Em relação ao Firefox, por exemplo, senti uma melhora na rapidez e tb o consumo de ram diminui drasticamente (cerca de 30mb). Creio que compilar o sistema todo seja um exagero mas, compilar os pacotes que mais usa com certeza vale a pena.

Abraços!

P.S.: Ótimo artigo, rsrs.
#7 Comentário enviado por landex em 10/06/2010 - 08:56h
Muito bom curti pacas, um dia eu ainda vou conseguir instalar o Arch.
#9 Comentário enviado por removido em 25/07/2010 - 09:48h
Excelente artigo!

Xerxes, já tinha lido sobre o ABS e como estou com um pouco de tempo sobrando, vou fazer uns testes com ele.
#10 Comentário enviado por tiago4171 em 21/01/2015 - 13:18h

Complementando o Artigo:

Antes de compilar o pacote dê chmod na pasta ~/abs e use makepkg -s que vai resolver as dependências automaticamente

Contribuir com comentário

Entre na sua conta para comentar.