УкраїнськаEnglishmRussian
Вхід/Новий
У темі немає нових постів

[BugWrong] Исправление init-script для Gentoo


Автор Повідомлення
Повідомлення створено: 18. 05. 2014 [18:09]
andreil
Андрей Леончиков
Автор теми
Зареєстрован(а) с: 18.05.2014
Повідомлення: 3
Установил программу на свежую Gentoo и столкнулся с косяком - нету в системе файла /etc/init.d/functions. Имеется /etc/init.d/functions.sh, но в нём нет функций start_daemon и stop_daemon. Посмотрев на соседние инит-скрипты, передал и имеющийся. Теперь запуск осуществляется штатными средствами, без костыля в виде того скрипта:
#!/bin/sh
#
# Init file for OpenSCADA system demon.
#
# chkconfig: - 99 05
# description: Open SCADA System server daemon
#
# processname: openscada
# config: /etc/oscada.xml

WITHOUT_RC_COMPAT=1

PIDFILE=/var/run/openscada.pid
OPENSCADA=/usr/bin/openscada
LOCALE="en_US.UTF-8"
RETVAL=0

start()
{
ebegin "Starting OpenSCADA"
start-stop-daemon --start --quiet \
--pidfile ${PIDFILE} --make-pidfile \
--exec ${OPENSCADA} --background
eend $? "Failed to start OpenSCADA"
}

stop()
{
ebegin "Stoping OpenSCADA"
start-stop-daemon --stop --exec $OPENSCADA --pidfile ${PIDFILE}
eend $?
}

restart()
{
stop
start
}


[Повідомлення редагувалось 2 раз(ів), останній раз 18.05.2014 в 18:54.]
Повідомлення створено: 18. 05. 2014 [18:55]
andreil
Андрей Леончиков
Автор теми
Зареєстрован(а) с: 18.05.2014
Повідомлення: 3
Извиняюсь за правки - поторопился с выкладыванием:lol:
Исправил невозможность остановки сервиса. Теперь он нормально стартует в фоновом режиме.
Повідомлення створено: 19. 05. 2014 [11:02]
roman
Roman Savochenko
Moderator
Contributor
Developer
Зареєстрован(а) с: 12.12.2007
Повідомлення: 3750
"andreil" wrote:

Установил программу на свежую Gentoo и столкнулся с косяком - нету в системе файла /etc/init.d/functions. Имеется /etc/init.d/functions.sh, но в нём нет функций start_daemon и stop_daemon. Посмотрев на соседние инит-скрипты, передал и имеющийся. Теперь запуск осуществляется штатными средствами, без костыля в виде того скрипта:

Тот скрипт во первых не костыль, а рабочий инструмент для ALTLinux (oscada_ALT.init), RedHat (oscada_RH.init) и Debian(debian/openscada.init).
Во вторых для специфики Gentoo никто пускающих скриптов и не предоставлял, поэтому это не ошибка.
И в третьих такие скрипты это вопрос дополнительной поставки из под пакета соответствующего дистрибутива Linux. Т.е. вопрос к Константину (IrmIngeneer) если он захочет его туда включить или как минимум подтвердит его работоспособность и я включу его в дерево проекта, хотя у меня уже возникли сомнения в его корректности.

Learn, learn and learn better than work, work and work.
Повідомлення створено: 19. 05. 2014 [21:48]
IrmIngeneer
Константин \m/
Contributor
Sponsor
Зареєстрован(а) с: 16.09.2010
Повідомлення: 185
Очень хорошо, что на этот скрипт обратили внимание. Мни никогда не приходило в голову таким образом OpenSCADA стартовать, поэтому и никак не добирался до него.
Пожалуйста, опишите ситуацию, когда это бывает нужно.
Повідомлення створено: 20. 05. 2014 [08:22]
andreil
Андрей Леончиков
Автор теми
Зареєстрован(а) с: 18.05.2014
Повідомлення: 3
"IrmIngeneer" wrote:

Очень хорошо, что на этот скрипт обратили внимание. Мни никогда не приходило в голову таким образом OpenSCADA стартовать, поэтому и никак не добирался до него.
Пожалуйста, опишите ситуацию, когда это бывает нужно.

Тот скрипт, который ставится в Gentoo сейчас, не рабочий вовсе - это я писал сразу. Неработоспособность заключается в отсутствии файла /etc/init.d/functions. Имеется файл /etc/init.d/functions.sh, но даже в нём нет методов start_daemon и stop_daemon - даже поиск по содержимому не нашёл таких файлов в системе. Так что я только лишь переписал скрипт под текущую систему инициализации - подсматривал образцы в соседних скриптах.

А по поводу костыль/не костыль - раз есть EBUILD для пакета (официальный), то должен был быть и нормальный скрипт запуска :) (ИМХО).

[Повідомлення редагувалось 1 раз(ів), останній раз 20.05.2014 в 08:24.]
Повідомлення створено: 20. 05. 2014 [09:06]
IrmIngeneer
Константин \m/
Contributor
Sponsor
Зареєстрован(а) с: 16.09.2010
Повідомлення: 185
"andreil" wrote:

А по поводу костыль/не костыль - раз есть EBUILD для пакета (официальный), то должен был быть и нормальный скрипт запуска :) (ИМХО).


Ваше имхо, с моей точки зрения, верно. Существуют недоработки ebuild-а, но пока они никому не мешали, - потому и хорошо, что Вы обратили на это внимание. :)
В настоящий момент нет возможности вплотную заняться, через недельку-две только.
Все же опишите ситуации, когда этот скрипт будет использоваться.

Кстати, можно было бы заявиться (после обсуждения и доработок) на включение OpenSCADA в дерево портов Gentoo. Как Вы смотрите на такую идею?

[Повідомлення редагувалось 1 раз(ів), останній раз 20.05.2014 в 09:23.]
Повідомлення створено: 20. 05. 2014 [10:33]
roman
Roman Savochenko
Moderator
Contributor
Developer
Зареєстрован(а) с: 12.12.2007
Повідомлення: 3750
"IrmIngeneer" wrote:

Все же опишите ситуации, когда этот скрипт будет использоваться.

Собственно одна из основных функций-ролей OpenSCADA это "Сервер SCADA", который предусматривает запуск в фоновом режиме (режим демона) без локального GUI. При этом клиентские запуски подключаются к этому серверу и просто отображают интерфейс, как например Web-интерфейс, а также смешанные режимы, когда сервер выполняет только сбор и обработку данных — роль ПЛК. Всё это описано в документации: http://wiki.oscada.org/Doc/OpisanieProgrammy#h826-1

Вот именно для этого и нужен пускающий init скрипт режима демона, который обычно создаётся для классического sysvinit (Unix Init). С чем, во первых, проблема отсутствие унификации и эти скрипты различны для разных дистрибутивов Linux, а во вторых наблюдается рост альтернативных систем первичной инициализации. Почему эти скрипты обычно и не включаются в дерево исходников проекта, а пишутся отдельно мантейнером пакета в конкретном дистрибутиве Linux. Init-скрипты для ряда-же дистрибутивов Linux я включил в дерево проекта только по причине их частого использования, да и фактического выполнения роли мантейнера, для ALTLinux и RH-based.

Learn, learn and learn better than work, work and work.



14199