Bug 30508 - добавить unit-файлы для совместимости с systemd
Summary: добавить unit-файлы для совместимости с systemd
Status: CLOSED FIXED
Alias: None
Product: Sisyphus
Classification: Development
Component: rsync-server (show other bugs)
Version: unstable
Hardware: all Linux
: P3 normal
Assignee: placeholder@altlinux.org
QA Contact: qa-sisyphus
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2014-11-26 14:17 MSK by Alexei Takaseev
Modified: 2015-01-29 16:51 MSK (History)
7 users (show)

See Also:


Attachments
rsyncd.socket (161 bytes, text/plain)
2014-11-26 14:17 MSK, Alexei Takaseev
no flags Details
rsyncd@.service (196 bytes, application/octet-stream)
2014-11-26 14:18 MSK, Alexei Takaseev
no flags Details

Note You need to log in before you can comment on or make changes to this bug.
Description Alexei Takaseev 2014-11-26 14:17:00 MSK
Просьба добавить в пакет unit-файлы для нормальной работы с systemd. На данный момент сервер работает через xinetd, который по зависимостям запускает service network, что на системах, где сеть управляется через systemd-networkd, увеличивает время старта системы не менее чем на 30 секунд.
Comment 1 Alexei Takaseev 2014-11-26 14:17:58 MSK
Created attachment 6182 [details]
rsyncd.socket
Comment 2 Alexei Takaseev 2014-11-26 14:18:25 MSK
Created attachment 6183 [details]
rsyncd@.service
Comment 3 Dmitry V. Levin 2014-11-28 05:02:36 MSK
Надо, чтобы они не конфликтовали ни друг с другом, ни с xinetd, и чтобы по умолчанию установка пакета не преводила к влючению сервиса, принимающего соединения отовсюду на порту 873.

Между прочим, в федорном пакете эти файлы немного другие.
Comment 4 Repository Robot 2014-11-28 20:27:50 MSK
rsync-3.1.1-alt1 -> sisyphus:

* Fri Nov 28 2014 Dmitry V. Levin <ldv@altlinux> 3.1.1-alt1
- Updated to v3.1.1.
- server: packaged systemd unit files (closes: #30508).
Comment 5 Alexei Takaseev 2014-12-01 03:25:26 MSK
К сожалению, в сборке указан файл /etc/sysconfig/rsyncd с нулевой длинной. При установке пакета он в системе не создается. И даже если его создать вручную с нулевой длинной, то сервис все равно не запускается. Чтобы все поправить, достаточно в файл написать строку

OPTIONS=
Comment 6 Dmitry V. Levin 2014-12-01 03:36:39 MSK
(In reply to comment #5)
> К сожалению, в сборке указан файл /etc/sysconfig/rsyncd с нулевой длинной. При
> установке пакета он в системе не создается.

Это я сделал специально, чтобы по умолчанию оно не активировалось.
Альтернативой было бы не включать секцию Install.

Не факт, что выбранный мной способ лучше, но мне так показалось.
Вероятно, имеет смысл обсудить в devel@.

> И даже если его создать вручную с
> нулевой длинной, то сервис все равно не запускается. Чтобы все поправить,
> достаточно в файл написать строку
> 
> OPTIONS=

Достаточно сделать
echo >> /etc/sysconfig/rsyncd
Comment 7 Sergey V Turchin 2014-12-01 15:41:23 MSK
(В ответ на комментарий №0)
> xinetd, который по зависимостям запускает service network
Просьба не путать network.service и network.target .
Comment 8 Alexey Shabalin 2015-01-29 14:23:06 MSK
в текущем виде unit-файлы не рабочие

1) ConditionFileNotEmpty=/etc/sysconfig/rsyncd - нет такого файла в пакете и сервис никогда стартовать не будет. Просьба просто добавить файл в пакет с содержимым OPTIONS="" 

2) не надо использовать Environment=OPTIONS=, лучше использовать конструкцию типа EnvironmentFile=-/etc/sysconfig/rsyncd  ("-" в начале означает что этого файла может не быть). А если в пакете будет /etc/sysconfig/rsyncd, то тогда можно без минуса.

Предлагаю привести к такому виду:

/etc/sysconfig/rsyncd:
OPTIONS="" 

rsyncd@.service:
[Unit]
Description=Rsync Server
ConditionFileNotEmpty=/etc/rsyncd.conf

[Service]
EnvironmentFile=/etc/sysconfig/rsyncd
ExecStart=/usr/bin/rsync --daemon --no-detach $OPTIONS

rsyncd.socket:
[Unit]
Description=Rsync Server Activation Socket
ConditionFileNotEmpty=/etc/rsyncd.conf
Comment 9 Dmitry V. Levin 2015-01-29 15:38:50 MSK
(In reply to comment #8)
> в текущем виде unit-файлы не рабочие
> 
> 1) ConditionFileNotEmpty=/etc/sysconfig/rsyncd - нет такого файла в пакете и
> сервис никогда стартовать не будет.

Так и было задумано.

> Просьба просто добавить файл в пакет с содержимым OPTIONS="" 

Тогда сервис будет стартовать по умолчанию, а это неправильно.

Постановка задачи следующая:
- для того, чтобы имело смысл активировать rsync server, необходимо настроить /etc/rsyncd.conf;
- /etc/rsyncd.conf в пакете традиционно содержит комментарии, поэтому он всегда непуст;
- в идеале надо проверять, настроен ли rsync server через /etc/rsyncd.conf, в качестве условия активации юнита.
Comment 10 Alexey Shabalin 2015-01-29 16:18:59 MSK
хорошо. 
- но все равно не понятно зачем используется "Environment=OPTIONS="
- ConditionFileNotEmpty=/etc/rsyncd.conf можно убрать, раз он всегда не пустой.
Comment 11 Dmitry V. Levin 2015-01-29 16:37:12 MSK
(In reply to comment #10)
> хорошо. 

Не очень хорошо.  Хорошо было бы, если бы можно было проверить rsyncd.conf

> - но все равно не понятно зачем используется "Environment=OPTIONS="

Это no-op.

> - ConditionFileNotEmpty=/etc/rsyncd.conf можно убрать, раз он всегда не пустой.

Это перестраховка.
Comment 12 Alexey Shabalin 2015-01-29 16:51:27 MSK
закрываю.