quarta-feira, 24 de agosto de 2011

Criando seu RPM: Parte 2

No artigo da semana passada, você foi iniciado no mundo do empacotamento. O objetivo essa semana é que você entenda um pouco mais dos arquivos SPEC. Vamos ao que interessa!


Como eu disse na semana passada, a melhor coisa a se fazer é começar estudando um arquivo spec simples, como o do gtk3-unico-engine, que eu criei faz algum tempo. Para entender o que você deve fazer no arquivo spec eu preciso que você entenda o que é feito numa compilação normal.


Na compilação de um programa qualquer, o método mais comum de se encontrar é o uso dos comandos "./configure", "make" e "make install". Os dois primeiros comandos citados criam o programa em si, o constroem, enquanto o comando "make install" se encarrega de instalar o programa em seu sistema. No arquivo spec você deve pensar da mesma forma para conseguir entender: os comandos "./configure" e "make", que constroem o programa, vão para a seção "%build" do arquivo spec, enquanto o comando "make install", que faz a instalação, vai para a seção "%install". É mais ou menos com esse pensamento que você vai entender as partes do arquivo specs.


Vamos entender agora o que são e quais os objetivos das diversas partes de um arquivo spec:




  • Summary -  Nessa linha fica um "resumo" do que faz o programa; ex: Summary: Gtk3 Unico Engine

  • Name: Nessa linha entra o nome do pacote que estará no nome do rpm em si. Por conta disso, o nome não pode conter espaços; ex: Name: gtk3-unico-engine

  • Version: Outra linha importante que deve ser editada com cuidado. Após o "Name", o nome do pacote RPM contém a versão do mesmo que é retirada desse campo. O melhor é que respeite a numeração dada pelo desenvolvedor; ex: Version: 0.1.0+r69

  • Release: Aqui entra a versão do pacote RPM em si. Você pode usar qualquer número e o ideal é que seja colocada uma "etiqueta" mostrando de onde veio o RPM; ex: Release: 1.eliberdade.1

  • License: Esse é um campo importante, pois é onde entra a licença do conteúdo do pacote. Pesquise com cuidado para saber a licença correta e coloque-a nesse campo; ex: License: GPLv3

  • Group: Aqui entra o grupo de aplicativos ao qual pertence o nosso RPM. Você pode ver todos os grupos aqui; ex: Group: System Environment/Libraries

  • URL: A página web do programa; ex: URL: https://launchpad.net/unico

  • Source: Aqui pode entrar somente o nome do arquivo que contém o código fonte ou a página da web onde você pode baixá-lo: ex1: Source: gtk3-engines-unico_0.1.0+r74.orig.tar.gz; ex2:http://savannah.nongnu.org/download/leafpad/leafpad-0.8.3.tar.gz


Eu dou uma parada aqui porque o próximo campo precisa de uma explicação mais profunda, o campo BuildRequires. Nesse campo devem entrar as dependências para a compilação do pacote. Normalmente, você tem três caminhos para descobrir isso: consultar a página do projeto, entrar em contato por email com o desenvolvedor(es) ou tentar uma compilação por fora para descobrir "na marra" as dependências. Depois de descobertas, você pode colocá-las no seu spec. Ex:


BuildRequires: gtk3-devel >= x.x.x


BuildRequires: cairo-devel


BuildRequires: glib2-devel


Os próximos campos são o "%description", que deve conter uma descrição um pouco mais profunda do seu programa do que a existente no "Summary". E o "%pre", a preparação contém um "comando padrão", o %setup -q e é destinado a preparação do código-fonte para a compilação que está por vir.


Os campos restantes são preenchidos de acordo como o programa que você está empacotando, tanto para instalação, quanto para a desinstalação. De muito diferente só o campo "%files" que deve conter todos os arquivos que o programa instalará no sistema, tenha cuidado nesse campo.


Espero que vocês tenham compreendido um pouco mais sobre o arquivo spec. Na próxima semana eu apresentarei o rpmbuild para vocês. Até a próxima. ;)

Nenhum comentário:

Postar um comentário