È possibile ma estremamente difficile farlo in modo che sia fatto correttamente. Se sei disperato, puoi creare un nuovo .spec
file RPM e costruire un file RPM (SRPM) di origine "falso" che puoi utilizzare per costruire un file RPM risultante usando rpmbuild --rebuild
.
Continuerei invece a cercare l'RPM effettivo. Non affermi quale nella tua domanda, ma è stata la mia esperienza che puoi trovare qualsiasi cosa su Internet se sai come cercarla. Ho trovato versioni antiche di RPM per le distribuzioni di Red Hat che non sono in uso da 10 anni, quindi troverei difficile credere che non ci siano resti di questo RPM da nessuna parte.
Inoltre, spesso è possibile tornare all'origine dell'applicazione contenuta nell'RPM e utilizzarla anche per ricostruire l'RPM. Spesso le app di origine includeranno un .spec
file necessario che viene utilizzato per ricostruire l'RPM.
Infine, è possibile ottenere l'origine e il .spec
file da un servizio di compilazione come Koji per le distribuzioni basate su Red Hat. SuSE mantiene anche servizi di build simili in modo da poterli cercare per ottenere vecchi manufatti di build.
Prendendo i binari come sono
È possibile utilizzare questo metodo per sollevare gli eseguibili effettivi da un sistema e caricarli per la distribuzione su un altro sistema.
macchina A
$ rpm -ql <packageNameHere> | xargs tar -zcvf /tmp/program.tgz
macchina B
$ tar -zxvf /path/to/your/program.tgz
La versione di RPM di SLES
Secondo uno dei post di questo thread: Ri: Come creare RPM dai pacchetti installati rpm
su SLES si presume che abbia lo switch --repackage
. Questo non esiste sulla versione Red Hat (in Fedora o CentOS). Ma secondo il post puoi usarlo in questo modo:
$ rpm -e --repackage <somepackage>
Al termine, troverai il tuo RPM accessibile qui:
/var/spool/repackage
Usando rpmerizor
Rpmerizor è uno strumento / script di terze parti che è possibile installare che reimballerà i file di origine in un RPM corrispondente. L'utilizzo di questo script è accessibile qui, intitolato: la pagina man di rpmerizor .
estratto
Rpmerizor è uno script che consente di creare un pacchetto RPM dai file installati. Devi semplicemente specificare i file sulla riga di comando e rispondere ad alcune domande interattive per riempire i metadati rpm (nome del pacchetto, versione ...). Puoi anche usarlo in modalità batch con le opzioni della riga di comando per i metadati.
Utilizzando rpmrebuild
Da non confondere con lo strumento di compilazione rpmbuild
, rpmrebuild
è un altro script di terze parti che è possibile utilizzare per reimballare un RPM già installato.
estratto
rpmrebuild è uno strumento per creare un file RPM da un pacchetto che è già stato installato in un uso di base, l'uso di rpmrebuild non richiede alcuna conoscenza della costruzione di rpm. (Su debian, il prodotto equivalente è dpkg-repack).
Esempio
Supponiamo di voler riconfezionare openssh-server.
$ rpm -aq | grep openssh-server
openssh-server-6.2p2-8.fc19.x86_64
Ora impacchettalo:
$ 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
Riferimenti