Do you conary?

Hoje conversando com crimeboy no #ubuntu-br sobre Openbox, fiquei salivando para usa-lo no trabalho, em meu Foresight Linux. Apesar que o pacote do openbox ja' existe para o Foresight, algumas ferramentas que eu gosto de usar ainda nao estavam empacotadas. Para quem nunca empacotou nada, isso deve gerar ate' mesmo pesadelos… mas isso e' porque voces nao conhecem o sistema de gerenciamento de pacotes que usamos, chamado conary:

O Conary é um sistema distribuído de gerência de software, para distribuições Linux. Ele substitui soluções tradicionais de gerência de pacotes (tais como RPM e dpkg) com uma abordagem projetada para permitir uma colaboração flexível por meio da Internet.

O Conary permite que conjuntos de repositórios distribuídos e frouxamente conectados definam os componentes que são instalados em um sistema Linux. Ao invés de usar uma distribuição completa vinda de um único fabricante, ele permite que administradores e desenvolvedores criem versões derivadas (branches) de uma dada distribuição, mantendo as partes adequadas ao seu ambiente e ao mesmo tempo utilizando componentes de outros repositórios na Internet.

Entao la' fui eu empacotar o pypanel, que no Ubuntu infelizmente continua quebrado. Tudo que foi necessario foi criar a minha “receita”:

class PyPanel(PackageRecipe): name = ‘pypanel’ version = ‘2.4’ buildRequires = [] def setup(r): r.addArchive(‘mirror://sourceforge/%(name)s/PyPanel-%(version)s.tar.gz’) r.PythonSetup()

Esta “receita” e' bem simples e tem uma sintaxe bem “pythonica”. Basicamente voce cria uma classe com o nome do pacote que voce esta' gerando, e adiciona, na linha r.addArchive, a informacao de onde encontrar a fonte do mesmo. Uma coisa bem legal e' que, uma vez uma nova versao do pacote saia, voce pode atualizar a variavel “version” e o conary sabera' onde pega-lo e atualizar tudo. Na verdade, a maioria das “receitas” para programas que usam nomenclatura normal (pypanel usa camel case, o que nao e' certo) nem precisa modificar nada, ja' que o conary e' esperto o suficiente para pegar a versao mais recente.

Depois de “cozinhar” a receita, o conary me fala que e' melhor (e recomendavel) adicionar as dependencias do pacote que ele sozinho encontrou!!! Eu modifico mais uma vez a receita, desta vez adicionando as dependencias:

class PyPanel(PackageRecipe): name = ‘pypanel’ version = ‘2.4’ buildRequires = [‘python-setuptools:python’, ‘freetype:devel’, ‘glibc:devel’, ‘imlib2:devel’, ‘libX11:devel’, ‘libXext:devel’, ‘libXft:devel’, ‘python-xlib:python’, ‘zlib:devel’] def setup(r): r.addArchive(‘mirror://sourceforge/%(name)s/PyPanel-%(version)s.tar.gz’) r.PythonSetup()

Agora e' so' fechar a tampa da panela e instalar o danado! Aproveitei e empacotei mais outros pacotes que sao importantes para o pypanel (infelizmente, estas dependencias tambem continuam quebradas no Ubuntu), como o python-xlib e imlib2.

|image0||Screenshot|" alt="openbox" />

Agora sim, isso e' um sistema leve! :)

Tags
comments powered by Disqus