ALT Linux Team development discussions
 help / color / mirror / Atom feed
* [devel] обновления пакетов с поддержкой systemd
@ 2011-05-17  3:12 Alexey Shabalin
  2011-05-17  3:21 ` Dmitry V. Levin
  0 siblings, 1 reply; 13+ messages in thread
From: Alexey Shabalin @ 2011-05-17  3:12 UTC (permalink / raw)
  To: ALT Linux Team development discussions

Всем привет.
Возможно я кого-то ввел в заблужение (сам ошибался) по поводу
использования родных для systemd файлов.

Вопрос из FAQ:
Q: I have a native systemd service file and a SysV init script
installed which share the same basename, e.g.
/lib/systemd/system/foobar.service vs. /etc/init.d/foobar -- which one
wins?

A: If both files are available the native unit file always takes
precedence and the SysV init script is ignored, regardless whether
either is enabled or disabled. Note that a SysV service that is
enabled but overriden by a native service does not have the effect
that the native service would be enabled, too. Enabling of native and
SysV services is completely independent. Or in other words: you cannot
enable a native service by enabling a SysV service by the same name,
and if a SysV service is enabled but a the respective native service
is not, this will not have the effect that the SysV script is
executed.

То есть, если мы раньше имели включеный сервис /etc/init.d/foobar, а
теперь подложили в rpm-пакет  /lib/systemd/system/foobar.service, то
этот сервис будет выключен и после перезагрузки не стартует.
Надо запустить что-то типа
if chkconfig foobar ; then
  chkconfig foobar on
fi
(если сервис включен, включить его ещё раз - в этот раз уже с
перенаправлением на systemd)
Предполагается, что chkconfig из people/shaba/systemd -
модифицированный для перенаправления команд к systemd.

либо
if chkconfig --no-redirect foobar ; then  # не перенаправлять на systemd
  systemctl enable foobar.sevice         # можно использовать сразу
systemctl, без перенаправления из chkconfig
fi


В fedore во всех пакетах, где добавляют поддержку нативных сервисов
добавляют тригер типа:
%triggerun -- httpd < 0.47.11-1
if /sbin/chkconfig httpd ; then
        /bin/systemctl enable httpd.service >/dev/null 2>&1 || :
fi

или

%triggerun -- avahi < 0.6.28-1
 if /sbin/chkconfig --level 5 avahi-daemon ; then
          /bin/systemctl --no-reload enable avahi-daemon.service
>/dev/null 2>&1 || :
 fi

Как лучше сделать у нас?
Я пока придумал только модифицировать post_service:

--- post_service.def	2011-03-17 01:41:42.000000000 +0300
+++ post_service	2011-05-17 07:02:27.640147135 +0400
@@ -1,5 +1,21 @@
 #!/bin/sh -e

+SYSTEMCTL=/bin/systemctl
+SYSTEMD_SERVICE_DIR=/lib/systemd/system
+SYSTEMD_CGROUP_DIR=/sys/fs/cgroup/systemd
+
+systemd_status=
+systemd_is_active()
+{
+	if [ -z "$systemd_status" ]; then
+		[ -x "$SYSTEMCTL" -a \
+		  -d "$SYSTEMD_CGROUP_DIR" ] &&
+		mountpoint -q "$SYSTEMD_CGROUP_DIR"
+		systemd_status=$?
+	fi
+	return $systemd_status
+}
+
 if ! [ "$RPM_INSTALL_ARG1" -ge 1 ] 2>/dev/null; then
 	echo "post_service: invalid or undefined variable: RPM_INSTALL_ARG1" >&2
 	exit 1
@@ -14,5 +30,9 @@
 	/sbin/chkconfig --add "$1"
 else
 	/sbin/chkconfig "$1" resetpriorities ||:
+	[ -f "$SYSTEMD_SERVICE_DIR/$1.service" ] &&
+		systemd_is_active &&
+		/sbin/chkconfig --no-redirect "$1" &&
+		/sbin/chkconfig "$1" on
 	/sbin/service "$1" condrestart ||:
 fi

Или это можно в какой-нибудь filetrigger сделать?
Как лучше?

-- 
Alexey Shabalin

^ permalink raw reply	[flat|nested] 13+ messages in thread

end of thread, other threads:[~2012-01-24 21:19 UTC | newest]

Thread overview: 13+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2011-05-17  3:12 [devel] обновления пакетов с поддержкой systemd Alexey Shabalin
2011-05-17  3:21 ` Dmitry V. Levin
2011-05-17  3:42   ` Alexey Shabalin
2011-05-17 12:35     ` Alexey Shabalin
2011-05-17 13:59       ` Dmitry V. Levin
2011-05-21 12:42         ` Alexey Shabalin
2011-05-27 17:11           ` Dmitry V. Levin
2011-05-30 13:10             ` Alexey Shabalin
2011-05-30 14:22             ` Alexey Shabalin
2011-06-10 18:54               ` Alexey Shabalin
2011-06-10 18:49             ` Alexey Shabalin
2011-08-11 11:36               ` Alexey Shabalin
2012-01-24 21:19         ` Dmitry V. Levin

ALT Linux Team development discussions

This inbox may be cloned and mirrored by anyone:

	git clone --mirror http://lore.altlinux.org/devel/0 devel/git/0.git

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V2 devel devel/ http://lore.altlinux.org/devel \
		devel@altlinux.org devel@altlinux.ru devel@lists.altlinux.org devel@lists.altlinux.ru devel@linux.iplabs.ru mandrake-russian@linuxteam.iplabs.ru sisyphus@linuxteam.iplabs.ru
	public-inbox-index devel

Example config snippet for mirrors.
Newsgroup available over NNTP:
	nntp://lore.altlinux.org/org.altlinux.lists.devel


AGPL code for this site: git clone https://public-inbox.org/public-inbox.git