2016-08-05 2 views
0

Je suis un nouveau dans le bâtiment RPM. Je dois construire RPM qui installerait un paquet seulement si le fichier/etc/i-am-a-requirement existe sur la machine cible. Alors, je l'ai écritComment faire pour restaurer l'installation de RPM si% pre section du script de fichier SPEC retourne false

%pre 
if test -f "/etc/i-am-a-requirement"; then 
echo "I'm OK to continue" 
else 
echo "The file is not found, the RPM won't be installed" 
-- How to add failure here? -- 
fi 

Je sais que, normalement, nous nous attendons à RPM d'avoir des paquets de dépendance, mais dans ce cas «/etc/i-am-a-besoin » est distribué sous forme binaire, donc il ne dispose pas d'un paquet du tout.

+0

http://stackoverflow.com/questions/9932562/how-to-exit-rpm-install-in-case-of-an-error?rq = 1 –

Répondre

1

le %pre, %post et d'autres scripts ne peuvent pas arrêter l'installation d'un RPM. Une fois que vous êtes dans les scriptlets; l'installation continuera nomatter le code de sortie de vos scriptlets.

Vous devez utiliser nécessaire:

Requires: /etc/i-am-a-requirement 
+1

Est-ce que ça marche si '/ etc/i-am-a-requirement' ne se trouve pas dans un paquetage rpm lui-même? – WilQu

+1

'% post' ne peut pas, mais'% pre' peut - juste appeler 'false'. Il ne va pas "annuler" tout ce que vous avez fait dans le script. En ce qui concerne le drapeau 'Requires' avec lequel vous avez répondu, c'est la bonne solution. Je ne suis pas certain de savoir s'il regarde directement le système de fichiers ou s'il vérifie la base de données RPM. –

+0

Merci @aaron pour la clarification. wilqu: oui, cela fonctionne avec juste un fichier, mais comme Aaron l'a dit, il n'est pas sûr qu'il va chercher le fichier sur le disque ou seulement dans la base de données rpm. –