RPM de mise à niveau désinstalle le RPM
Je me suis mise à niveau de notre projet TR /min. Le problème est lorsque je me suis mise à niveau à partir de projectname-1.0-0 à projectname-1.0-1, il installe le nouveau projet et désinstalle l'ancien projet, qui, dans la vue d'ensemble, supprime mon projet entièrement. J'ai utilisé "vv" option lors de la mise à niveau et la sortie a montré la désinstallation se fait après l'installation.
Quelqu'un s'il vous plaît aider avec ce problème. Est-ce que je devrait changer spécifiquement dans le RPM spec ou rpmbuild options?
Vous devez vous connecter pour publier un commentaire.
Oui, quand un RPM de mise à niveau se produit, la vitesse de rotation de la première installe la nouvelle version du paquet, puis désinstalle l'ancienne version du paquet. Seuls les fichiers de l'ancien paquet sont supprimés. Mais vos scripts (c'est à dire %avant la, %de, %preun, %postun) ont besoin de savoir s'ils sont de la manipulation d'une mise à niveau ou juste une plaine d'installer ou de désinstaller.
La commande rpm va passer un argument à vos scripts, qui est de 1$, qui est le nombre de versions des paquets qui sont installés. Le tableau ci-dessous (à partir de la RedHat TR /min Guide par Eric Foster-Johnston), fournit un échantillon de valeurs possibles.
Donc, dans votre %preun, vous voulez probablement pour vérifier si "$1 = 0" avant le retrait de tous les services.
Pour plus d'informations (et une meilleure table) voir: http://docs.fedoraproject.org/en-US/Fedora_Draft_Documentation/0.1/html/RPM_Guide/ch09s04s05.html
--noscripts
drapeau pour éviter tout avant ou après l'exécution de scripts. Pas sûr de ce que, si quelque chose, est l'équivalent avec yum.Lorsque vous mettez à niveau un paquet RPM, les scripts sont exécutés dans l'ordre suivant:
Si l'installation est frais ou de mise à niveau, il y a un argument passé à chaque script qui représente le nombre de paquets Rpm installés de la même package avec différentes versions.
Pour le pré & post scripts à 1 en cas de première installation.
Pour preun & postun scripts il sera de 0 pour le dernier désinstaller.
Ce qui se passe dans votre cas est que preun ou postun scripts peuvent être de supprimer des fichiers qui sont utiles pour le nouveau package. Vous n'avez pas besoin de s'inquiéter à propos du manuel de suppression de fichiers dans postun scripts, il sera traité de façon intelligente être RPM lui-même.
ref: La mise à niveau & désinstallation
Oui. Au cours de la rpm à installer, l' %installer et valider %scripts sera appelée. Après une installation réussie, l' %preun et %postun scripts seront appelés à désinstaller la version précédente de la rpm. Si ce n'est pas manipulé correctement, ces %preun et %postun scripts peuvent manipuler les changements apportés par %installer et valider %scripts.
Le rpm jeux de $1 argument avec des valeurs appropriées à distinguer le nombre de tr /min versions installées. Au cours de la nouvelle installation de projectname-1.0-0, %installer et valider %scripts seront appelés à $1 la valeur 1 indiquant que c'est la seule version active. Lors de la mise à niveau de projectname-1.0-1, %installer et valider %scripts seront appelés à $1 set à 2. Après quoi, l' %preun et %postun scripts seront appelés à $1 la valeur 1 pour nettoyer les étoffes de projectname-1.0-0. Ainsi, par l'écriture du fichier de spécification de 1 $de la valeur, nous pouvons gérer les mises à jour de manière efficace.
%install
n'est pas couru lors de l'installation des RPM mais au cours de construction (oui, le nom peut être assez trompeur). Je pense que tu veux dire%pre
.il est important de comprendre comment désinstaller les sections de travail sur la mise à niveau
Nous avons une variable $1, qui peut être vérifié au pré, post, unpre, annuler l'enregistrement (sa valeur varie en fonction de l'installer, mettre à jour, désinstallation)
Selon sa valeur, nous pouvons dire s'il s'agit d'installer ou de mettre à niveau à partir de l'intérieur de rpm
E. g:
envisager la mise à niveau de l'abc-1 à partir de la version 1 à la version 2 (abc-2)