Bonjour j'ai actuellement un problème avec l'exécution de la partie dans %POSTUN dans le cas d'une désinstallation complète d'un applicatif.

Voici ce que j'ai dans le fichier .spec :

# Dans le cas d'une desinstallation de l'applicatif
%preun
if [ "$1" -eq 0 ]
then
echo "on est dans l'etat preun = $1"
fi

%postun
echo "on est dans l'etat postun = $1"
if [ "$1" -eq 0 ]
then
echo "On supprime le fichier de version version.ver"
rm -f /appli2/version.ver

echo "On supprime le repertoire appli2/version"
rm -rf /appli2/version

fi




J'utilise YUM REMOVE pour désinstaller: c'est ce que l'on m'impose.
Voici ce que j'obtiens:
Installed size: 9.2 M
Is this ok [y/N]: y
Downloading Packages:
Running rpm_check_debug
Running Transaction Test
Transaction Test Succeeded
Running Transaction
Erasing : toto-313-00.x86_64 1/1
on est dans l'etat preun = 0
Verifying : toto-313-00.x86_64 1/1

Removed:
toto.x86_64 0:313-00

Complete!

On voit bien que dans le résultat, la partie %POSTUN est zappée.

Par contre, si j'utilise rpm -ev toto-313-00.x86_64, on s'aperçoit qu'on rentre bien dans la partie %POSTUN:
on est dans l'etat preun = 0
on est dans l'etat postun = 0
On supprime le fichier de version version.ver
On supprime le repertoire version

Ma question est simple:
Pourquoi dans le cas de "yum remove " la partie %POSTUN n'est pas exécutée alors que dans le cas de la commande "rpm -ev ..." tout se passe pour le mieux


je vous remercie par avance de vos réponses
Je crois avoir déjà eu ça. Déjà ton POSTUN n'est pas zappé, juste le if. Ensuite peut être que $1 est "perdu" ou juste que yum intercepte la sortie standard.
Si le $1 est perdu ton if n'est pas executé
Si la sortie standard est juste intercepté, c'est ton echo qui n'apparait pas, mais le rm se fait. Ce n'est pas le cas?

Sinon pourquoi tu t'embêtes à supprimer les fichiers? S'ils sont proprement listés dans ta section %files ils seront automatiquement supprimés par yum/rpm.
6 jours plus tard
Bonjour, merci pour ta réponse.

effectivement, après avoir fait plusieurs tests, je me suis rendu compte que la partie %POSTUN était bien exécutée par le YUM REMOVE.
Je constate que les fichiers sont biens supprimés alors que le echo n'apparait pas.
Donc en fait je n'ai pas de problème, mais le fait de ne pas voir le "echo" m'a perturbé. Alors qu'avec la commande rpm -ev j'avais bien le "echo".

Est-ce un comportement normal ou est-ce une mauvaise utilisation du %POSTUN?
Existe-t-il un moyen de faire des commentaires en phase de désinstallations?

Sinon, pour répondre à ta question "pourquoi tu t'embêtes à supprimer les fichiers? S'ils sont proprement listés dans ta section %files ils seront automatiquement supprimés".
Tu as bien raison, c'est plus simple de le faire via RPM.

J'avais adapté mon exemple pour comprendre le fonctionnement de la partie %POSTUN.

En fait, je voulais supprimer des fichiers "uniquement" en désinstallation complète qui sont créés par l'utilisateur de l'applicatif installé.
Donc, ces fichiers n’appartiennent pas au RPM mais sont issus d'actions réalisées par l'utilisateur via l'applicatif.
C'est un comportement normal, les spec de RPM déconseille l'affichage de messages. On fait confiance aux outils, car les messages ne sont pas toujours visibles (ex dans ton cas avec yum, où lors d'une installation via Anaconda par ex, bref partout où la sortie standard stdin n'est pas visible).

Pour ton problème de suppression de fichiers créés après l'installation, regarde la directive %ghost http://www.rpm.org/max-rpm-snapshot/s1-rpm-inside-files-list-directives.html