[krb5] convert to systemd
Tom Callaway
spot at fedoraproject.org
Mon Sep 19 18:46:11 UTC 2011
commit 82129e3a0d3fa6d48d5f00bc31bf952ee34f0e29
Author: Tom "spot" Callaway <tcallawa at redhat.com>
Date: Mon Sep 19 14:45:57 2011 -0400
convert to systemd
kadmin.service | 15 ++++++++++
kprop.service | 11 +++++++
krb5.spec | 82 +++++++++++++++++++++++++++++++++++-------------------
krb5kdc.service | 14 +++++++++
4 files changed, 93 insertions(+), 29 deletions(-)
---
diff --git a/kadmin.service b/kadmin.service
new file mode 100644
index 0000000..516c92a
--- /dev/null
+++ b/kadmin.service
@@ -0,0 +1,15 @@
+[Unit]
+Description=Kerberos 5 Administrative Server
+After=syslog.target network.target
+ConditionPathExists=/var/kerberos/krb5kdc/principal
+ConditionPathExists=!/var/kerberos/krb5kdc/kpropd.acl
+
+[Service]
+Type=forking
+PIDFile=/var/run/kadmind.pid
+EnvironmentFile=-/etc/sysconfig/kadmin
+ExecStart=/usr/sbin/kadmind -r $KRB5REALM -P /var/run/kadmind.pid $KADMIND_ARGS
+ExecReload=/bin/kill -HUP $MAINPID
+
+[Install]
+WantedBy=multi-user.target
diff --git a/kprop.service b/kprop.service
new file mode 100644
index 0000000..532a8ea
--- /dev/null
+++ b/kprop.service
@@ -0,0 +1,11 @@
+[Unit]
+Description=Kerberos 5 Propagation Client
+After=syslog.target network.target
+ConditionPathExists=!/var/kerberos/krb5kdc/kpropd.acl
+
+[Service]
+ExecStart=/usr/sbin/kpropd -S
+
+[Install]
+WantedBy=multi-user.target
+
diff --git a/krb5.spec b/krb5.spec
index ffdda75..840b9b4 100644
--- a/krb5.spec
+++ b/krb5.spec
@@ -6,14 +6,14 @@
Summary: The Kerberos network authentication system
Name: krb5
Version: 1.9.1
-Release: 12%{?dist}
+Release: 13%{?dist}
# Maybe we should explode from the now-available-to-everybody tarball instead?
# http://web.mit.edu/kerberos/dist/krb5/1.9/krb5-1.9.1-signed.tar
Source0: krb5-%{version}.tar.gz
Source1: krb5-%{version}.tar.gz.asc
-Source2: kpropd.init
-Source4: kadmind.init
-Source5: krb5kdc.init
+Source2: kprop.service
+Source4: kadmin.service
+Source5: krb5kdc.service
Source6: krb5.conf
Source10: kdc.conf
Source11: kadm5.acl
@@ -76,6 +76,7 @@ BuildRequires: texlive-latex
BuildRequires: keyutils-libs-devel
BuildRequires: libselinux-devel
BuildRequires: pam-devel
+BuildRequires: systemd-units
# For the test framework.
BuildRequires: perl, dejagnu, tcl-devel
@@ -122,13 +123,16 @@ Kerberos, you need to install this package.
Group: System Environment/Daemons
Summary: The KDC and related programs for Kerberos 5
Requires: %{name}-libs = %{version}-%{release}
-Requires(post): /sbin/install-info, chkconfig
+Requires(post): /sbin/install-info
+Requires(post): systemd-sysv
+Requires(post): systemd-units
+Requires(preun): systemd-units
+Requires(postun): systemd-units
# we need 'status -l' to work, and that option was added in 8.99
Requires: initscripts >= 8.99-1
# we drop files in its directory, but we don't want to own that directory
Requires: logrotate
-Requires(preun): /sbin/install-info, chkconfig, initscripts
-Requires(postun): initscripts
+Requires(preun): /sbin/install-info
# mktemp is used by krb5-send-pr
Requires: mktemp
# portreserve is used by init scripts for kadmind, kpropd, and krb5kdc
@@ -343,7 +347,7 @@ mkdir -p $RPM_BUILD_ROOT/etc
install -pm 644 %{SOURCE6} $RPM_BUILD_ROOT/etc/krb5.conf
# Server init scripts (krb5kdc,kadmind,kpropd) and their sysconfig files.
-mkdir -p $RPM_BUILD_ROOT/etc/rc.d/init.d
+mkdir -p $RPM_BUILD_ROOT%{_unitdir}
for init in \
%{SOURCE5}\
%{SOURCE4} \
@@ -351,9 +355,7 @@ for init in \
# In the past, the init script was supposed to be named after the
# service that the started daemon provided. Changing their names
# is an upgrade-time problem I'm in no hurry to deal with.
- service=`basename ${init} .init`
- install -pm 755 ${init} \
- $RPM_BUILD_ROOT/etc/rc.d/init.d/${service%d}
+ install -pm 644 ${init} $RPM_BUILD_ROOT%{_unitdir}
done
mkdir -p $RPM_BUILD_ROOT/etc/sysconfig
for sysconfig in \
@@ -433,12 +435,12 @@ install -m 755 kdb_check_weak $RPM_BUILD_ROOT/%{_libdir}/krb5/
%postun server-ldap -p /sbin/ldconfig
%post server
+if [ $1 -eq 1 ] ; then
+ # Initial installation
+ /bin/systemctl daemon-reload >/dev/null 2>&1 || :
+fi
# Remove the init script for older servers.
[ -x /etc/rc.d/init.d/krb5server ] && /sbin/chkconfig --del krb5server
-# Install the new ones.
-/sbin/chkconfig --add krb5kdc
-/sbin/chkconfig --add kadmin
-/sbin/chkconfig --add kprop
# Install info pages.
/sbin/install-info %{_infodir}/krb5-admin.info.gz %{_infodir}/dir
/sbin/install-info %{_infodir}/krb5-install.info.gz %{_infodir}/dir
@@ -446,24 +448,43 @@ exit 0
%preun server
if [ "$1" -eq "0" ] ; then
- /sbin/chkconfig --del krb5kdc
- /sbin/chkconfig --del kadmin
- /sbin/chkconfig --del kprop
- /sbin/service krb5kdc stop > /dev/null 2>&1 || :
- /sbin/service kadmin stop > /dev/null 2>&1 || :
- /sbin/service kprop stop > /dev/null 2>&1 || :
+ /bin/systemctl --no-reload disable krb5kdc.service > /dev/null 2>&1 || :
+ /bin/systemctl --no-reload disable kadmin.service > /dev/null 2>&1 || :
+ /bin/systemctl --no-reload disable kprop.service > /dev/null 2>&1 || :
+ /bin/systemctl stop krb5kdc.service > /dev/null 2>&1 || :
+ /bin/systemctl stop kadmin.service > /dev/null 2>&1 || :
+ /bin/systemctl stop kprop.service > /dev/null 2>&1 || :
/sbin/install-info --delete %{_infodir}/krb5-admin.info.gz %{_infodir}/dir
/sbin/install-info --delete %{_infodir}/krb5-install.info.gz %{_infodir}/dir
fi
exit 0
%postun server
-if [ "$1" -ge 1 ] ; then
- /sbin/service krb5kdc condrestart > /dev/null 2>&1 || :
- /sbin/service kadmin condrestart > /dev/null 2>&1 || :
- /sbin/service kprop condrestart > /dev/null 2>&1 || :
+/bin/systemctl daemon-reload >/dev/null 2>&1 || :
+if [ $1 -ge 1 ] ; then
+ /bin/systemctl try-restart krb5kdc.service >/dev/null 2>&1 || :
+ /bin/systemctl try-restart kadmin.service >/dev/null 2>&1 || :
+ /bin/systemctl try-restart kprop.service >/dev/null 2>&1 || :
fi
-exit 0
+
+%triggerun server -- krb5-server < 1.9.1-13
+# Save the current service runlevel info
+# User must manually run
+# systemd-sysv-convert --apply krb5kdc
+# systemd-sysv-convert --apply kadmin
+# systemd-sysv-convert --apply kprop
+# to migrate them to systemd targets
+/usr/bin/systemd-sysv-convert --save krb5kdc >/dev/null 2>&1 ||:
+/usr/bin/systemd-sysv-convert --save kadmin >/dev/null 2>&1 ||:
+/usr/bin/systemd-sysv-convert --save kprop >/dev/null 2>&1 ||:
+
+# Run these because the SysV package being removed won't do them
+/sbin/chkconfig --del krb5kdc >/dev/null 2>&1 || :
+/sbin/chkconfig --del kadmin >/dev/null 2>&1 || :
+/sbin/chkconfig --del kprop >/dev/null 2>&1 || :
+/bin/systemctl try-restart krb5kdc.service >/dev/null 2>&1 || :
+/bin/systemctl try-restart kadmin.service >/dev/null 2>&1 || :
+/bin/systemctl try-restart kprop.service >/dev/null 2>&1 || :
%triggerun server -- krb5-server < 1.6.3-100
if [ "$2" -eq "0" ] ; then
@@ -526,9 +547,9 @@ exit 0
%defattr(-,root,root,-)
%docdir %{_mandir}
-/etc/rc.d/init.d/krb5kdc
-/etc/rc.d/init.d/kadmin
-/etc/rc.d/init.d/kprop
+%{_unitdir}/krb5kdc.service
+%{_unitdir}/kadmin.service
+%{_unitdir}/kprop.service
%config(noreplace) /etc/sysconfig/krb5kdc
%config(noreplace) /etc/sysconfig/kadmin
%config(noreplace) /etc/portreserve/kerberos-iv
@@ -678,6 +699,9 @@ exit 0
%{_sbindir}/uuserver
%changelog
+* Mon Sep 19 2011 Tom Callaway <spot at fedoraproject.org> 1.9.1-13
+- convert to systemd
+
* Tue Sep 6 2011 Nalin Dahyabhai <nalin at redhat.com> 1.9.1-12
- pull in upstream patch for RT#6952, confusion following referrals for
cross-realm auth (#734341)
diff --git a/krb5kdc.service b/krb5kdc.service
new file mode 100644
index 0000000..cc10434
--- /dev/null
+++ b/krb5kdc.service
@@ -0,0 +1,14 @@
+[Unit]
+Description=Kerberos 5 Servers
+After=syslog.target network.target
+
+[Service]
+Type=forking
+PIDFile=var/run/krb5kdc.pid
+EnvironmentFile=-/etc/sysconfig/krb5kdc
+ExecStart=/usr/sbin/krb5kdc -r $KRB5REALM -P $pidfile $KRB5KDC_ARGS
+ExecReload=/bin/kill -HUP $MAINPID
+
+[Install]
+WantedBy=multi-user.target
+
More information about the scm-commits
mailing list