2009-06-15 12 views
2

J'ai un paquetage rpm qui est déjà installé dans le système. Je veux remplacer l'ancien paquet par le nouveau paquet avec un nom de paquet différent. Le "rpm -Uvh [nom du paquet]" devrait être suffisant pour remplacer l'ancien paquet par le nouveau. Après avoir fait des recherches dans le réseau, j'ai découvert que "Obsoletes" est utilisé pour désuetter un ancien paquet et le remplacer par un nouveau paquet avec un nom différent. J'ai utilisé "Obsoletes" dans mon fichier de spécification de rpm mais quand j'essaye de mettre à niveau de l'ancien paquet le% preeun du vieux paquet est appelé avec $ 1 = 0 que je m'attendais à $ 1 = 1.

corrigez-moi si je me trompe n'importe où. Y a-t-il une meilleure solution pour ce problème?

Merci

Répondre

1

Y a-t-il une meilleure solution à ce problème?

rpm -e --nopreun <old-package> && rpm -i <new-package>

vous pouvez choisir d'activer et de désactiver les scripts spécifiques avec --no<scriptname>, ou vous pouvez désactiver tous les scripts avec --noscripts.

assurez-vous de vérifier les différents scripts associés au nouveau paquet; vous devrez peut-être désactiver certains d'entre eux aussi.

-Steve

P.S. ce serait probablement une question mieux affichée sur ServerFault. :)

1

Ma compréhension de votre problème est que l'ancien paquet fait quelque chose dans son script% preun que vous souhaitez à ne pas faire (comme la suppression d'un compte d'utilisateur ou quelque chose comme ça), non? Une façon de contourner ce problème pourrait consister à créer une version NMP 1 intermédiaire de l'ancien paquet qui ne contient aucun fichier, mettre à niveau vers celui-ci, puis mettre à jour votre nouveau paquet final.

+1

Oui, vous avez raison, mais je ne peux pas distribuer le paquet factice aux utilisateurs. Le scriptlet% preun est responsable de l'arrêt du démon et de la suppression des entrées de "chkconfig". Est-il possible de mettre à niveau vers un nouveau package avec un nom de package différent et le scriptlet% preun de l'ancien package ne s'exécute pas ou s'exécute avec $ 1 = 1. – Supratik