Como criar pacotes para o Arch Linux (parte 2) - pacotes svn e cvs

Graças as ferramentas e a filosofia da distribuição, criar pacotes para o Arch Linux é bem mais fácil do que parece (e do que nas outras distribuições). Há algum tempo mostrei como criar pacotes "normais" e neste segundo artigo sobre o assunto mostro como criar pacotes svn e cvs (leia: versões em desenvolvimento).

[ Hits: 14.942 ]

Por: Hugo Doria em 25/07/2008 | Blog: http://hugodoria.org


Introdução



Há algum tempo fiz um tutorial mostrando como criar pacotes para o Arch Linux. O tutorial serve para a maioria dos pacotes, mas quando se trata de algo usando svn ou cvs o procedimento é um pouco diferente.

A diferença é, basicamente, em algumas linhas do PKGBUILD. É preciso prestar atenção nas variáveis conflicts, provides, svntrunk e pkgver.

De maneira geral um PKGBUILD para svn é assim:

# Contributor: Seu nome

pkgname=nome-do-pacote-svn
pkgver=versão
pkgrel=release
pkgdesc='Descrição do pacote'
arch=('arquitetura')
url='url do software'
depends=('dependências')
license=('Licença')
source=()
md5sums=()
provides=()
conflicts=()

build() {
   instruções de compilação
}

O arquivo é bem simples e de fácil entendimento. É basicamente atribuição de variável. De qualquer forma vou fazer uma melhor descrição de cada campo.

# Contributor: Esta primeira linha do PKGBUILD não é obrigatória. Ela é usada apenas para mostrar quem criou o PKGBUILD e seu email (que será utilizado para troca de informações, sugestões, dúvidas etc). Apesar de não ser obrigatório, este campo é praticamente um padrão entre os empacotadores. Exemplo:

# Contributor: Hugo Doria <hugo at archlinux.org>

pkgname: É aqui que você coloca o nome do pacote. Exemplo:

pkgname=billreminder-svn

ou

pkgname=billreminder-cvs

NOTA: Perceba que você precisa adicionar os sufixos svn ou cvs no nome do pacote. Isso serve para diferenciar os pacotes normais dos de versões em desenvolvimento.

pkgver: Aqui fica a versão do programa que está sendo empacotado. Como se trata de uma versão em desenvolvimento, esta variável não tem número fixo e muda constantemente. Tente sempre colocar a data ou o número da revisão aqui (no final do tutorial há uma dica de como fazer isso).

pkgver=4098

pkgrel: Aqui fica o release do pacote. Em pacotes svn e cvs esta variável nem tem tanta importância. Ela geralmente será 1, já que o pkgver muda constantemente.

pkgrel=1

pkgdesc: Aqui é a descrição do software. Exemplo do billreminder:

pkgdesc='small and quick accounting application designed to allow for easy tracking of bills'

Só duas observações:
  • A descrição tem que ser em inglês.
  • E você não deve colocar o nome do pacote na descrição também. Seria errado colocar a descrição desta forma:

    pkgdesc='Billreminder is a small and quick accounting application designed to allow for easy tracking of bills'

    Foi decidido que o nome do pacote não entraria na descrição do mesmo para facilitar a visualização no pacman e não causar duplicidade.

arch: Aqui é a arquitetura para a qual o software está disponível. Você deve por cada uma entre aspas simples. Exemplo:

arch=('i686' 'x86_64')

url: Aqui você coloca o endereço da página do programa que você está empacotando.

url='http://billreminder.sourceforge.net/'

depends: Esta é uma das partes mais importantes do PKGBUILD. É aqui que você vai colocar todas as dependências necessárias para que o programa funcione. Cada dependência deve ficar entre aspas simples e você pode adicionar quantas dependências forem necessárias.

Supondo que você esteja criando um pacote para um programa que dependa do python, firefox e thunderbird, a variável ficaria assim:

depends=('python' 'firefox' 'thunderbird')

E no caso do billreminder:

depends=('python-pysqlite' 'python-notify' 'dbus-python' 'setuptools' 'desktop-file-utils' 'pygobject' 'pygtk' 'pil' 'perlxml')

Para descobrir quais dependências um determinado programa tem você pode visitar o site do mesmo, usar o comando ldd ou o namcap (uma ferramenta própria do Arch para isso).

makedepends: Aqui você coloca as dependências necessárias para se criar o pacote. Por exemplo, para se criar um pacote de uma versão cvs é preciso, claro, que o próprio cvs esteja instalado. Exemplos:

makedepends=('cvs')

ou

makedepends=('subversion')

NOTA: Não coloque aqui as dependências necessárias para que o software funcione. Faça isso na variável depends.

License: Aqui você coloca licença do programa. O Arch se preocupa bastante com isso e você deve prestar muita atenção aqui. Exemplos:

license=('MIT')

ou

license=('GPL')

source: Aqui fica o caminho para o source do pacote. Como em um pacote svn ou cvs, não existe um arquivo de source em si esta variável deve ficar em branco. Exemplo:

source=()

md5sums: Segue o mesmo princípio da variável acima.

md5sums=()

NOTA: Mesmo vazias estas duas variáveis devem estar presentes no PKGBUILD.

provides: Esta variável serve para definir que o 'pacote-svn' provê 'pacote' também. O billreminder-svn, por exemplo, provê billreminder. Isto serve para que programas que precisem do billreminder, por exemplo, possam reconhecer que ele está instalado no sistema. Dessa forma dependências quebradas são evitadas. ;)

Exemplo:

provides=('billreminder')

conflicts: Aqui você diz quais os pacotes que conflitam com o seu. Um meupacote-svn conflita, por natureza, com meupacote. Exemplo:

conflicts=('billreminder')

_svntrunk: Aqui você coloca a url da árvore svn que você quer baixar. Exemplo:

_svntrunk=https://billreminder.svn.sourceforge.net/svnroot/billreminder

_svnmod: Aqui você coloca o diretório onde será armazenado o conteúdo do trunk. Exemplo:

_svnmod=billreminder

NOTA: O _ no início das variáveis é um padrão que é usado para indicar que elas são variáveis customizadas, ou seja, que não são parte da estrutura real de um PKGBUILD. Você pode criar quantas quiser, mas só quando for realmente necessário.

build(): Aqui dentro você vai colocar todos os comandos necessários para se compilar o pacote. Geralmente você coloca os mesmos comandos que usaria para compilar o pacote normalmente.

Se você usar ./configure; make; make install, então é isso que você vai colocar dentro da função build(). Se você usa ./arquivo.sh --install-and-do-it-now, então é isso que você deve colocar.

De uma maneira geral o procedimento para svn/cvs/git/bzr é:
  • entrar no diretório src;
  • fazer checkout do trunk;
  • rodar os comandos de construção (configure, make e make install, por exemplo);
  • remover arquivos temporários.

    Próxima página

Páginas do artigo
   1. Introdução
   2. Exemplo de PKGBUILD
   3. Dicas
Outros artigos deste autor

Procurando rootkits no seu sistema

Personalizando o Blackbox

Como criar pacotes para o Arch Linux

Colocando ícones no menu do Fluxbox

ProFTPD com autenticação via MySQL

Leitura recomendada

Executando (entre outras funcionalidades) qualquer vídeo no Mozilla a partir do add-on Media Player Connectivity

SliTaz GNU/Linux e as ferramentas do sistema

K12LTSP - Executando o Mozilla antes do GDM

Uma pequena análise do Gentoo Linux

Instalando o Dynebolic sem instalador

  
Comentários
[1] Comentário enviado por kalib em 25/07/2008 - 10:52h

Grande Hugo...
Pronto..só faltava esse mesmo para fechar a parte de criação de pacotes... ;]
Bom trabalho...passou o artigo de forma clara e direta...que somado ao anterior deixa tudo de forma bem mastigada.
Parabéns.

[]'s

[2] Comentário enviado por phvie em 25/07/2008 - 11:23h

Boa hdoria!
Excelente artigo.

[3] Comentário enviado por andrebsilva em 25/07/2008 - 11:57h

Muito bom mesmo...

Parabéns

[4] Comentário enviado por iz@bel em 25/07/2008 - 14:11h

HUM!!!
Interessante...
Inclusive vou ler o artigo anterior...
Parabéns!!!
Está bem didático...

[]'s

[5] Comentário enviado por removido em 25/07/2008 - 17:35h


Parabéns doria, isso sim é artigo.

[6] Comentário enviado por skate_forever em 26/07/2008 - 09:16h

=D

Sem muitos comentários!

Muito bom!


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts