Um arquivo RPM é um pacote contendo algum tipo de dado ou programa. É bastante utilizado para a padronização de instalações em ambientes que utilizam pacotes RPM.
Para a geração dos RPMs pode-se criar arquivos .spec que possuem informações sobre o que se quer empacotar, onde estão os arquivos e onde ficarão após ser feita a instalação/descompactamento.
Arquivos .spec
Um arquivo spec é usado para construir pacotes com maior facilidade.
É dividido em partes:
Cabeçalhos com informações básicas
Summary: Programa para fazer alguma coisa
Name: programa_teste
Version: 1
Release: 0
Vendor: Empresa X
Group: XXX
License: Gnu
ExcludeArch: x86-64
BuildRoot: /var/tmp/install -> diretório padrão
Requires: glibc-base, libxml2 >= 2.6.9, libstdc++5.0 -> bibliotecas necessárias
Descrição do pacote (%description)
%description
Pode ser uma descricao qualquer do programa
Preparação para a compilação (%prep)
%prep
%setup -q
A compilação do código fonte em si (%build)
%build
gcc <programa_fonte> -o <programa_binario>
Você pode compilar o código usando o código acima ou pode compilar o código separadamente e apenas empacotá-lo.
A instalação do resultado da compitalação (%install)
Para copiar os arquivos para o BuildRoot para empacotamento.
%install
mkdir -p %{buildroot}/<caminho_a_ser_gerado> #cria os diretórios dentro do buildroot
install -m644 <arquivo_1> <arquivo_2> %{buildroot}/<caminho> #copia os arquivos para dentro do buildroot
Executa comandos, fazendo o que for solicitado. No caso acima, cria os diretórios dentro do buildroot e copia os arquivos para ele.
Limpeza dos arquivos depois da compilação (%clean)
Para apagar algum arquivo temporário usado.
%clean
rm -rf <caminho>
Scripts para antes e depois da instalação/desinstalação (%pre, %post, %preun, %postun)
Pode ser usado para executar qualquer comando no processo de criação.
%post
ln -sf <path_origem> <path_destino>
Ou qualquer outro comando que for necessário.
Lista de arquivos de pacote (%files)
Os arquivos que serão empacotados.
%files
/<caminho_gerado_anteriormente>/<arquivo_1>
/<caminho_gerado_anteriormente>/<arquivo_2>
Gerando o RPM
Depois do spec pronto, é só executar o comando:
rpm -ba <arquivo_spec>
Se tudo ocorreu certo, o seu arquivo RPM estará gerado. E o seu caminho estará escrito na saída do comando acima.
Nem todos os comandos mostrados precisam ser usados. Abaixo segue um exemplo de um arquivo spec para ilustração.
Summary: Programa para ilustrar uso de arquivos specs
Name: programa1
Version: 1.2
Release: 1
Vendor: Empresa X
Group: Empresa X
License: Copyright(c) by Empresa X
ExcludeArch: x86-64
BuildRoot: /var/tmp/install/
Requires: glibc-base, libstdc++5.0, openssl0.9.7, bash, libgcc >= 3.3.3, readline >= 4.3
%description
Programa para ilustrar uso de arquivos specs
%install
mkdir -p %{buildroot}/teste/bin
install -m644 programa1 %{buildroot}/teste/bin
%files
/teste/bin/programa1
%post
echo “Criacao efetuada”
Lembrando que deve-se respeitar os caminhos de onde se encontram os programas a serem empacotados.
Lembrando também, que estes arquivos .specs estão sendo usados para a geração de RPMs.