É possível, mas muito difícil fazer isso para que seja feito corretamente. Se você está desesperado, pode criar um novo arquivo RPM .spec
e construir um arquivo de RPM (SRPM) de origem "falso", que pode ser usado para construir um arquivo RPM resultante usando rpmbuild --rebuild
.
Eu continuaria procurando pelo RPM real. Você não diz qual na sua pergunta, mas tem sido minha experiência que você pode encontrar qualquer coisa na internet, se você souber como procurá-la. Eu encontrei versões antigas de RPMs para distribuições Red Hat que não estão em uso há mais de 10 anos, então eu acho difícil acreditar que não haja nenhum resto desse RPM em lugar algum.
Além disso, muitas vezes você pode voltar para a origem do aplicativo contido no RPM e usá-lo para reconstruir o RPM também. Muitas vezes, os aplicativos de origem incluem um arquivo .spec
necessário, usado para reconstruir o RPM.
Por fim, você pode obter a origem e o arquivo .spec
de um serviço de construção, como o Koji, para distribuições baseadas no Red Hat. O SuSE também mantém serviços de criação semelhantes, para que você possa pesquisar por meio deles para obter artefatos de construção antigos.
Tomando os binários como estão
Você pode usar esse método para levantar os executáveis reais de um sistema e distribuí-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 SLES do RPM
De acordo com um dos posts deste tópico: Re : Como criar pacotes RPM instalados pelo RPM rpm
no SLES é suposto ter a opção --repackage
. Isto não existe na versão Red Hat (no Fedora ou no CentOS). Mas de acordo com o post você pode usar assim:
$ rpm -e --repackage <somepackage>
Depois disso, você encontrará seu RPM acessível aqui:
/var/spool/repackage
Usando o rpmerizor
ORpmerizor é uma ferramenta / script de terceiros que você pode instalar e re-empacotar os arquivos fonte em um RPM correspondente. O uso deste script está acessível aqui, intitulado: página do manual do rpmerizor .
trecho
Rpmerizor is a script that allows you to create an RPM package from installed files. You simply have to specify files on the command line and answering a few interactive questions to fill rpm meta-data (package name, version ...). You can also use it in batch mode with command line options for meta-data.
Usando o rpmrebuild
Não confunda com a ferramenta de compilação rpmbuild
, rpmrebuild
é outro script de terceiros que você pode usar para fazer uma re-embalagem de um RPM já instalado.
trecho
rpmrebuild is a tool to build an RPM file from a package that has already been installed in a basic use, rpmrebuild use does not require any rpm building knowledge. (On debian, the equivalent product is dpkg-repack).
Exemplo
Digamos que queremos reempacotar 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