<?xml version="1.0" encoding="UTF-8" ?>

<bugzilla version="5.2"
          urlbase="https://bugzilla.altlinux.org/"
          
          maintainer="jenya@basealt.ru"
>

    <bug>
          <bug_id>29925</bug_id>
          
          <creation_ts>2014-03-30 09:30:18 +0400</creation_ts>
          <short_desc>Добавить LEGACY ACTIONS для конфигурации с systemd</short_desc>
          <delta_ts>2015-01-23 18:21:46 +0300</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>4</classification_id>
          <classification>Development</classification>
          <product>Sisyphus</product>
          <component>php5-fpm-fcgi</component>
          <version>unstable</version>
          <rep_platform>all</rep_platform>
          <op_sys>Linux</op_sys>
          <bug_status>CLOSED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>systemd</keywords>
          <priority>P3</priority>
          <bug_severity>normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>28931</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Evgenii Terechkov">evg</reporter>
          <assigned_to name="Anton Farygin">rider</assigned_to>
          <cc>inger</cc>
    
    <cc>ldv</cc>
    
    <cc>mithraen</cc>
    
    <cc>rider</cc>
    
    <cc>shaba</cc>
    
    <cc>zerg</cc>
          
          <qa_contact>qa-sisyphus</qa_contact>

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>145860</commentid>
    <comment_count>0</comment_count>
    <who name="Evgenii Terechkov">evg</who>
    <bug_when>2014-03-30 09:30:18 +0400</bug_when>
    <thetext>Время от времени от крона приходят такие письма:
============================================================
Anacron &lt;root@evg-krsk.dyndns.org&gt; (Sun, 30 Mar 2014 13:16:16 +0800) (inbox year_2014)
Subject: Anacron job &apos;cron.daily&apos;
To: root@evg-krsk.dyndns.org
Date: Sun, 30 Mar 2014 13:16:16 +0800

Unknown operation &apos;rotate&apos;.
error: error running shared postrotate script for &apos;/var/log/php5-fpm/*.log &apos;
============================================================

первое такое письмо мне пришло 28.10.2013.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>145870</commentid>
    <comment_count>1</comment_count>
    <who name="Anton Farygin">rider</who>
    <bug_when>2014-03-30 22:41:38 +0400</bug_when>
    <thetext>спасибо, посмотрю.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>145884</commentid>
    <comment_count>2</comment_count>
    <who name="Anton Farygin">rider</who>
    <bug_when>2014-03-31 14:27:22 +0400</bug_when>
    <thetext>systemd используется ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>145893</commentid>
    <comment_count>3</comment_count>
    <who name="Evgenii Terechkov">evg</who>
    <bug_when>2014-03-31 18:12:32 +0400</bug_when>
    <thetext>Да. На машинах с sysvinit вроде не замечено такого.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>145899</commentid>
    <comment_count>4</comment_count>
    <who name="Anton Farygin">rider</who>
    <bug_when>2014-04-01 08:23:30 +0400</bug_when>
    <thetext>systemd несовместим с SysV init, надо править именно его.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>146902</commentid>
    <comment_count>5</comment_count>
    <who name="Alexey Shabalin">shaba</who>
    <bug_when>2014-06-30 15:28:21 +0400</bug_when>
    <thetext>Если хотите использовать совместно с systemd, то придется править php5-fpm-fcgi.
Я не буду добавлять никаких новых параметров в systemd(и в service тоже).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>146905</commentid>
    <comment_count>6</comment_count>
    <who name="Anton Farygin">rider</who>
    <bug_when>2014-06-30 15:47:57 +0400</bug_when>
    <thetext>А чего править то ? какая замена service rotate ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>146906</commentid>
    <comment_count>7</comment_count>
    <who name="Anton Farygin">rider</who>
    <bug_when>2014-06-30 16:13:23 +0400</bug_when>
    <thetext>В fedora для таких выкрутасов есть подобное:
%if %{WITH_SYSTEMD}
%attr(640,root,root) %{_unitdir}/auditd.service
%attr(750,root,root) %dir %{_libexecdir}/initscripts/legacy-actions/auditd
%attr(750,root,root) %{_libexecdir}/initscripts/legacy-actions/auditd/resume
%attr(750,root,root) %{_libexecdir}/initscripts/legacy-actions/auditd/rotate
%attr(750,root,root) %{_libexecdir}/initscripts/legacy-actions/auditd/stop
%attr(750,root,root) %{_libexecdir}/initscripts/legacy-actions/auditd/restart
%attr(750,root,root) %{_libexecdir}/initscripts/legacy-actions/auditd/condrestart
%else

а что у нас?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>146909</commentid>
    <comment_count>8</comment_count>
    <who name="Sergey V Turchin">zerg</who>
    <bug_when>2014-06-30 16:19:27 +0400</bug_when>
    <thetext>http://en.opensuse.org/openSUSE:Systemd_packaging_guidelines#extra_actions</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>146910</commentid>
    <comment_count>9</comment_count>
    <who name="Anton Farygin">rider</who>
    <bug_when>2014-06-30 16:29:29 +0400</bug_when>
    <thetext>Т.е. - кто-то должен поддерживать legacy actions для ряда сервисов.
Кто?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>146911</commentid>
    <comment_count>10</comment_count>
    <who name="Alexey Shabalin">shaba</who>
    <bug_when>2014-06-30 16:30:59 +0400</bug_when>
    <thetext>Вот аналогичный баг.
https://bugzilla.altlinux.org/show_bug.cgi?id=27568

Если хочется использовать что-то нестандартное в скрипте, то не надо для этого
привлекать service.

ЗЫ: никакие if %{WITH_SYSTEMD} не нужны.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>146913</commentid>
    <comment_count>11</comment_count>
    <who name="Anton Farygin">rider</who>
    <bug_when>2014-06-30 16:34:47 +0400</bug_when>
    <thetext>if %{WITH_SYSTEMD} взялся из RedHat&apos;овского спека.
Почему бы нам не сделать так, как у SuSE и RedHat?

service тогда получается вообще не нужен - можно всегда звать initscript напрямую.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>146914</commentid>
    <comment_count>12</comment_count>
    <who name="Anton Farygin">rider</who>
    <bug_when>2014-06-30 16:37:44 +0400</bug_when>
    <thetext>Дима, service твой пакет. Что скажешь ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>146915</commentid>
    <comment_count>13</comment_count>
    <who name="Alexey Shabalin">shaba</who>
    <bug_when>2014-06-30 16:51:29 +0400</bug_when>
    <thetext>Антон, ты же прекрасно видишь, что SuSE и RedHat поддерживают %if %{WITH_SYSTEMD} упаковывают одни файлы, и игнорирует другие. Они целиком мигрировали на systemd, и забыли об SysV.
Мы же в ALTLinux поддерживаем обе системы инициализации, одновременно. Мы глобально не заявляли, что отказываемся от SysV.
Я не пойму, что тебе мешает заменить в php5-fpm.logrotate
 /sbin/service php5-fpm rotate &gt;/dev/null
на
 /etc/init.d/php5-fpm rotate &gt;/dev/null
?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>146916</commentid>
    <comment_count>14</comment_count>
    <who name="Anton Farygin">rider</who>
    <bug_when>2014-06-30 17:28:25 +0400</bug_when>
    <thetext>То, что я вижу - это RedHat добавил для случая с systemd возможность выполнять произвольные действия для служб.
Очень удобно.

Да, и в их варианте можно будет действительно отказаться от SysVInit скриптов. В нашем - будем таскать с собой пока не реализуем их вариант.

Есть какие-то безумные сложности с тем, что бы сделать как у них ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>146917</commentid>
    <comment_count>15</comment_count>
    <who name="Alexey Shabalin">shaba</who>
    <bug_when>2014-06-30 18:16:32 +0400</bug_when>
    <thetext>(В ответ на комментарий №14)
&gt; То, что я вижу - это RedHat добавил для случая с systemd возможность выполнять
&gt; произвольные действия для служб.
&gt; Очень удобно.
&gt; 
&gt; Да, и в их варианте можно будет действительно отказаться от SysVInit скриптов.
&gt; В нашем - будем таскать с собой пока не реализуем их вариант.
&gt; 
&gt; Есть какие-то безумные сложности с тем, что бы сделать как у них ?

Пришли пожалуйста патч, или ткни пальцем. У меня ощущение, что мы о разном ведем речь.
%if %{WITH_SYSTEMD}
%attr(640,root,root) %{_unitdir}/auditd.service
в спеке используется только на этапе сборки, и то что попало в пакет, то и попало, при установке пакета в систему ничего не проверяется.
Мы же кладем в систему оба файла:
и 
%{_unitdir}/auditd.service
и
%{_initdir}/auditd
А в дальнейшем определяем под чем работает система (/sbin/sd_booted)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>146922</commentid>
    <comment_count>16</comment_count>
    <who name="Anton Farygin">rider</who>
    <bug_when>2014-06-30 22:53:59 +0400</bug_when>
    <thetext>посмотри на исходники service из fedora.
строка 9
https://git.fedorahosted.org/cgit/initscripts.git/tree/service?id=initscripts-9.54-1#n9

и дальнейшая обработка ACTIONDIR:
https://git.fedorahosted.org/cgit/initscripts.git/tree/service?id=initscripts-9.54-1#n73</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>146925</commentid>
    <comment_count>17</comment_count>
    <who name="Dmitry V. Levin">ldv</who>
    <bug_when>2014-06-30 23:09:07 +0400</bug_when>
    <thetext>(In reply to comment #14)
&gt; То, что я вижу - это RedHat добавил для случая с systemd возможность выполнять
&gt; произвольные действия для служб.
&gt; Очень удобно.

Не для systemd, а для service в системе под управлением systemd.
Наверное, это удобные костыли, но они от этого не перестают быть костылями,
и каталог у них не просто так получил название initscripts/legacy-actions.

Если &quot;audit rotate&quot; - это публичный интерфейс, то лучше сделать audit-rotate(8).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>146927</commentid>
    <comment_count>18</comment_count>
    <who name="Alexey Shabalin">shaba</who>
    <bug_when>2014-06-30 23:16:21 +0400</bug_when>
    <thetext>мне кажется, что service (или systemct) должен выполнять только start, stop,
restart, condrestart, condstop.
Если надо вызвать что-то не стандартное, то при чем тут service?
Запускайте как угодно без service.
Унификация требует жертв, но и приводит к единым стандартам.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>146928</commentid>
    <comment_count>19</comment_count>
    <who name="Anton Farygin">rider</who>
    <bug_when>2014-06-30 23:17:03 +0400</bug_when>
    <thetext>Пускай будут удобные костыли, к тому же и service можно назвать костылём. auditd rotate это всего-лишь SIGUSR1, и таких мест есть ещё, не только у меня и не только rotate.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>146929</commentid>
    <comment_count>20</comment_count>
    <who name="Anton Farygin">rider</who>
    <bug_when>2014-06-30 23:19:40 +0400</bug_when>
    <thetext>(In reply to comment #18)
&gt; мне кажется, что service (или systemct) должен выполнять только start, stop,
&gt; restart, condrestart, condstop.
&gt; Если надо вызвать что-то не стандартное, то при чем тут service?
&gt; Запускайте как угодно без service.
&gt; Унификация требует жертв, но и приводит к единым стандартам.

service не стоит терять обратную совместимость. Каким бы systemd не был, надо постараться обеспечить одинаковую семантику для service auditd на systemd и на sysvinit, к тому же на первом ещё и всё стандартизировано.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>146930</commentid>
    <comment_count>21</comment_count>
    <who name="Alexey Shabalin">shaba</who>
    <bug_when>2014-06-30 23:25:48 +0400</bug_when>
    <thetext>про какую совместимость идет речь?
start|stop и т.п. поддерживаются.
А вот то что в скрипте можно описать абсолютно любую опцию - какая же это совместимость? этого невозможно сделать в рамках systemd - просто нет этого, и все.
Невозможно в /lib/systemd/system/auditd.service придумать что-то еще, там есть только ExecStart и ExecReload.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>146931</commentid>
    <comment_count>22</comment_count>
    <who name="Anton Farygin">rider</who>
    <bug_when>2014-06-30 23:29:08 +0400</bug_when>
    <thetext>да, и именно поэтому в /sbin/sevice RedHat и SuSE ввели понятие legacy actions - для того, что бы не ломать совместимость с теми системами, которые ожидают от /sbin/service что-то большее, чем start/stop/status.

logrotate это частный случай. 
Мы же не можем предсказать, какие системы, заточенные на RedHat или SuSE, будут работать с нашим auditd. Поэтому надо постараться обеспечить совмесимость там, где это можно сделать.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>146932</commentid>
    <comment_count>23</comment_count>
    <who name="Alexey Shabalin">shaba</who>
    <bug_when>2014-06-30 23:38:19 +0400</bug_when>
    <thetext>Именно поэтому не стоит этого делать у нас.
У нас мантейнеры ленятся просто .service файл подложить, а ты хочешь их еще обязать придумывать для совместимости скрипты в /usr/libexec/initscripts/legacy-action? Ты же этого сам делать не будешь. И я не буду.
Гораздо проще везде где хочется сказать service audit rotate, проще заменить на /etc/rc.d/audit rotate.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>146933</commentid>
    <comment_count>24</comment_count>
    <who name="Dmitry V. Levin">ldv</who>
    <bug_when>2014-06-30 23:39:20 +0400</bug_when>
    <thetext>(In reply to comment #22)
&gt; да, и именно поэтому в /sbin/sevice RedHat и SuSE ввели понятие legacy actions
&gt; - для того, что бы не ломать совместимость с теми системами, которые ожидают от
&gt; /sbin/service что-то большее, чем start/stop/status.
&gt; 
&gt; logrotate это частный случай. 
&gt; Мы же не можем предсказать, какие системы, заточенные на RedHat или SuSE, будут
&gt; работать с нашим auditd. Поэтому надо постараться обеспечить совмесимость там,
&gt; где это можно сделать.

Ты шутишь?  Как будто мало нам нашего legacy, так ты предлагаешь еще и с RedHat&apos;овским legacy совместимость обеспечивать?
Я думаю, что было бы правильно отрепортить в RedHat, что для таких действий, как audit rotate, нужен нормальный документированный интерфейс.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>146935</commentid>
    <comment_count>25</comment_count>
    <who name="Anton Farygin">rider</who>
    <bug_when>2014-06-30 23:44:07 +0400</bug_when>
    <thetext>(In reply to comment #23)
&gt; Именно поэтому не стоит этого делать у нас.
&gt; У нас мантейнеры ленятся просто .service файл подложить, а ты хочешь их еще
&gt; обязать придумывать для совместимости скрипты в
&gt; /usr/libexec/initscripts/legacy-action? Ты же этого сам делать не будешь. И я
&gt; не буду.

Я не буду, это апстрим сделали и положил нужные скриптики в пакет. Мне только в спеке то файлики перечислить.

&gt; Гораздо проще везде где хочется сказать service audit rotate, проще заменить на
&gt; /etc/rc.d/audit rotate.

Гораздо проще вызывать все неподдерживаемые systemctl таргеты из init файла.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>146936</commentid>
    <comment_count>26</comment_count>
    <who name="Anton Farygin">rider</who>
    <bug_when>2014-06-30 23:46:05 +0400</bug_when>
    <thetext>(In reply to comment #24)
&gt; (In reply to comment #22)
&gt; &gt; да, и именно поэтому в /sbin/sevice RedHat и SuSE ввели понятие legacy actions
&gt; &gt; - для того, что бы не ломать совместимость с теми системами, которые ожидают от
&gt; &gt; /sbin/service что-то большее, чем start/stop/status.
&gt; &gt; 
&gt; &gt; logrotate это частный случай. 
&gt; &gt; Мы же не можем предсказать, какие системы, заточенные на RedHat или SuSE, будут
&gt; &gt; работать с нашим auditd. Поэтому надо постараться обеспечить совмесимость там,
&gt; &gt; где это можно сделать.
&gt; 
&gt; Ты шутишь?  Как будто мало нам нашего legacy, так ты предлагаешь еще и с
&gt; RedHat&apos;овским legacy совместимость обеспечивать?

Так мы и так это делаем, копируя у них systemd. Так давай заодно и обеспечим совместимость хотя б с нашим legacy, благо инструмент простой и не требует никаких серьёзных усилий.

&gt; Я думаю, что было бы правильно отрепортить в RedHat, что для таких действий,
&gt; как audit rotate, нужен нормальный документированный интерфейс.

ещё в php. Да, и мало ли где это попадётся.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>146937</commentid>
    <comment_count>27</comment_count>
    <who name="Dmitry V. Levin">ldv</who>
    <bug_when>2014-06-30 23:59:22 +0400</bug_when>
    <thetext>(In reply to comment #26)
&gt; (In reply to comment #24)
&gt; &gt; (In reply to comment #22)
&gt; &gt; &gt; да, и именно поэтому в /sbin/sevice RedHat и SuSE ввели понятие legacy actions
&gt; &gt; &gt; - для того, что бы не ломать совместимость с теми системами, которые ожидают от
&gt; &gt; &gt; /sbin/service что-то большее, чем start/stop/status.
&gt; &gt; &gt; 
&gt; &gt; &gt; logrotate это частный случай. 
&gt; &gt; &gt; Мы же не можем предсказать, какие системы, заточенные на RedHat или SuSE, будут
&gt; &gt; &gt; работать с нашим auditd. Поэтому надо постараться обеспечить совмесимость там,
&gt; &gt; &gt; где это можно сделать.
&gt; &gt; 
&gt; &gt; Ты шутишь?  Как будто мало нам нашего legacy, так ты предлагаешь еще и с
&gt; &gt; RedHat&apos;овским legacy совместимость обеспечивать?
&gt; 
&gt; Так мы и так это делаем, копируя у них systemd.

Я бы не стал утверждать, что systemd - это legacy.

&gt; Так давай заодно и обеспечим
&gt; совместимость хотя б с нашим legacy, благо инструмент простой и не требует
&gt; никаких серьёзных усилий.

С нашим legacy я предлагаю поступать так:
https://bugzilla.altlinux.org/show_bug.cgi?id=27568#c5

&gt; &gt; Я думаю, что было бы правильно отрепортить в RedHat, что для таких действий,
&gt; &gt; как audit rotate, нужен нормальный документированный интерфейс.
&gt; 
&gt; ещё в php. Да, и мало ли где это попадётся.

Согласен, надо репортить это обо всем, что попадется.
А если обучить service этому initscripts/legacy-actions, то никто не будет ничего репортить.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>146940</commentid>
    <comment_count>28</comment_count>
    <who name="Anton Farygin">rider</who>
    <bug_when>2014-07-01 09:41:51 +0400</bug_when>
    <thetext>Дима, скажи - зачем репортить, если оно будет работать без дополнительных телодвижений ?

Кстати, идея с initscripts actions ещё хороша тем, что мы явно выделим то, что не работает по дефолту в systemd. 
Иначе так и будет продолжаться - я, например, не планирую использовать systemd на серверных установках.

Сколько приложений не работает в Sisyphus с systemd или работают не так, как надо ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>146941</commentid>
    <comment_count>29</comment_count>
    <who name="Dmitry V. Levin">ldv</who>
    <bug_when>2014-07-01 10:39:17 +0400</bug_when>
    <thetext>(In reply to comment #28)
&gt; Дима, скажи - зачем репортить, если оно будет работать без дополнительных
&gt; телодвижений ?

Я понимаю, что заткнуть здесь и сейчас проще.
Но нам следует мыслить системно.

&gt; Кстати, идея с initscripts actions ещё хороша тем, что мы явно выделим то, что
&gt; не работает по дефолту в systemd.

systemd структурирует actions, и это хорошо: каждый action документирован, и ты примерно представляешь себе, чего от него ждать.

initscripts/legacy-actions - это именно то, как оно называется - раньше в initscripts пихали все подряд, и теперь, с переходом на структурированные initscripts actions, это все ранее напиханное приходится подпирать.

&gt; Иначе так и будет продолжаться - я, например, не планирую использовать systemd
&gt; на серверных установках.
&gt; 
&gt; Сколько приложений не работает в Sisyphus с systemd или работают не так, как
&gt; надо ?

Проблема не в systemd, она была всегда, просто благодаря systemd она проявилась.

Еще раз, вариант &quot;просто заткнуть, чтобы работало, как раньше&quot;, применительно к auditd, выглядит так:
- запаковать /usr/libexec/initscripts/legacy-actions/auditd/{resume,rotate};
- обучить /sbin/service отправлять все actions, которые не поддерживает systemctl, в /usr/libexec/initscripts/legacy-actions/$SERVICE/$ACTION;
- продолжать использовать &quot;service auditd {resume,rotate}&quot;, как будто ничего не случилось, нестандартные actions не документировать.

Вариант исправить системно:
- запаковать /usr/sbin/auditd-{resume,rotate} и документацию к ним;
- исправить пользователей &quot;service auditd {resume,rotate}&quot; на документированный интерфейс &quot;auditd-{resume,rotate}&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>146942</commentid>
    <comment_count>30</comment_count>
    <who name="Anton Farygin">rider</who>
    <bug_when>2014-07-01 10:47:53 +0400</bug_when>
    <thetext>Зачем городить дополнительные костыли в виде утилит - прослоек, если есть kill -SIGUSR1 или единая точка входа service ?

Это как раз внесистемный подход.

Ты же сам в https://bugzilla.altlinux.org/show_bug.cgi?id=27568#c5 
сделал костыль вместо утилиты clock-tzset - вызов /etc/init.d/clock tzset

А как быть пользователям, которые привыкли использовать service clock tzset/sync ?

Или скриптам, которые ожидают именно такое поведение от service clock ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>146943</commentid>
    <comment_count>31</comment_count>
    <who name="Dmitry V. Levin">ldv</who>
    <bug_when>2014-07-01 11:34:05 +0400</bug_when>
    <thetext>(In reply to comment #30)
&gt; Зачем городить дополнительные костыли в виде утилит - прослоек, если есть kill
&gt; -SIGUSR1 или единая точка входа service ?

Надо ведь еще аккуратно вычислить процесс, которому послать этот сигнал, иначе бы, я думаю, никто бы не запихивал rotate в /etc/init.d/auditd и не создавал бы костыли вида /usr/libexec/initscripts/legacy-actions/auditd/rotate.

&gt; Это как раз внесистемный подход.

service $NAME произвольнаяпоследовательностьбукв - это не единая точка входа, это бардак, который мы все развели, и который надо для начала признать.

А ведь есть уже давно на свете
systemctl kill --signal=SIGUSR1 --kill-who=main auditd.service

Ну а RedHat даже /usr/libexec/initscripts/legacy-actions/auditd/stop пакует!

&gt; Ты же сам в https://bugzilla.altlinux.org/show_bug.cgi?id=27568#c5 
&gt; сделал костыль вместо утилиты clock-tzset - вызов /etc/init.d/clock tzset

$ rpmquery --scripts tzdata
postinstall program: /usr/sbin/tzupdate

$ grep -FA1 &apos;tzset)&apos; /etc/init.d/clock
	tzset)
		action &apos;Setting timezone information&apos; &quot;$tzupdate&quot;

&gt; А как быть пользователям, которые привыкли использовать service clock
&gt; tzset/sync ?
&gt; 
&gt; Или скриптам, которые ожидают именно такое поведение от service clock ?

Исправляться.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>146944</commentid>
    <comment_count>32</comment_count>
    <who name="Anton Farygin">rider</who>
    <bug_when>2014-07-01 11:41:39 +0400</bug_when>
    <thetext>(In reply to comment #31)
&gt; (In reply to comment #30)
&gt; &gt; Зачем городить дополнительные костыли в виде утилит - прослоек, если есть kill
&gt; &gt; -SIGUSR1 или единая точка входа service ?
&gt; 
&gt; Надо ведь еще аккуратно вычислить процесс, которому послать этот сигнал, иначе
&gt; бы, я думаю, никто бы не запихивал rotate в /etc/init.d/auditd и не создавал бы
&gt; костыли вида /usr/libexec/initscripts/legacy-actions/auditd/rotate.

Верно. И как ты предлагаешь делать это в утилите ? Это же будет враппер, который в любом случае будет звать или systemctl или /etc/init.d/auditd.

Придётся для каждого случая копировать код, и я не понимаю почему ты не хочешь сделать это системно.

&gt; 
&gt; &gt; Это как раз внесистемный подход.
&gt; 
&gt; service $NAME произвольнаяпоследовательностьбукв - это не единая точка входа,
&gt; это бардак, который мы все развели, и который надо для начала признать.

Конечно бардак. Но прежде чем его исправлять - нужно выявить все места его проявления и систематизировать из. Может быть там только rotate и нужен ? Ну с некоторым количеством дополнений.

&gt; 
&gt; А ведь есть уже давно на свете
&gt; systemctl kill --signal=SIGUSR1 --kill-who=main auditd.service
&gt; 
&gt; Ну а RedHat даже /usr/libexec/initscripts/legacy-actions/auditd/stop пакует!

Да, я тоже удивился. Видимо всё не так просто в королевстве systemd, если они посылают TERM сигнал процессу другим механизмом.

Или это какие-то заделы на будущее - у них есть resume, с помощью которого можно заставить auditd продолжить писать логи после suspend&apos;а, но вот кода для suspend я не нашёл. 

В идеале auditd не должен никогда прекращать свою работу.

&gt; 
&gt; &gt; Ты же сам в https://bugzilla.altlinux.org/show_bug.cgi?id=27568#c5 
&gt; &gt; сделал костыль вместо утилиты clock-tzset - вызов /etc/init.d/clock tzset
&gt; 
&gt; $ rpmquery --scripts tzdata
&gt; postinstall program: /usr/sbin/tzupdate
&gt; 
&gt; $ grep -FA1 &apos;tzset)&apos; /etc/init.d/clock
&gt;     tzset)
&gt;         action &apos;Setting timezone information&apos; &quot;$tzupdate&quot;

Тогда зачем ты зовёшь initscript в исправлении этой баги ? ;)

&gt; 
&gt; &gt; А как быть пользователям, которые привыкли использовать service clock
&gt; &gt; tzset/sync ?
&gt; &gt; 
&gt; &gt; Или скриптам, которые ожидают именно такое поведение от service clock ?
&gt; 
&gt; Исправляться.

Они не будут исправляться, пока в RH/SuSE не поменяют поведение service.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>146946</commentid>
    <comment_count>33</comment_count>
    <who name="Anton Farygin">rider</who>
    <bug_when>2014-07-01 11:48:36 +0400</bug_when>
    <thetext>Уж коль всё сводится к правке service и всё обсуждение идёт вокруг этого - я переименую ошибку, дабы не терять истории.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>146948</commentid>
    <comment_count>34</comment_count>
    <who name="Dmitry V. Levin">ldv</who>
    <bug_when>2014-07-01 11:58:39 +0400</bug_when>
    <thetext>(In reply to comment #32)
&gt; (In reply to comment #31)
&gt; &gt; (In reply to comment #30)
&gt; &gt; &gt; Зачем городить дополнительные костыли в виде утилит - прослоек, если есть kill
&gt; &gt; &gt; -SIGUSR1 или единая точка входа service ?
&gt; &gt; 
&gt; &gt; Надо ведь еще аккуратно вычислить процесс, которому послать этот сигнал, иначе
&gt; &gt; бы, я думаю, никто бы не запихивал rotate в /etc/init.d/auditd и не создавал бы
&gt; &gt; костыли вида /usr/libexec/initscripts/legacy-actions/auditd/rotate.
&gt; 
&gt; Верно. И как ты предлагаешь делать это в утилите ? Это же будет враппер,
&gt; который в любом случае будет звать или systemctl или /etc/init.d/auditd.
&gt; 
&gt; Придётся для каждого случая копировать код, и я не понимаю почему ты не хочешь
&gt; сделать это системно.

Поскольку rotate - это нестандартное действие, то все равно будет враппер,
вопрос только в интерфейсе к нему.

&gt; &gt; А ведь есть уже давно на свете
&gt; &gt; systemctl kill --signal=SIGUSR1 --kill-who=main auditd.service
&gt; &gt; 
&gt; &gt; Ну а RedHat даже /usr/libexec/initscripts/legacy-actions/auditd/stop пакует!
&gt; 
&gt; Да, я тоже удивился. Видимо всё не так просто в королевстве systemd, если они
&gt; посылают TERM сигнал процессу другим механизмом.
&gt; 
&gt; Или это какие-то заделы на будущее - у них есть resume, с помощью которого
&gt; можно заставить auditd продолжить писать логи после suspend&apos;а, но вот кода для
&gt; suspend я не нашёл.

Нет, никакой legacy stop там не должен быть нужен, это просто RedHat тормозит.

&gt; В идеале auditd не должен никогда прекращать свою работу.

Тогда будут проблемы с выключением системы, он же держит какие-то ресурсы.

&gt; &gt; &gt; Ты же сам в https://bugzilla.altlinux.org/show_bug.cgi?id=27568#c5 
&gt; &gt; &gt; сделал костыль вместо утилиты clock-tzset - вызов /etc/init.d/clock tzset
&gt; &gt; 
&gt; &gt; $ rpmquery --scripts tzdata
&gt; &gt; postinstall program: /usr/sbin/tzupdate
&gt; &gt; 
&gt; &gt; $ grep -FA1 &apos;tzset)&apos; /etc/init.d/clock
&gt; &gt;     tzset)
&gt; &gt;         action &apos;Setting timezone information&apos; &quot;$tzupdate&quot;
&gt; 
&gt; Тогда зачем ты зовёшь initscript в исправлении этой баги ? ;)

Не должен бы.  Может, забыл где?

&gt; &gt; &gt; А как быть пользователям, которые привыкли использовать service clock
&gt; &gt; &gt; tzset/sync ?
&gt; &gt; &gt; 
&gt; &gt; &gt; Или скриптам, которые ожидают именно такое поведение от service clock ?
&gt; &gt; 
&gt; &gt; Исправляться.
&gt; 
&gt; Они не будут исправляться, пока в RH/SuSE не поменяют поведение service.

Вряд ли они там используют service clock.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>146949</commentid>
    <comment_count>35</comment_count>
    <who name="Anton Farygin">rider</who>
    <bug_when>2014-07-01 12:05:19 +0400</bug_when>
    <thetext>(In reply to comment #34)
&gt; (In reply to comment #32)
&gt; &gt; (In reply to comment #31)
&gt; &gt; &gt; (In reply to comment #30)
&gt; &gt; &gt; &gt; Зачем городить дополнительные костыли в виде утилит - прослоек, если есть kill
&gt; &gt; &gt; &gt; -SIGUSR1 или единая точка входа service ?
&gt; &gt; &gt; 
&gt; &gt; &gt; Надо ведь еще аккуратно вычислить процесс, которому послать этот сигнал, иначе
&gt; &gt; &gt; бы, я думаю, никто бы не запихивал rotate в /etc/init.d/auditd и не создавал бы
&gt; &gt; &gt; костыли вида /usr/libexec/initscripts/legacy-actions/auditd/rotate.
&gt; &gt; 
&gt; &gt; Верно. И как ты предлагаешь делать это в утилите ? Это же будет враппер,
&gt; &gt; который в любом случае будет звать или systemctl или /etc/init.d/auditd.
&gt; &gt; 
&gt; &gt; Придётся для каждого случая копировать код, и я не понимаю почему ты не хочешь
&gt; &gt; сделать это системно.
&gt; 
&gt; Поскольку rotate - это нестандартное действие, то все равно будет враппер,
&gt; вопрос только в интерфейсе к нему.
&gt; 
&gt; &gt; &gt; А ведь есть уже давно на свете
&gt; &gt; &gt; systemctl kill --signal=SIGUSR1 --kill-who=main auditd.service
&gt; &gt; &gt; 
&gt; &gt; &gt; Ну а RedHat даже /usr/libexec/initscripts/legacy-actions/auditd/stop пакует!
&gt; &gt; 
&gt; &gt; Да, я тоже удивился. Видимо всё не так просто в королевстве systemd, если они
&gt; &gt; посылают TERM сигнал процессу другим механизмом.
&gt; &gt; 
&gt; &gt; Или это какие-то заделы на будущее - у них есть resume, с помощью которого
&gt; &gt; можно заставить auditd продолжить писать логи после suspend&apos;а, но вот кода для
&gt; &gt; suspend я не нашёл.
&gt; 
&gt; Нет, никакой legacy stop там не должен быть нужен, это просто RedHat тормозит.

это сделано нарочно. Можешь поинтересоваться у автора, если интересно зачем.

commit e94faad18f13da6acc183e98d51d1a93cdc24c03
Author: sgrubb &lt;sgrubb@03a675c2-f56d-4096-908f-63dba836b7e4&gt;
Date:   Thu May 16 11:03:16 2013 +0000

    Don&apos;t use systemctl to stop the audit daemon


&gt; 
&gt; &gt; В идеале auditd не должен никогда прекращать свою работу.
&gt; 
&gt; Тогда будут проблемы с выключением системы, он же держит какие-то ресурсы.

Сложно сказать со 100% уверенностью, но я не думаю что systemd дожидается освобождения всех ресурсов для выключения.

&gt; 
&gt; &gt; &gt; &gt; Ты же сам в https://bugzilla.altlinux.org/show_bug.cgi?id=27568#c5 
&gt; &gt; &gt; &gt; сделал костыль вместо утилиты clock-tzset - вызов /etc/init.d/clock tzset
&gt; &gt; &gt; 
&gt; &gt; &gt; $ rpmquery --scripts tzdata
&gt; &gt; &gt; postinstall program: /usr/sbin/tzupdate
&gt; &gt; &gt; 
&gt; &gt; &gt; $ grep -FA1 &apos;tzset)&apos; /etc/init.d/clock
&gt; &gt; &gt;     tzset)
&gt; &gt; &gt;         action &apos;Setting timezone information&apos; &quot;$tzupdate&quot;
&gt; &gt; 
&gt; &gt; Тогда зачем ты зовёшь initscript в исправлении этой баги ? ;)
&gt; 
&gt; Не должен бы.  Может, забыл где?

Ты в ошибке как пример привёл /etc/init.d/clock tzupdate

&gt; 
&gt; &gt; &gt; &gt; А как быть пользователям, которые привыкли использовать service clock
&gt; &gt; &gt; &gt; tzset/sync ?
&gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; Или скриптам, которые ожидают именно такое поведение от service clock ?
&gt; &gt; &gt; 
&gt; &gt; &gt; Исправляться.
&gt; &gt; 
&gt; &gt; Они не будут исправляться, пока в RH/SuSE не поменяют поведение service.
&gt; 
&gt; Вряд ли они там используют service clock.

На service clock мир не заканчивается ;)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>146953</commentid>
    <comment_count>36</comment_count>
    <who name="Dmitry V. Levin">ldv</who>
    <bug_when>2014-07-01 12:11:39 +0400</bug_when>
    <thetext>(In reply to comment #35)
&gt; (In reply to comment #34)
&gt; &gt; (In reply to comment #32)
&gt; &gt; &gt; (In reply to comment #31)
&gt; &gt; &gt; &gt; (In reply to comment #30)
&gt; &gt; &gt; &gt; &gt; Зачем городить дополнительные костыли в виде утилит - прослоек, если есть kill
&gt; &gt; &gt; &gt; &gt; -SIGUSR1 или единая точка входа service ?
&gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; Надо ведь еще аккуратно вычислить процесс, которому послать этот сигнал, иначе
&gt; &gt; &gt; &gt; бы, я думаю, никто бы не запихивал rotate в /etc/init.d/auditd и не создавал бы
&gt; &gt; &gt; &gt; костыли вида /usr/libexec/initscripts/legacy-actions/auditd/rotate.
&gt; &gt; &gt; 
&gt; &gt; &gt; Верно. И как ты предлагаешь делать это в утилите ? Это же будет враппер,
&gt; &gt; &gt; который в любом случае будет звать или systemctl или /etc/init.d/auditd.
&gt; &gt; &gt; 
&gt; &gt; &gt; Придётся для каждого случая копировать код, и я не понимаю почему ты не хочешь
&gt; &gt; &gt; сделать это системно.
&gt; &gt; 
&gt; &gt; Поскольку rotate - это нестандартное действие, то все равно будет враппер,
&gt; &gt; вопрос только в интерфейсе к нему.
&gt; &gt; 
&gt; &gt; &gt; &gt; А ведь есть уже давно на свете
&gt; &gt; &gt; &gt; systemctl kill --signal=SIGUSR1 --kill-who=main auditd.service
&gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; Ну а RedHat даже /usr/libexec/initscripts/legacy-actions/auditd/stop пакует!
&gt; &gt; &gt; 
&gt; &gt; &gt; Да, я тоже удивился. Видимо всё не так просто в королевстве systemd, если они
&gt; &gt; &gt; посылают TERM сигнал процессу другим механизмом.
&gt; &gt; &gt; 
&gt; &gt; &gt; Или это какие-то заделы на будущее - у них есть resume, с помощью которого
&gt; &gt; &gt; можно заставить auditd продолжить писать логи после suspend&apos;а, но вот кода для
&gt; &gt; &gt; suspend я не нашёл.
&gt; &gt; 
&gt; &gt; Нет, никакой legacy stop там не должен быть нужен, это просто RedHat тормозит.
&gt; 
&gt; это сделано нарочно. Можешь поинтересоваться у автора, если интересно зачем.
&gt; 
&gt; commit e94faad18f13da6acc183e98d51d1a93cdc24c03
&gt; Author: sgrubb &lt;sgrubb@03a675c2-f56d-4096-908f-63dba836b7e4&gt;
&gt; Date:   Thu May 16 11:03:16 2013 +0000
&gt; 
&gt;     Don&apos;t use systemctl to stop the audit daemon

Либо автор не справился с systemd.kill(5), либо это зверский хак, чтобы обмануть систему зависимостей systemd.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>146955</commentid>
    <comment_count>37</comment_count>
    <who name="Anton Farygin">rider</who>
    <bug_when>2014-07-01 12:20:28 +0400</bug_when>
    <thetext>скорее всего вся проблема в зависимостях systemd. 

Как оно ведёт себя, если нужно погасить сервис, на который много чего завязано ? Выключается всё ?
Врятли сам systemd использует legacy actions при shutdown.


Я это всё веду к тому, что костыли будут нужны в любом случае и если мы их размажем по всей системе и каждый придумает свои - лучше от этого никому не будет. Так давай мы эти костыли соберём в одном место, дабы понимать как и что у нас ещё не работает (или работает).

Костыли, интегрированные в систему - становятся архитектурными достижениями ;)

Иначе мы так и будем топтаться на sysvinit вечно. 
Мне вот, например, даже тестировать исправления особо негде - везде sysvinit и всё отлично работает.
А прежде чем переходить, надо вытоптать правила игры.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>147221</commentid>
    <comment_count>38</comment_count>
    <who name="Denis Smirnov">mithraen</who>
    <bug_when>2014-07-28 04:42:51 +0400</bug_when>
    <thetext>Кроме применения для собственно legacy actions это решение позволяет сделать еще одну важнейшую вещь — реализовать единую точку управления сервисами.

У нас до внедрения systemd была уникальная фича: для любого сервиса, если надо было что-то с ним сделать, то часто это решалось с помощью service &lt;сервис&gt; &lt;команда&gt;

Реализация этого в виде единого init-скрипта была далеко не идеальным решением, а вынос этих дополнительных команд в отдельные скрипты — удобно и для мантейнера, и для администратора.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>147639</commentid>
    <comment_count>39</comment_count>
    <who name="Repository Robot">repository-robot</who>
    <bug_when>2014-09-10 02:34:51 +0400</bug_when>
    <thetext>service-0.5.26-alt1 -&gt; sisyphus:

* Tue Sep 09 2014 Dmitry V. Levin &lt;ldv@altlinux&gt; 0.5.26-alt1
- preun_service: added chkconfig call in systemd case (closes: #30165).
- service: added legacy-actions support (closes: #29925).
- sd_booted: synced systemd check with libsystemd.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>147653</commentid>
    <comment_count>40</comment_count>
    <who name="Evgenii Terechkov">evg</who>
    <bug_when>2014-09-10 19:07:36 +0400</bug_when>
    <thetext>Пожар начался с того, что логи ротатятся, но FPM об этом не узнаёт. В этом смысле ничего не изменилось.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>147735</commentid>
    <comment_count>41</comment_count>
    <who name="Repository Robot">repository-robot</who>
    <bug_when>2014-09-16 01:17:21 +0400</bug_when>
    <thetext>service-0.5.26-alt1 -&gt; t7:

* Tue Sep 09 2014 Dmitry V. Levin &lt;ldv@altlinux&gt; 0.5.26-alt1
- preun_service: added chkconfig call in systemd case (closes: #30165).
- service: added legacy-actions support (closes: #29925).
- sd_booted: synced systemd check with libsystemd.

* Mon May 12 2014 Dmitry V. Levin &lt;ldv@altlinux&gt; 0.5.25-alt1
- service: use is-active as a closer systemd equivalent of
  sysvinit status (closes: #30034).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>147736</commentid>
    <comment_count>42</comment_count>
    <who name="Dmitry V. Levin">ldv</who>
    <bug_when>2014-09-16 01:27:29 +0400</bug_when>
    <thetext>(In reply to comment #41)
&gt; service-0.5.26-alt1 -&gt; t7:

Repository Robot is too primitive.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>149831</commentid>
    <comment_count>43</comment_count>
    <who name="Anton Farygin">rider</who>
    <bug_when>2015-01-23 18:21:46 +0300</bug_when>
    <thetext>исправлено в php5-fpm-fcgi-5.5.21.20150121-alt1</thetext>
  </long_desc>
      
      

    </bug>

</bugzilla>