É possível, mas altamente difícil, fazer isso para que seja feito corretamente. Se você estiver desesperado, poderá criar um novo .spec
arquivo RPM e construir um arquivo RPM de origem "falso" (SRPM), que poderá ser usado para construir um arquivo RPM resultante usando rpmbuild --rebuild
.
Em vez disso, continuaria pesquisando o RPM real. Você não indica qual é a sua pergunta, mas, de acordo com a minha experiência, você pode encontrar qualquer coisa na internet se souber como procurá-la. Eu encontrei versões antigas de RPMs para distribuições da Red Hat que não são usadas há mais de 10 anos, por isso acho difícil acreditar que não haja nenhum remanescente desse RPM em nenhum lugar.
Além disso, muitas vezes você pode voltar à origem do aplicativo contido no RPM e usá-lo para reconstruir o RPM também. Muitas vezes, os aplicativos de origem incluem um .spec
arquivo necessário que é usado para reconstruir o RPM.
Por fim, você pode obter a fonte e o .spec
arquivo de um serviço de compilação, como o Koji para distribuições baseadas no Red Hat. O SuSE também mantém serviços de construção semelhantes, para que você possa pesquisar através deles para obter artefatos de construção antigos.
Tomando os binários como estão
Você pode usar esse método para elevar os executáveis reais de um sistema e tará-los para implantação em outro sistema.
máquina A
$ rpm -ql <packageNameHere> | xargs tar -zcvf /tmp/program.tgz
máquina B
$ tar -zxvf /path/to/your/program.tgz
Versão do RPM do SLES
De acordo com um dos posts deste tópico: Re: Como criar pacotes RPM a partir de pacotes instalados rpm
no SLES, é suposto ter o switch --repackage
. Isso não existe na versão Red Hat (no Fedora ou CentOS). Mas de acordo com o post, você pode usá-lo assim:
$ rpm -e --repackage <somepackage>
Após a conclusão, você encontrará seu RPM acessível aqui:
/var/spool/repackage
Usando rpmerizor
O Rpmerizor é uma ferramenta / script de terceiros que você pode instalar, que irá empacotar novamente os arquivos de origem no RPM correspondente. O uso desse script pode ser acessado aqui, intitulado: man page de rpmerizor .
excerto
Rpmerizor é um script que permite criar um pacote RPM a partir dos arquivos instalados. Você simplesmente precisa especificar arquivos na linha de comando e responder a algumas perguntas interativas para preencher os metadados do rpm (nome do pacote, versão ...). Você também pode usá-lo no modo de lote com opções de linha de comando para metadados.
Usando rpmrebuild
Não deve ser confundido com a ferramenta de construção rpmbuild
, rpmrebuild
é outro script de terceiros que você pode usar para fazer uma nova embalagem de um RPM já instalado.
excerto
O rpmrebuild é uma ferramenta para construir um arquivo RPM a partir de um pacote que já foi instalado em um uso básico, o uso do rpmrebuild não requer nenhum conhecimento de construção do rpm. (No debian, o produto equivalente é dpkg-repack).
Exemplo
Digamos que queremos reembalar o openssh-server.
$ rpm -aq | grep openssh-server
openssh-server-6.2p2-8.fc19.x86_64
Agora empacote:
$ rpmrebuild openssh-server-6.2p2-8.fc19.x86_64
/usr/lib/rpmrebuild/rpmrebuild.sh: WARNING: some files have been modified:
..?...... c /etc/ssh/sshd_config
..?...... c /etc/sysconfig/sshd
Do you want to continue ? (y/N) y
Do you want to change release number ? (y/N) n
result: /root/rpmbuild/RPMS/x86_64/openssh-server-6.2p2-8.fc19.x86_64.rpm
Referências