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

★★★★★

Последнее исправление: Axon (всего исправлений: 2)

Так хорошо поругал systemd, что даже похвалил.

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

sergej

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

Axon

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

Я хз что там у вас не работает, но с этим дефолтным конфигом у меня прекрасно запускается опенвпн после старта системы.

Версия системд такая:

# systemctl --version
systemd 204
+PAM +LIBWRAP +AUDIT +SELINUX +IMA +SYSVINIT +LIBCRYPTSETUP +GCRYPT +ACL +XZ

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

Я хз что там у вас не работает, но с этим дефолтным конфигом у меня прекрасно запускается опенвпн после старта системы.

То есть, асинхронный старт юнитов не наводит вас на мысли причине разного поведения?

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

Кривой юнит :-)

В fedora всё нормально:

[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

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

Это мейнтейнера пакета с openvpn нужно бить по лицу

Да мы тут как-то уже не уверены, что так уж нужно. Каково ваше мнение по вопросу?

Axon ★★★★★
() автор топика
Ответ на: Кривой юнит :-) от BeerSeller

Кривой юнит :-)

В fedora всё нормально:

Дочитайте тред. :-)

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

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

А вообще хорошая заметка. Действительно могут быть сервисы, которые должны работать с сетью через VPN, а следовательно должны дождаться его запуска.

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

Как пример: У нас есть:

  • Сервис с именем myservice.service
  • OpenVpn с именем myopenvpn

Нужно пускать этот сервис после этого vpn.

Создаём «потомка» сервиса вот с таким содержанием:

#Подключаем "предка"
.include /usr/lib/systemd/system/myservice.service 
[Unit]
After=openvpn@myopenvpn.service
Имя файла: /etc/systemd/system/myservice.service
После этого «передёрнуть» сервис:
 systemctl disable myservice && systemctl enable myservice

Должно сработать.

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

что network.target подразумевает уже запущенный openvpn

Уже запущенный через астрал openvpn ? :-)

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

офигеть.. как люди с этим живут?

а ещё оно (systemd) не умеет понимать, что оно запущено в контейнере и обходиться без загрузки модулей ядра, необходимости /sys и прочего. Приходится руками отключать..

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

systemd делался для того, чтобы сервисы подходили ко всем дистрам. И мне systemd фанбои говорили, что такой проблемы не может быть никогда..

P.S. похоже я с прогнозом где-то на полгода-год ошибся, я думал, что позже такая хрень начнется.

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

systemd делался для того, чтобы сервисы подходили ко всем дистрам. И мне systemd фанбои говорили,

И чем unit федоры не подходит арчу? Или просто пукнуть зашёл?

P.S.: По хорошему openvpn не должен входить в network.target, если общий доступ к сети осуществляется не через него.

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

И чем unit федоры не подходит арчу?

этот вопрос ты должен задавать не мне, а мейнтенеру арча. Более того, ответ на него совершенно не важен, т.к. в данном случае важен только факт того, что в арче не использовали unit от федоры. Т.е., что тот _якобы_ бонус, который дает systemd не используется.

P.S. Если ты хочешь вести нормальный диалог, забудь про выражения типа «пункуть решил и т.п.».

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

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

Еще больше в копилку ненависти.

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

этот вопрос ты должен задавать не мне, а мейнтенеру арча.

Юнит совместим. А то, что майнтенеру арча всё нравится делать самому, это арче-проблемы.

P.S.: Я с удовольствием не буду использовать такие выражения, но тогда, пожалуйста, не подменяй понятия не подходит (в ключе не совместим) и не используется. Здесь нет ни намёка на несовместимость.

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

я вот удивляюсь вам, люди. вот возьмете вы какое-нибудь gento, скрипты писал очередной студент, недосмотрел, оно глюкануло и линукс теперь виноват. или systemd. или...

возьмите EL, там systemd еще нет пока и все работает. Есть линукс для энтерпрайза, есть для энтузиастов.

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

Вы не уловили месседж.

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

Почему? оно отлично описывает подкласс пользователей системд. Я же не говорю про толковых и разбирающихся пользователей, к ним претензий нет.

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

Цель системд - общие юниты на всех, эта цель не выполнена, даже в дистре прямом последователе Федоры. Это факт. И постепенно ситуация будет ухудшаться (скорее всего). Почему это уже отдельный вопрос.

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

данное утверждение, не логично, такой вывод нельзя сделать нельзя.

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

qnikst ★★★★★
()

юзеры системде начинают подозревать что их обманули

вот так сюрприз

rogerw
()

Арчепроблемы.

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

Цель системд - общие юниты на всех, эта цель не выполнена

Да. И она никогда не будет выполнена, т.к. всегда найдётся кто-то, кто захочет что-то сделать по своему. Майтенеры не исключение.

Но то, что можно взять юнит из апстрима/другого дистра, и либо вообще без изменений, либо с минимальными дистроспецифичными правками его использовать в другом дистрибутиве - факт. С другими инитами так делать сложнее.

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

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

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

Ну как сказать.. иниты с LSB header обладают тем же свойством + могут запускаться в. bsd-rc, sysv-rc, openrc (с 0.12). У них правда есть куча других проблеи таких как многословность и большие возможности (как следствие больше способов сделать одно и тоже).

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

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

В том, что его адепты всё вещают про «само будет работать как надо»

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

иниты с LSB header обладают тем же свойством + могут запускаться в. bsd-rc, sysv-rc, openrc (с 0.12).

Я думаю, что переносимость других инитов тема для отдельного разговора. Насколько я понял, мы выяснили, что у systemd нет проблем с переносимостью unit'ов между дистрами?

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

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

Пффф... Во-первых, я никого конкретно не обвиняю, а констатирую проблему. Во-вторых, увижу, что кто-то делает херню, так и буду говорить. Сюсюканье и лицемерие тоже комьюнити ни фига не укрепляет.

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

Примерно настолько же насколько она есть у инитов. Т.е. есть в подмножестве, но не факт что этой переносимостью пользуются.

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

systemd не умеет в телепатию, и автоматически создавать зависимости между сетевыми интерфейсами не то чтобы вообще возможно. Если демоны не умеют адекватно реагировать на динамически меняющуюся «картину сети», как dnsmasq — то задача расстановки зависимостей ложится на плечи админа, и это нормально.

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

Юниты (если не имеют багов) по умолчанию подходят ко всем дистрам, соответствующим неким стандартам (на семантику .target-юнитов, на иерархию ФС, и т. д.). Если какой-то дистрибутив патчит программу, чтобы она работала в нестандартном для неё окружении — то пусть патчит и юнит. Разве это не логично?

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

А вообще хорошая заметка. Действительно могут быть сервисы, которые должны работать с сетью через VPN, а следовательно должны дождаться его запуска.

Это какие-то неправильные сервисы. Даже RIP/BGP демоны так работать не должны.

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

Слова «фанбои» в «нормальном диалоге» тоже быть не должно, если что.

LOR wat r u doing? LOR stahp!

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

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

Разумеется. Вот в том же Debian вместо systemd стоит sysvrc.

Quasar ★★★★★
()

А я смог в systemd. Против апстрима переть намного накладнее, чем читнуть слегка манцов. Правда от этого он нужнее не стал, да.

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

systemd-nspawn запускает контейнер из хост ос. Задача запустить ось с systemd в lxc контейнере в системе, где нет systemd.

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

LSB-инит скрипт (если не имеет багов) по умолчанию подходят ко всем дистрами и разным системам управления сервисами, соотвествующими неким (LSB) стандартам. Разве не логично? При всем моём неуважении к LSB и инитскриптам с LSB заголовком, данную задачу они решали лучше.

Где, кстати можно почитать _стандарт_ «unit совместимую» на систему?

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

Логично. И в чём проблема? Есть $network в LSB-заголовках скриптов, и есть network.target в systemd. Разницы никакой, только в одном случае топологическую сортировку делает хз кто в статике, а во втором systemd в рантайме. В чём LSB лучше?

// man bootup и доки на fd.o

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

LSB - лучше тем, что оно поддерживается разными системами управления сервисами, а systemd - только systemd. Но я бы не считал это веским аргументом, вне контекста переносимости.

Просто я хотел сказать про то, что унифицированность unit не то, чтобы огромный прогресс, и (имхо) получается большей частью за счет наличия основного контрибьютора (fedora project) и «урезанности» [1] возможностей. При этом со временем вес основного контрибьютора может падать, а «урезанность» возможностей приводит к тому, что иногда людям приходится пилить свои скрипты.

[1] говорить «урезанность» не коррентно, т.к. у systemd функциональность шире, под урезанностью я имею ввиду, что юниты это декларативный и не сильно выразительный DSL.

qnikst ★★★★★
()

Первый вопрос: зачем тебе arch?
Второй вопрос - зачем systemd используют там, где он не нужен?

IMHO пока армия юзеров Ubuntu не отбагрепортит systemd, всё так и будет.

Есть же debian в установке с sysV, есть gentoo, calc и слака... Там нет секса, если ты не любишь извращения.

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

У меня такое было с autotunnel. В юните тоже написано

After=network.target
но это вовсе не гарантирует что сразу после network.target сеть _реально_ будет работать. У меня машина получает адрес по dhcp, так что мне помогло
After=dhcpcd.service
Смысл такой, network.target запускает dhcpcd, тот рапортует что всё ок, network.target считается запушеным, но dhcpcd _еще не получил адрес_ а всего-лишь запустился, и сеть не поднял.

UPD: наврал. Т.к. у меня сервис фейлился из-за отсутсвия сети, я там просто прописал:

Restart=always
RestartSec=30sec

FFSinit ★★
()
Последнее исправление: FFSinit (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.