LINUX.ORG.RU
ФорумTalks

Об этом вашем прогрессивном systemd.

 ,


0

1

Ставь системд, говорили они. У него dependency based service management, говорили они. Это же новое слово в service management'е, и теперь никогда не будет так, что сетевые демоны фейлятся стартанув раньше сети. Ну круто же, правда?

Так-то оно так, но вот openvpn мне говорит: TCP/UDP: Socket bind failed on local address X.X.X.X:1194: Cannot assign requested address , и со старта не работает. Я-то залез в вики и поправил, написав соответствующие конфиги, но какого, спрашивается, лешего After=network.target не включено по дефолту? На кой ляд нужны все эти технические инновации, если люди их всё равно по-хорошему не используют?

★★★★★

А надо было к системд прикрутить статический анализатор бинарников, гипервизор и телепатию, чтобы сам угадывал когда пускать сервисы?

Ошибка в юните ничем не отличается от ошибки в любом другом конфиге/скрипте, в чём тут виноват системд?

PolarFox ★★★★★ ()

не оттестировано просто до конца и все

crypt ★★★★★ ()

Проблема не в инновациях. :3

/thread?

intelfx ★★★★★ ()

Ничего, скоро Леннарт прикрутит к systemd поддержку libastral. Вот тогда всем наступит счастье, и никто не уйдет обиженным.

kernelpanic ★★★★★ ()

Дык ясное дело, сырая поделка. Чего от неё ждать.

Hertz ★★★★★ ()
Ответ на: комментарий от kernelpanic

Каждый к ней прикоснётся - уже обиженный. Может собирать матрас под шконку.

Hertz ★★★★★ ()

Ты ссылку на твой баг-репорт забыл. И да, причём тут systemd?

unikum ★★★★★ ()

и теперь никогда не будет так, что сетевые демоны фейлятся стартанув раньше сети

А что, в каких-то системах такое было? В том Gentoo в openrc всё в порядке с весьма сложными зависимостями, и прямыми, и обратными. В Ubuntu не ковырялся, но, кажется, такой проблемы тоже не видел.

KRoN73 ★★★★★ ()

Да, я тоже заемучался баги в .service файлах выгребать. Особенно когда .service файл зависит например от отдельно смонтированного /var.

Не знаю правильно ли я сделал

# cat /etc/systemd/system/local-fs.target 
.include /usr/lib/systemd/system/local-fs.target

[Unit]
Requires=var.mount
After=var.mount

но вроде относительно глобально всё исправилось.

sergej ★★★★★ ()

В этом самая большая боль юнитов: они написаны для неких средних сценариев использования. Если у тебя что-то отличается то ты попал. В лучшем случае можно подправить юнит под свои нужды (это офицальная позиция разрабов systemd). В худшем я писал скрипты которые делали всё как надо.

true_admin ★★★★★ ()

какого, спрашивается, лешего After=network.target не включено по дефолту

Я не понял. Ты хочешь, чтобы это у всех юнитов было включено, даже если им сеть не нужна? Или твои претензии к автору конкретного юнита, который к systemd и инновациям никакого отношения не имеет?

vurdalak ★★★★★ ()

На кой ляд нужны все эти технические инновации, если люди их всё равно по-хорошему не используют?

Вы прослушали выступление операционистки бабы Гали на тему «карандаш и бумажка против этих ваших кантуперов».

thesis ★★★★★ ()

На кой ляд нужны все эти технические инновации, если люди их всё равно по-хорошему не используют?

Арчепроблемы. В нормальных дистрах все сделано как надо.

Siado ★★★★★ ()

но какого, спрашивается, лешего After=network.target не включено по дефолту?

Это надо спрашивать в багтрекере у того, кто писал дефолтные конфиги в твоем дистрибутиве. Я серьезно.

Deleted ()

https://bugs.archlinux.org/task/35089

кстати ты не думал, что network.target подразумевает уже запущенный openvpn, чтобы программы которые этот таргет хотят нормально работали через впн?)

sergej ★★★★★ ()
Ответ на: комментарий от Siado

Арчепроблемы. В нормальных дистрах все сделано как надо.

буду благодарен, если покажешь как это сделано в нормальном дистре

sergej ★★★★★ ()
Ответ на: комментарий от Alsvartr

Два чая этому господину.

ТС, сейчас многие пакеты мигрируют, работы у мейнтейнеров много. Глаз замылился, вот и пропустил нечаянно.

Adonai ★★★ ()
Ответ на: комментарий от PolarFox

Ошибка в юните ничем не отличается от ошибки в любом другом конфиге/скрипте, в чём тут виноват системд?

Топик-то именно о том, что system ни при чём. Не является инит узким местом в надёжности и удобстве работы системы, и не являлся до появления systemd.

Axon ★★★★★ ()
Ответ на: комментарий от true_admin

В худшем я писал скрипты

А вот до системдэ этот самый «худший случай» с необходимостью написания скриптов был _всегда_.

thesis ★★★★★ ()
Последнее исправление: thesis (всего исправлений: 1)
Ответ на: комментарий от crypt

не оттестировано просто до конца и все

При чём тут тестирование? Для того, чтобы понять, что этот демон не стартанёт без сети, его даже запускать не надо. Это не недотестированность, это безалаберность.

Axon ★★★★★ ()
Ответ на: комментарий от sergej

буду благодарен, если покажешь как это сделано в нормальном дистре

Например вот так, из коробки:

# cat /etc/systemd/system/multi-user.target.wants/openvpn@.service
[Unit]
Description=OpenVPN Robust And Highly Flexible Tunneling Application On %I
After=syslog.target network.target

[Service]
PrivateTmp=true
Type=forking
PIDFile=/var/run/openvpn/%i.pid
ExecStart=/usr/sbin/openvpn --daemon --writepid /var/run/openvpn/%i.pid --cd /etc/openvpn/ --config %i.conf

[Install]
WantedBy=multi-user.target

Siado ★★★★★ ()
Ответ на: комментарий от Alsvartr

Ну, допустим, да. Какое это имеет отношение к системе инициализации, имеющей дистронезависимые .service-файлы, поставляющиеся апстримом?

Axon ★★★★★ ()
Ответ на: комментарий от unikum

И да, причём тут systemd?

Ставим вопрос шире: при чём тут система инициализации?

Axon ★★★★★ ()

Ставь системд, говорили они.

И повелся на это?

swwwfactory ★★ ()
Ответ на: комментарий от KRoN73

А что, в каких-то системах такое было?

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

Axon ★★★★★ ()
Ответ на: комментарий от true_admin

В этом самая большая боль юнитов: они написаны для неких средних сценариев использования. Если у тебя что-то отличается то ты попал.

Какой средний вариант использования OpenVPN не предполагает наличия работающей сети?

В лучшем случае можно подправить юнит под свои нужды (это офицальная позиция разрабов systemd). В худшем я писал скрипты которые делали всё как надо.

На будущее.

Axon ★★★★★ ()
Ответ на: комментарий от vurdalak

Или твои претензии к автору конкретного юнита, который к systemd и инновациям никакого отношения не имеет?

This.

Axon ★★★★★ ()
Ответ на: комментарий от Siado

Арчепроблемы. В нормальных дистрах все сделано как надо.

Начнём с того, что .service файлы общие для всех дистров, и это было одним из основных доводов в пользу systemd для майнтейнеров. Ну и нехорошо выставлять себя пустозвоном, не приведя пример .service файла из «правильного» дистра в качестве пруфа.

Axon ★★★★★ ()
Ответ на: комментарий от Deleted

Это надо спрашивать в багтрекере у того, кто писал дефолтные конфиги в твоем дистрибутиве. Я серьезно.

Там столько еды не будет. :-)

Axon ★★★★★ ()
Ответ на: комментарий от Axon

И при чём тут прогрессивные технологии? Он мог и в баш-ините не прописать зависимость.

vurdalak ★★★★★ ()
Ответ на: комментарий от sergej

Неправильно. Так у тебя если вдруг /var сдохнет, система даже в emergency.target не загрузится (emergency.target -> sysinit.target -> local-fs.target -> сдохший var.mount).

Надо патчить конкретный сервис; в последних версиях systemd для этого есть drop-in куски юнитов (/etc/systemd/system/foo.service.d/bar.conf) и параметр RequiresMountsFor=<путь>.

intelfx ★★★★★ ()
Ответ на: комментарий от sergej

кстати ты не думал, что network.target подразумевает уже запущенный openvpn, чтобы программы которые этот таргет хотят нормально работали через впн?)

Кстати, нет. И как в systemd решать эту проблему в общем случае? Я заставил демон ждать старта конкретного профиля netcfg, но это не подходит для всех.

Axon ★★★★★ ()
Ответ на: комментарий от Siado

Да, но openvpn сам может являться частью network.target?

sergej ★★★★★ ()
Ответ на: комментарий от Siado

Тут уже написали, что в Арче After=network.target тоже включено, но это не помогает. Ещё варианты?

Axon ★★★★★ ()
Ответ на: комментарий от vurdalak

И при чём тут прогрессивные технологии? Он мог и в баш-ините не прописать зависимость.

Вы начинаете понимать.

Axon ★★★★★ ()
Ответ на: комментарий от Axon

Какой средний вариант использования OpenVPN не предполагает наличия работающей сети?

openvpn-клиенту она для старта не нужна. Как только сеть появится туннель сам поднимется. Серверу который слушает на 0.0.0.0 сеть тоже не нужна.

true_admin ★★★★★ ()
Ответ на: комментарий от Axon

Ну человеческий фактор не исключаем, ну. systemd даёт только слежение за состоянием и топологическую сортировку.

intelfx ★★★★★ ()
Ответ на: комментарий от nightingale

Мне рассказать в лицах что такое VPN и для чего он нужен?

Axon ★★★★★ ()
Ответ на: комментарий от thesis

А вот до системдэ этот самый «худший случай» с необходимостью написания скриптов был _всегда_.

Проблема в том что эти все юниты уж слишком замороченные. Они как бы не ЯП, поэтому логики туда особой не засунешь. С другой стороны, там есть 100500 разных директив. Вот ты помнишь хотя бы треть man systemd.service? Мне каждый раз чуть ли не заново его приходится перечитывать. И это только один мануал из 313.

Имхо, правка и отладка юнитов это большая боль.

true_admin ★★★★★ ()
Ответ на: комментарий от true_admin

Серверу который слушает на 0.0.0.0 сеть тоже не нужна.

Вот этого не знал.

Axon ★★★★★ ()
Ответ на: комментарий от Axon

Кстати, если openvpn завязан на сеть то при рестарте сети его тоже будет перезапускать, а такое поведение может быть нежелательным.

true_admin ★★★★★ ()
Ответ на: комментарий от true_admin

Вот ты помнишь хотя бы треть man systemd.service?

Неа)

thesis ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.