você está aqui: Home  → Arquivo de Mensagens

RPM-Repack

Colaboração: Ivan de Gusmão Apolonio

Data de Publicação: 19 de junho de 2015

Algumas vezes precisamos de um pacote *rpm* para instalá-lo em outro computador, mas não o temos. Todavia, se este pacote já instalado em algum lugar, podemos fazer um "repack" deste pacote e gerar o rpm de instalação novamente.

Para isso, existe um script chamado rpm-repack que faz o trabalho de coletar todas as informações e arquivos do pacote que está instalado e reempacotá-lo. Não fui eu quem fiz o script mas achei muito útil de compartilhar a dica. Trata-se de um script em Perl, que pode ser baixado deste endereço:

https://github.com/cormander/rogue-beret-tools/blob/master/scripts/rpm-repack

Seu uso é muito simples, mas como ele utiliza a estrutura de diretórios do rpmbuild, o script espera que esta estrutura já esteja criada (na verdade isso até poderia ser feito automaticamente pelo script, mas como não fui eu quem o fiz, foi necessário o passo adicional de criar a estrutura de diretórios do rpmbuild):

mkdir -p ~/rpmbuild/{BUILD,RPMS,SOURCES,SPECS,SRPMS}

Agora basta executar o script passando como argumento o nome do pacote que está instalado no sistema:

root@rhel:~ $ ./rpm-repack mkcdrec 
Executing(%install): /bin/sh -e /var/tmp/rpm-tmp.Fn2vxf 
+ umask 022 
+ cd /root/rpmbuild/BUILD 
+ mkdir -p /root/rpmbuild/BUILDROOT/mkcdrec-1.0.0-1.el6.rf.x86_64 
+ tar -ztf /root/rpmbuild/SOURCES/mkcdrec-1.0.0.x86_64.bin.tar.gz 
+ sort -u 
+ awk '{print "/" $1}' 
+ tar -C /root/rpmbuild/BUILDROOT/mkcdrec-1.0.0-1.el6.rf.x86_64 -zxf /root/rpmbuild/SOURCES/mkcdrec-1.0.0.x86_64.bin.tar.gz 
+ /usr/lib/rpm/brp-compress 
+ /usr/lib/rpm/brp-strip 
+ /usr/lib/rpm/brp-strip-static-archive 
+ /usr/lib/rpm/brp-strip-comment-note 
Processing files: mkcdrec-1.0.0-1.el6.rf.x86_64 
Provides: mkcdrec 
Requires(rpmlib): rpmlib(CompressedFileNames) <= 3.0.4-1 rpmlib(PayloadFilesHavePrefix) <= 4.0-1 
Requires: /bin/bash /bin/sh libc.so.6()(64bit) libc.so.6(GLIBC_2.2.5)(64bit) libc.so.6(GLIBC_2.3)(64bit) libc.so.6(GLIBC_2.3.3)(64bit) libc.so.6(GLIBC_2.3.4)(64bit) libm.so.6()(64bit) rtld(GNU_HASH) 
Checking for unpackaged file(s): /usr/lib/rpm/check-files /root/rpmbuild/BUILDROOT/mkcdrec-1.0.0-1.el6.rf.x86_64 
warning: Could not canonicalize hostname: rhel.callflex.com.br 
Wrote: /root/rpmbuild/SRPMS/mkcdrec-1.0.0-1.el6.rf.nosrc.rpm 
Wrote: /root/rpmbuild/RPMS/x86_64/mkcdrec-1.0.0-1.el6.rf.x86_64.rpm 
Executing(%clean): /bin/sh -e /var/tmp/rpm-tmp.1ESScp 
+ umask 022 
+ cd /root/rpmbuild/BUILD 
+ /bin/rm -rf /root/rpmbuild/BUILDROOT/mkcdrec-1.0.0-1.el6.rf.x86_64 
+ exit 0

No exemplo acima, o pacote foi gerado no diretório /rpmbuild/RPMS/x86_64/mkcdrec-1.0.0-1.el6.rf.x86_64.rpm



Veja a relação completa dos artigos de Ivan de Gusmão Apolonio