[Kolab-devel] Kolab 3.0 on Debian Wheezy: More Issues

Johannes Graumann johannes_graumann at web.de
Fri Sep 28 10:37:33 CEST 2012


Johannes Graumann wrote:

> Torsten Grote wrote:
> 
>> On Wednesday 26 September 2012 15:26:31 Johannes Graumann wrote:
>>> > 2012-09-26 13:02:41,479 pykolab.setup ERROR Could not start and
>>> > configure to start on boot, the directory server service.
>>> 
>>> Also potentially bad. What is it actually trying to/supposed to do? What
>>> file to edit?
>> 
>> This is probably because the setup script checks for /bin/systemctl and
>> /sbin/service but not for /usr/sbin/service where the service command
>> resides on my debian system. The script also tries to call
>> /sbin/chkconfig which does't exist on my system at all.
>> 
>> This also looks like a bug to report. Do you want to do that?
>> 
>> If you know some python, you'll find the script source here:
>>     
>>     http://git.kolab.org/pykolab/tree/pykolab/setup
> 
> I managed to fix that with the patch proposed in
> https://issues.kolab.org/show_bug.cgi?id=1052

As Torsten pointed out in his comment to the patch the right thing to do 
would be something like the following at the top-level of "setup-kolab". I 
have never penetrated python on the object oriented level, so how to make 
'servicestarter', 'runlevelupdater' and 'servicecall' available in the 
"setup_*" modules remains mysterious to me ... I am also unsure how to deal 
with multiple, distribution-specific names for the same daemon/service (e.g. 
'dirsrv.target' and 'dirsrv') in a concise manner ...

Cheers, Joh

if os.path.isfile('/bin/systemctl'):
  servicestarter = ['/bin/systemctl', 'restart', '<REPLACEME>']
elif os.path.isfile('/sbin/service'):
  servicestarter = ['/sbin/service', '<REPLACEME>', 'restart']
elif os.path.isfile('/usr/sbin/service'):
  servicestarter = ['/usr/sbin/service', '<REPLACEME>', 'restart']
else:
  log.error(_("No service starting script available."))

if os.path.isfile('/bin/systemctl'):
  runlevelupdater = ['/bin/systemctl', 'enable', '<REPLACEME>']
elif os.path.isfile('/sbin/chkconfig'):
  runlevelupdater = ['/sbin/chkconfig', '<REPLACEME>', 'on']
elif os.path.isfile('/usr/sbin/update-rc.d'):
  runlevelupdater = ['/usr/sbin/update-rc.d', '<REPLACEME>','defaults'])
else:
  log.error(_("No runlevel updating script available."))

def servicecall(call,service):
  call = [x if x != '<REPLACEME>' else service for x in call]
  subprocess.call(call)

# Where dirsrv is to be started/integrated in the startup sequence one can 
# than say:
servicecall(servicestarter,'dirsrv')
servicecall(runlevelupdater,'dirsrv')




More information about the devel mailing list