Description of problem: Currently the LSB standard directories /etc/init.d and /etc/rc(runlevel).d are pointers to the old, Red Hat specific locations. It might be nice to clean up initscripts for a future release to remove the old directories, and get service packages to use the correct locations.
This is fundamentally impossible in the current RPM context. What happens is that you have to switch it so that what are currently directories are symlinks, and the reverse. This is doable, although very messy since RPM can't atomically replace a directory with a symlink. But then comes the interesting part. You'll also have the new package that moves its file from /etc/rc.d/init.d/foo to /etc/init.d/foo. So, let's follow the state machine for a package that's upgrade in this manner: ... laying down new files ... - OK, I've got a new file /etc/init.d/foo. unlink("/etc/init.d/foo"), write new one ... done ... ... removing old files ... - OK, I've got the old file /etc/rc.d/init.d/foo. It's not int the current package. unlink("/etc/rc.d/init.d/foo") Oops, that points to the file we just installed. *poof* Yes, we tried this once for one maddening week. See rawhide. See rawhide break badly.