Il est possible mais très difficile de le faire pour que cela se fasse correctement. Si vous êtes désespéré, vous pouvez créer un nouveau .spec
fichier RPM et construire un "faux" fichier RPM source (SRPM) que vous pouvez ensuite utiliser pour construire un fichier RPM résultant en utilisant rpmbuild --rebuild
.
Je continuerais plutôt de rechercher le RPM réel. Vous ne précisez pas lequel dans votre question, mais d'après mon expérience, vous pouvez trouver n'importe quoi sur Internet si vous savez comment le rechercher. J'ai trouvé d'anciennes versions de RPM pour les distributions Red Hat qui n'ont pas été utilisées depuis plus de 10 ans, donc j'ai du mal à croire qu'il n'y ait aucun vestige de ce RPM nulle part.
Vous pouvez également souvent revenir à la source de l'application contenue dans le RPM et l'utiliser pour reconstruire le RPM également. Souvent, les applications source incluent un .spec
fichier nécessaire qui est utilisé pour reconstruire le RPM.
Enfin, vous pouvez obtenir la source et le .spec
fichier à partir d'un service de construction tel que Koji pour les distributions basées sur Red Hat. SuSE gère également des services de génération similaires afin que vous puissiez les rechercher pour obtenir d'anciens artefacts de génération.
Prendre les binaires tels quels
Vous pouvez utiliser cette méthode pour soulever les exécutables réels d'un système et les tarer pour le déploiement sur un autre système.
machine A
$ rpm -ql <packageNameHere> | xargs tar -zcvf /tmp/program.tgz
machine B
$ tar -zxvf /path/to/your/program.tgz
Version SLES de RPM
Selon l'un des articles de ce fil de discussion: Re: Comment créer des packages installés par RPM rpm
sur SLES est censé avoir le commutateur --repackage
. Cela n'existe pas sur la version Red Hat (dans Fedora ou CentOS). Mais selon l'article, vous pouvez l'utiliser comme suit:
$ rpm -e --repackage <somepackage>
Après cela, vous trouverez votre RPM accessible ici:
/var/spool/repackage
Utilisation de rpmerizor
Rpmerizor est un outil / script tiers que vous pouvez installer qui reconditionnera les fichiers source dans un RPM correspondant. L'utilisation de ce script est accessible ici, intitulée: page de manuel de rpmerizor .
extrait
Rpmerizor est un script qui vous permet de créer un package RPM à partir des fichiers installés. Il vous suffit de spécifier des fichiers sur la ligne de commande et de répondre à quelques questions interactives pour renseigner les métadonnées rpm (nom du package, version ...). Vous pouvez également l'utiliser en mode batch avec des options de ligne de commande pour les métadonnées.
Utilisation de rpmrebuild
À ne pas confondre avec l'outil de construction rpmbuild
, rpmrebuild
est un autre script tiers que vous pouvez utiliser pour effectuer un reconditionnement d'un RPM déjà installé.
extrait
rpmrebuild est un outil pour construire un fichier RPM à partir d'un package qui a déjà été installé dans une utilisation de base, l'utilisation de rpmrebuild ne nécessite aucune connaissance en construction rpm. (Sur debian, le produit équivalent est dpkg-repack).
Exemple
Disons que nous voulons reconditionner le serveur openssh.
$ rpm -aq | grep openssh-server
openssh-server-6.2p2-8.fc19.x86_64
Maintenant, emballez-le:
$ 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
Références