Vou começar nesse post uma série de artigos mostrando, de forma prática, sem muito aprofundamento, como criar seu RPM. O processo não é muito díficil, o que acontece é que a maioria dos guias existentes que falam do assunto se destinam a empacotadores de distribuições, que precisam de um conhecimento mais profundo. Como você está começando, o melhor é conhecer o básico, antes de escolher se vai se aprofundar no assunto ou não.
Mas o que é um RPM? De acordo com a Wikipedia:
O RPM, originalmente abreviatura de Red Hat Package Manager, e atualmente um acrónimo recursivo de RPM Package Manager (“Gerenciador de Pacotes RPM”) é um sistema de gerenciamento de pacotes de software, assim como o formato de arquivo usado por esse sistema.
O que isso quer dizer? Basicamente, que o RPM é o gerenciador de pacotes de distros como o Red Hat Enterprise Linux e o Fedora e também é o formato de arquivo suportado por esse gerenciador. Como dito no primeiro parágrafo, vamos nos focar no pacote RPM em si, na sua criação.
A primeira coisa a se conhecer para criar um RPM é o arquivo .spec. Esse arquivo deve conter todas as informações relativas a criação do pacote, ou seja, ele é a espinha dorsal do seu RPM. Nele deverão constar o nome do programa, a versão, as dependências, as dependências da compilação (se ele precisar ser compilado), as instruções de compilação, instalação e tudo mais. Aí vai um exemplo do arquivo spec que eu criei quando empacotei o gkt3-unico-engine:
Summary: Unico GTK3 Engine
Name: gtk3-unico-engine
Version: 0.1.0+r69
Release: 1%{?dist}
License: LGPL3
Group: System Environment/Libraries
URL: https://launchpad.net/unico
Source: gtk3-engines-unico_0.1.0+r69.orig.tar.gz
BuildRequires: gtk3-devel, cairo-devel, glib2-devel
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
%description
Unico is a GTK3 theme engine.
%prep
%setup -q -n unico-%{version}
%build
%configure
make %{?_smp_mflags}
%install
rm -rf $RPM_BUILD_ROOT
make install DESTDIR=$RPM_BUILD_ROOT
#remove .la files
find $RPM_BUILD_ROOT -name *.la | xargs rm -f || true
%clean
rm -rf $RPM_BUILD_ROOT
%files
%defattr(-,root,root,-)
%doc AUTHORS ChangeLog NEWS COPYING README TODO
%{_libdir}/gtk-3.0/*/theming-engines/*
%changelog
Mas, como começar nesse complicado meio de empacotamento? Muitos guias recomendam que você crie logo de cara seu arquivo SPEC e faça tudo sozinho. Na minha visão, isso afasta um pouco as pessoas que estão chegando. O caminho que eu tomei para aprender a criar os pacotes foi o da observação: baixando os pacotes src.rpm de alguns programas e analisando, estudando, tentando entender o que estava sendo feito naquele SPEC. Tentar reempacotar um RPM já criado anteriormente também pode ser uma boa aprendizagem antes de você tentar criar o seu pacote.
Para montar a estrutura, você precisará do pacote rpmdevtools, então:
su -c "yum install rpmdevtools"
Antes de montar a estrutura, aí vai uma dica básica: nunca utilize o seu usuário padrão para criar os pacotes RPM. Crie um usuário novo no sistema apenas dedicado a essa tarefa. Isso irá ajudar no caso de você fazer alguma besteira e detonar aquela conta. #FikDik
Dado o conselho, vamos criar a estrutura de diretórios para criação do RPM:
rpmdev-setuptree
Esse comando irá criar a pasta "rpmbuild" em sua pasta pessoal, e dentro dela estarão todas as pastas necessárias para a criação do RPM. Vamos explicá-las:
- RPMS: Nessa pasta ficarão os RPMS que serão criados, separados por arquitetura da sua distro. Falaremos disso mais adiante;
- SRPMS: Nessa pasta ficarão os arquivos source dos RPMs criados, os src.rpm;
- SOURCES: Aqui deve ficar o código fonte do pacote que você está criando;
- SPECS: Já nessa pasta ficará o arquivo SPEC do seu RPM;
- BUILD: É o diretório de compilação;
- BUILDROOT: Onde acontece a compilação.
Entre todos esses diretórios, nós só mexeremos no SPECS e no SOURCES. Conforme eu disse, o melhor a se fazer na hora de começar é recriar um RPM bem fácil. Vou usar como exemplo o Gtk3-Unico-Engine, você pode dar uma olhada no repositório aqui.
Nessa primeira parte, você foi apresentado ao mundo dos RPMs, conheceu um arquivo SPEC e montou a estrutura de pastas necessária para a criação de um RPM. No próximo artigo nos iremos nos aprofundar um pouco mais nos arquivos SPEC. Até a próxima semana.
Nenhum comentário:
Postar um comentário