This sounds weird. On my test system: # rpm --scripts -q nvidia-gfxG04-kmp-default [...] postinstall scriptlet (using /bin/sh): arch=x86_64 flavor=default kver=$(make -sC /usr/src/linux-obj/$arch/$flavor kernelrelease) make -C /usr/src/linux-obj/$arch/$flavor \ modules \ M=/usr/src/kernel-modules/nvidia-390.25-$flavor \ SYSSRC=/lib/modules/$kver/source \ SYSOUT=/usr/src/linux-obj/$arch/$flavor pushd /usr/src/kernel-modules/nvidia-390.25-$flavor make -f Makefile \ nv-linux.o \ SYSSRC=/lib/modules/$kver/source \ SYSOUT=/usr/src/linux-obj/$arch/$flavor popd install -m 755 -d /lib/modules/4.4.76-1-$flavor/updates install -m 644 /usr/src/kernel-modules/nvidia-390.25-$flavor/nvidia*.ko \ /lib/modules/4.4.76-1-$flavor/updates depmod 4.4.76-1-$flavor [...] Oh. And there are also trigger scripts to rebuild the kernel module once a new kernel is being installed (kind of KMS reimplemented on package level). # rpm --triggers -q nvidia-gfxG04-kmp-default triggerpostun scriptlet (using /bin/sh) -- drm-kmp-default flavor=default pushd /usr/src/kernel-modules/nvidia-390.25-$flavor || true cp -a Makefile{,.tmp} || true make clean || true mv Makefile{.tmp,} || true popd || true arch=x86_64 flavor=default kver=$(make -sC /usr/src/linux-obj/$arch/$flavor kernelrelease) make -C /usr/src/linux-obj/$arch/$flavor \ modules \ M=/usr/src/kernel-modules/nvidia-390.25-$flavor \ SYSSRC=/lib/modules/$kver/source \ SYSOUT=/usr/src/linux-obj/$arch/$flavor pushd /usr/src/kernel-modules/nvidia-390.25-$flavor make -f Makefile \ nv-linux.o \ SYSSRC=/lib/modules/$kver/source \ SYSOUT=/usr/src/linux-obj/$arch/$flavor popd install -m 755 -d /lib/modules/4.4.76-1-$flavor/updates install -m 644 /usr/src/kernel-modules/nvidia-390.25-$flavor/nvidia*.ko \ /lib/modules/4.4.76-1-$flavor/updates depmod 4.4.76-1-$flavor [...] If you have complete different scripts in your packages, you're using complete different packages.