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.