I upgraded an old 9.2 server today with oS11.0 and the upgrade itself went very well. However, anytime I run chkconfig to turn a service off or on I get the following message:
“insserv: script skeleton.compat: service FOO already provided!”
The service does seem to be turning off and on as expected but something’s obviously not quite right.
You must have turned on one of skeleton or skeleton.compat as a service. They are not meant to be turned on, they are just examples. Since they both declare that they provide service FOO, trying to turn on the second one would elicit a complaint.
I was thinking along the same line. chkconfig --list shows skeleton.compat off in all runlevels however… yet still I see the message when turning any service on/off. I had looked at the skeleton scripts and they appeared to be exactly what you described – just templates. Why would a template script that’s “off” in all runlevels be causing this message at all, let alone when turning on/off OTHER services?
After your response however I decided to move the skeleton scripts out of /etc/init.d temporarily and the message indeed stopped when running chkconfig to on/off other services. In a sense then the problem is solved. However, on my other oS11.0 installs the skeleton scripts exist in /etc/init.d yet don’t cause this message so moving them out of /etc/init.d apparently isn’t the ideal way to fix this.
Hey, I think I figured it out. The SUSE 9.2 box I upgraded ran lighttpd which was apparently installed from a non-SUSE RPM. (Not me. A web developer who needed a Ruby on Rails platform for an intranet app set the box up originally.) Anyway, the 18th line of the init script it placed in /etc/init.d says:
Provides: FOO
This competes with the skeleton scripts which also claim to provide FOO. (For some reason the two skeleton scripts, which both claim to provide FOO, don’t compete with each other however. ?)
I checked the original 9.2 server (I made an image of it prior to upgrade and then upgraded using the image in case the upgrade bombed) and it is the same way on the original box. Apparently 9.2 didn’t care that more than one service claimed to “provide: foo” whereas 11.0 does. Since the original lighttpd RPM was non-SUSE the upgrade to 11.0 didn’t upgrade it.
Two fixes:
Edit the lighttpd init script and correct line 18 to identify that it provides lighttpd rather than FOO.
Remove the non-SUSE rpm and install lighttpd from oS11.0 which is newer, bug-fixed, and probably more secure anyway.
Option 1 was trivial so I tried it and now no “FOO already provided” message appears when using chkconfig.
Option 2 is generally preferable so I’ll snapshot the box, try option 2, and fallback to option 1 only if the upgrade to SUSE’s lighttpd breaks the RoR app.
Unless you think I’ve misdiagnosed, I consider this resolved. Thanks.