On Fri, May 11, 2012 at 02:16:07PM +0300, Igor Vlasenko wrote: > Господа, > когда имя systemd сервиса отличается от имени sysV init скрипта, > возникает вопрос, что писать в %post/un_service . > > Естественно, хочется писать в %post/un_service > имя sysV init скрипта. > > Если сделать симлинк systemd сервиса с sysV init именем, > например, bluetoothd.service -> bluetooth.service > service start/stop работать будет. > > Проблема в том, что chkconfig on / off > не работает, даже если есть симлинк, поскольку эта функциональность > считается неправильной в systemctl. > > Это плохо, так как не позволяет писать скрипты, одинаково > работающие хоть под sysV init, хоть под systemd. > > Однако нам ничто не мешает пропатчить chkconfig, > чтобы он разрешал симлинк в настоящее имя systemd сервиса. > > Пример такого достаточно тривиального патча к chkconfig > приложен в аттачменте (chkconfig-2.patch). > > Предлагаю патчить chkconfig (не обязательно предложенным патчем) Патч, в принципе, логичный, и (с точностью до кода проверки суффикса) применимый. Только не логичнее ли применить это изменение прямо в systemctl? Есть ли какие-нибудь причины патчить именно chkconfig, а не systemctl? > + /* wheather the end of realName ends with .service */ > + if (strncmp (realName+strlen(realName)-sizeof(".service"), > + ".service", sizeof(".service")) != 0) { Если вдруг strlen(realName) окажется меньше sizeof(".service"), то может получиться не очень хорошо. -- ldv