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.