Il existe deux machines, version / arche identique de SLES.
Sur la machine #A, un logiciel "foo" est installé que nous pouvons voir utiliser rpm -qa
.
Sur la machine #B, le logiciel "foo" doit être installé.
Le foo.rpm
n'est disponible auprès d'aucune source, sur Internet, etc.
Question
Étant donné que le package a foo.rpm
été installé sur la machine #A, pouvons-nous créer un foo.rpm
fichier à partir des fichiers déjà installés?
Il y a aussi des scripts pré / post dans les rpm, je pense. Ainsi, le foo.rpm
( avec les dépendances? ) Peut être installé.
Réponses:
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 utilisantrpmbuild --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
machine B
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:Après cela, vous trouverez votre RPM accessible ici:
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
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
Exemple
Disons que nous voulons reconditionner le serveur openssh.
Maintenant, emballez-le:
Références
la source
En règle générale non.
Avec un peu de chance
rpm -qi
etrpm -q --changelog
donnez un aperçu de l'origine du colis.S'il a été construit sur le système sur lequel il fonctionne, vous pouvez toujours avoir le fichier spec utilisé pour faire le rpm réel, sinon les deux.
En règle générale, je ne recommande pas de copier les fichiers / binaires, mais la plupart des métadonnées se trouvent dans la base de données RPM et vous avez les fichiers réels.
rpm -q --list <pkg_name>
affiche tous les fichiers qu'un package déploie.rpm -q --scripts <pkg_name>
pour montrer tous les scripts qui sont exécutés en installant (ou en supprimant) le package peut fournir au moins autant d'informations sur son objectif que les fichiers qui sont déployés.Et toutes les dépendances à installer peuvent être trouvées avec
rpm -q --requires <pkg_name>
.la source