The issue is actually triggered by each kernel; their installation script touches /boot/do_purge_kernels: $ rpm -q kernel-default-5.3.18-lp152.19.2.x86_64 --scripts | grep purge # Flag to trigger /etc/init.d/purge-kernels on next reboot (fate#312018) touch /boot/do_purge_kernels rm -f /boot/do_purge_kernels After the next reboot, zypper purge-kernels then gets called and does its job. However, it should *not* remove the devel and source RPMs! Until this is fixed in libzypp/zypper, I'll use this recipe: # systemctl disable purge-kernels.service # zypper dup # rm /boot/do_purge_kernels # reboot