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: 23.233 ]

Por: Xerxes em 15/08/2009


ABS



Aviso: Todo o artigo é de caráter introdutório. Se você for usuário avançado em Arch Linux, com certeza não precisará lê-lo.

Arch Linux usa pacotes binários que são gerenciados pela ferramenta Pacman. Esses pacotes binários são compilados de forma otimizada para processadores i686 ou x86_64, mas também podem ser construídos a partir dos códigos-fonte pelo Arch Build System (ou simplesmente ABS) que nada mais é que um sistema "ports-like". Com isso você terá a possibilidade de criar pacotes de acordo com sua necessidade específica.

Para instalar o ABS:

# pacman -Sy abs base-devel wget

Antes de criar a árvore ABS, selecione os repositórios (core, extra, community e testing) que não deseja utilizar precedendo-o com sinal de exclamação:

# nano /etc/abs.conf

#
# /etc/abs.conf
#

# the top-level directory of all your PKGBUILDs
[ "$ABSROOT" = "" ] && ABSROOT="/var/abs/"

#
Server to sync from
# #
SYNCSERVER="rsync.archlinux.org"

#
# The architecture to fetch abs for
# Either i686 or x86_64
#
ARCH="i686"

#
# Pacman mirror list used for syncing via tarball
#
MIRRORLIST="/etc/pacman.d/mirrorlist"

#
# REPOS to be parsed by abs (in this order)
# (prefix a repo with a ! to disable it)
#
# Note: If a repo is removed, it is still fetched!
# Repos must be preceded with a ! to prevent fetching
#
REPOS=(core extra community !testing)

Para criar a árvore:

# abs

Obs.: Pelo menos uma vez por semana recomendo que atualize a árvore ABS.

A árvore ABS fica em /var/abs, que contém os subdiretórios para seus respectivos ABS (pacotes). Em cada ABS você encontrará um arquivo PKGBUILD que, como você provavelmente já sabe, é um script que contém as instruções para baixar e criar o pacote, ativado pelo comando makepkg.

Para visualizar os ABS, por exemplo, do repositório community, execute:

# ls /var/abs/community/ | more

Após ter criado a árvore você poderá compilar todos os pacotes do Arch Linux a partir dos seus fontes. Antes, porém, seria uma boa prática criar um diretório no home do seu usuário para executar a compilação. Dessa forma evita-se possíveis alterações prejudiciais à árvore ABS:

mkdir -p ~/abs

Para exemplificar, compilaremos o Firefox.

cp -r /var/abs/extra/firefox ~/abs/
$ cd ~/abs/firefox/


Dê uma olhada no PKGBUILD e, se nunca viu um antes, tente entender o que vê. É muito didático:

nano PKGBUILD

# $Id: PKGBUILD 49172 2009-08-04 10:57:05Z jgc $
# Contributor: Jakub Schmidtke <sjakub@gmail.com>

pkgname=firefox
pkgver=3.5.2
pkgrel=1
_xulver=1.9.1.2
pkgdesc="Standalone web browser from mozilla.org"
arch=(i686 x86_64)
license=('MPL' 'GPL' 'LGPL')
depends=("xulrunner=${_xulver}" 'desktop-file-utils')
makedepends=('zip' 'pkgconfig' 'diffutils' 'libgnomeui>=2.24.1' 'python')
replaces=('firefox3')
install=firefox.install
url="http://www.mozilla.org/projects/firefox"
source=(http://releases.mozilla.org/pub/mozilla.org/firefox/releases/${pkgver}/source/firefox-${pkgver}-source.tar.bz2
        mozconfig
        firefox.desktop
        firefox-safe.desktop
        mozilla-firefox-1.0-lang.patch
        browser-defaulturls.patch
        firefox-version.patch)
md5sums=('136867f95c86f3988b7f825e874b85de'
         'd672df11a6e16a5dec68428b00bfb810'
         '68cf02788491c6e846729b2f2913bf79'
         '5e68cabfcf3c021806b326f664ac505e'
         'bd5db57c23c72a02a489592644f18995'
         '346d74ec560e7bbf453c02ff21f4b868'
         '1dd9a10df0b9e4cf332eadc326d78e07')

build() {
  cd "${srcdir}/mozilla-1.9.1"
  patch -Np1 -i "${srcdir}/mozilla-firefox-1.0-lang.patch" || return 1
  patch -Np0 -i "${srcdir}/browser-defaulturls.patch" || return 1
  patch -Np1 -i "${srcdir}/firefox-version.patch" || return 1

  cp "${srcdir}/mozconfig" .mozconfig
  unset CFLAGS
  unset CXXFLAGS

  export LDFLAGS="-Wl,-rpath,/usr/lib/firefox-3.5"

  make -j1 -f client.mk build MOZ_MAKE_FLAGS="${MAKEFLAGS}" || return 1
  make -j1 DESTDIR="${pkgdir}" install || return 1

  rm -f ${pkgdir}/usr/lib/firefox-3.5/libjemalloc.so

  install -m755 -d ${pkgdir}/usr/share/applications
  install -m755 -d ${pkgdir}/usr/share/pixmaps
  install -m644 ${srcdir}/mozilla-1.9.1/browser/branding/unofficial/default48.png ${pkgdir}/usr/share/pixmaps/firefox.png || return 1
  install -m644 ${srcdir}/firefox.desktop ${pkgdir}/usr/share/applications/ || return 1
  install -m644 ${srcdir}/firefox-safe.desktop ${pkgdir}/usr/share/applications/ || return 1
}

Modifique os parâmetros de acordo com sua necessidade, se julgar necessário.

Obs.: informações introdutórias sobre o PKGBUILD serão abordadas mais a frente.

Crie o pacote:

makepkg

Aguarde o download, a compilação e o empacotamento. O resultado será um pacote como formato pkg.tar.gz. Basta instalá-lo normalmente:

# pacman -U nomedopacote.pkg.tar.gz

Obs.: Você pode aplicar certos parâmetros ao makepkg, como por exemplo o "-i" para instalar o pacote automaticamente. Para outros parâmetros use o comando "makepkg --help".

Agora entenderemos um pouquinho sobre o PKGBUILD.

    Próxima página

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

Samba no Arch Linux (para principiantes)

Não precisamos de antivírus, eles sim

O que fazer após instalar Linux Mint 15 (sim, há o que fazer!)

Estratégia para Shadow Era (Supernova Boring)

LAMP no Debian 8 (Apache 2, PHP 5 e MariaDB)

Leitura recomendada

Lógica para computação - parte II

Linux, porque não?

Veja o Linux com outros olhos

Fundamentos do sistema Linux - usuários e grupos

Programando: Escolhendo a melhor opção

  
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