Criando Pacotes RPM com a Ferramenta FPM

Instalando o Ambiente Ruby e o Comando gem

A ferramenta FPM é escrita em Ruby, portanto é necessário ter o Ruby instalado com versão superior a 1.8.5. Execute os segiuntes comandos para instalar os pacotes necessários:

sudo yum install -y ruby rubygems ruby-devel

Verifique as fontes de gem atuais com o comando:

gem sources --list

Para adicoinar uma fonte nacional (exemplo usando mirrors do Alibaba Cloud):

gem sources --add http://mirrors.aliyun.com/rubygems/

Remova a fonte padrão internacional se necessário:

gem sources --remove https://rubygems.org/

Atualize as fontes e instale o FPM. Se ocorrer erros devido a conflitos de versões, instale uma versão específica do FPM:

gem sources --update
gem install fpm -v 1.4.0

Em caso de erros relacionados à gem json, instale uma versão compatível:

gem install json -v 1.8.3

No CentOS 7.x ou superior, a versão do Ruby geralmente é suficiente, evitando tais problemas.

Exemplo de Empacotamento: Git

Vamos empacotar o Git versão 2.9.4 usando o FPM. Primeiro, compile e instale o Git em um diretório temporário que servirá como base para o pacote RPM:

tar -xf git-2.9.4.tar.gz
cd git-2.9.4
make prefix=/tmp/buildroot/usr/local/git all
make prefix=/tmp/buildroot/usr/local/git install

Aqui, /tmp/buildroot/ é o caminho relativo que o FPM usará; durante a instalação do RPM, ele será removido, deixando o Git instalado em /usr/local/git.

Crie um script para ser executado após a instalação do RPM, por exemplo, em /tmp/scripts/post_install.sh:

#!/bin/bash
if [ -e /usr/bin/git_old ]; then
    rm -f /usr/bin/git_old
fi
if [ -e /usr/bin/git ]; then
    mv /usr/bin/git /usr/bin/git_old
fi
ln -s /usr/local/git/bin/git /usr/bin/git
exit 0

Crie um script para ser executado após a desinstalação do RPM, por exemplo, em /tmp/scripts/post_remove.sh:

#!/bin/bash
unlink /usr/bin/git
if [ -e /usr/bin/git_old ]; then
    mv /usr/bin/git_old /usr/bin/git
fi
rm -rf /usr/local/git
exit 0

Execute o comando FPM para gerar o pacote RPM:

fpm -s dir -t rpm -n custom-git -v 2.9.4 -C /tmp/buildroot/ \
--description 'Pacote RPM customizado do Git' \
--post-install /tmp/scripts/post_install.sh \
--post-uninstall /tmp/scripts/post_remove.sh \
-p /root/rpms/

Parâmetros Comuns do FPM

-s: Define o tipo de fonte, como dir para diretórios (útil para software compilado de fontes), rpm para converter RPMs existentes, entre outros.

-t: Define o tipo de destino do pacote, como rpm para pacotes RPM.

-n: Especifica o nome do pacote.

-v: Define a versão do pacote.

-C: Indica o caminho relativo para a estrutura de diretórios a ser empacotada.

-d: Declara dependências no formato -d 'nome-do-pacote'.

-f: Sobrescreve pacotes existentes no diretório de saída.

-p: Especifica o diretório de saída para o pacote gerado.

--post-install e --pre-install: Scripts executados após ou antes da instalação do pacote, respectivamente.

--post-uninstall e --pre-uninstall: Scripts executados após ou antes da desinstalação do pacote.

Tags: FPM RPM Ruby gem Git

Publicado em 6-10 19:55 por Thomas