Linux slogan
Visite também: Segurança Linux · BR-Linux.org · Dicas-L · NoticiasLinux · SoftwareLivre.org · UnderLinux · BestLinux
» Screenshot
Linux: gnome + AWM = mac?
Por JoseRenan



» Login
Login:
Senha:

Se você ainda não possui uma conta, clique aqui.

Esqueci minha senha

» Wallpaper


Artigo

Introdução ao Arch Build System
Linux user
xerxeslins
15/08/2009
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.
Por: Xerxes Lins
[ Hits: 3591 ]
Conceito: 10.0   1 voto(s)1 voto(s)1 voto(s)1 voto(s)1 voto(s) + quero dar nota ao artigo

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

Leitura recomendada

Comentários
[1] Comentário enviado por eu!noel em 15/08/2009 - 10:02h:

muito bom ...

[2] Comentário enviado por wdmatheus 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 edps 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.

Hoje em dia não vejo motivo para os outros usuários deixarem de experimentar o Arch, fora a iso tradicional, ainda temos os facilitadores:

ArchBang (OpenBox >> LXDE) : http://www.archbang.org/
Goddane LiveCD (XFCE): http://godane.wordpress.com/




Contribuir com comentário
CAPTCHA
[ Recarregar imagem ]

Digite o código acima:

  
Para executar esta ação você precisa estar logado no site, caso contrário, tudo o que for digitado será perdido.
Responsável pelo site: Fábio Berbert de Paula - Conteúdo distribuído sob licença GNU FDL
Site hospedado por:

Viva o Linux

A maior comunidade Linux da América Latina! Artigos, dicas, tutoriais, fórum, scripts e muito mais. Ideal para quem busca auto-ajuda em Linux.