Hmm. I believe the behaviour is correct. You need to look for %triggerpostun script, not the %postun script. # rpm --triggers -q nvidia-gfxG05-kmp-default triggerpostun scriptlet (using /bin/sh) -- kernel-default for dir in $(find /lib/modules -mindepth 1 -maxdepth 1 -type d); do if [ ! -d $dir/kernel ]; then test -d $dir/updates && rm -f $dir/updates/nvidia*.ko fi done modules in updates/ are only removed if there is no kernel/ subdir any longer, i.e. no modules are longer installed.