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.

[ Hits: 22.870 ]

Por: Xerxes em 15/08/2009


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.

Página anterior     Próxima página

Páginas do artigo
   1. ABS
   2. PKGBUILD e Makeworld
   3. CFLAGS e Makepkg.conf
Outros artigos deste autor

Para quem não conhece, eis o LMDE e umas palavras sobre Refisefuquis

Sport: Frontend para Slackbuilds ao estilo Ports do BSD

Área de Trabalho Aristocrática

KahelOS - apresentação e dicas

LAMP no Funtoo Linux em 15 minutos

Leitura recomendada

Funtoo Linux - Pré-instalação

Sugestões sobre distros Linux e particionamento de HD

Estudantes de computação e o Linux/Unix

Remasterização de Software - O que é? Como se faz? Um breve resumo

Monitorando a saúde do Apache (Prometheus + Grafana)

  
Comentários
[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.

[8] Comentário enviado por xerxeslins em 10/06/2010 - 09:51h

landex,

basta seguir isto:

http://wiki.archlinux-br.org/Guia_de_Instala%C3%A7%C3%A3o

[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




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts