diff --git a/nsd.service b/nsd.service new file mode 100644 index 0000000..54f0952 --- /dev/null +++ b/nsd.service @@ -0,0 +1,19 @@ +[Unit] +Description=NSD DNS Server +After=syslog.target network.target + +[Service] +Type=forking +PIDFile=/var/run/nsd/nsd.pid +EnvironmentFile=-/etc/sysconfig/nsd +ExecStartPre=/usr/sbin/nsdc -c /etc/nsd/nsd.conf rebuild +ExecStart=/usr/sbin/nsd -c /etc/nsd/nsd.conf $OTHER_NSD_OPTS +ExecReload=/usr/sbin/nsdc -c /etc/nsd/nsd.conf rebuild +ExecReload=/usr/sbin/nsdc -c /etc/nsd/nsd.conf reload +ExecStop=/usr/sbin/nsdc -c /etc/nsd/nsd.conf patch +ExecStop=/usr/sbin/nsdc -c /etc/nsd/nsd.conf stop +ExecStopPost=/bin/rm -f /var/lib/nsd/xfrd.state + +[Install] +WantedBy=multi-user.target + diff --git a/nsd.spec b/nsd.spec index f19a22a..6ffaa6d 100644 --- a/nsd.spec +++ b/nsd.spec @@ -1,18 +1,23 @@ Summary: Fast and lean authoritative DNS Name Server Name: nsd Version: 3.2.8 -Release: 5%{?dist} +Release: 6%{?dist} License: BSD Url: http://www.nlnetlabs.nl/%{name}/ Source: http://www.nlnetlabs.nl/downloads/%{name}/%{name}-%{version}.tar.gz -Source1: nsd.init +Source1: nsd.service Source2: nsd.cron Source3: nsd.sysconfig +Source4: tmpfiles-nsd.conf Patch0: nsd-install.patch Patch1: nsd-fixlogfile.patch Group: System Environment/Daemons -BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) BuildRequires: flex, openssl-devel +BuildRequires: systemd-units +Requires(post): systemd-sysv +Requires(post): systemd-units +Requires(preun): systemd-units +Requires(postun): systemd-units Requires(pre): shadow-utils %description @@ -42,16 +47,17 @@ mv -f doc/CREDITS.utf8 doc/CREDITS %install -rm -rf %{buildroot} %{__make} DESTDIR=%{buildroot} install -install -d -m 0755 %{buildroot}%{_initrddir} -install -d -m 0755 $RPM_BUILD_ROOT%{_sysconfdir}/cron.hourly -install -c -m 0755 %{SOURCE2} $RPM_BUILD_ROOT%{_sysconfdir}/cron.hourly/nsd -install -m 0755 %{SOURCE1} %{buildroot}/%{_initrddir}/nsd +mkdir -p %{buildroot}%{_unitdir} +install -d -m 0755 %{buildroot}%{_sysconfdir}/cron.hourly +install -c -m 0755 %{SOURCE2} %{buildroot}%{_sysconfdir}/cron.hourly/nsd +install -m 0755 %{SOURCE1} %{buildroot}/%{_unitdir}/nsd.service install -d -m 0755 %{buildroot}%{_localstatedir}/run/%{name} install -d -m 0700 %{buildroot}%{_localstatedir}/lib/%{name} install -d -m 0755 %{buildroot}%{_sysconfdir}/sysconfig install -m 0755 %{SOURCE3} %{buildroot}/%{_sysconfdir}/sysconfig/%{name} +mkdir -p %{buildroot}%{_sysconfdir}/tmpfiles.d/ +install -m 0644 %{SOURCE4} %{buildroot}%{_sysconfdir}/tmpfiles.d/nsd.conf # change .sample to normal config files head -76 %{buildroot}%{_sysconfdir}/nsd/nsd.conf.sample > %{buildroot}%{_sysconfdir}/nsd/nsd.conf @@ -59,17 +65,14 @@ rm %{buildroot}%{_sysconfdir}/nsd/nsd.conf.sample echo "database: /var/lib/nsd/nsd.db" >> %{buildroot}%{_sysconfdir}/nsd/nsd.conf echo "# include: \"/some/path/file\"" >> %{buildroot}%{_sysconfdir}/nsd/nsd.conf -%clean -rm -rf ${RPM_BUILD_ROOT} - %files -%defattr(-,root,root,-) %doc doc/* %doc contrib/nsd.zones2nsd.conf %dir %{_sysconfdir}/nsd/ %attr(0644,root,root) %config(noreplace) %{_sysconfdir}/nsd/nsd.conf %attr(0644,root,root) %config(noreplace) %{_sysconfdir}/sysconfig/nsd -%attr(0755,root,root) %{_initrddir}/%{name} +%attr(0644,root,root) %config(noreplace) %{_sysconfdir}/tmpfiles.d/nsd.conf +%{_unitdir}/%{name}.service %{_sysconfdir}/cron.hourly/nsd %ghost %attr(0755,root,root) %dir %{_localstatedir}/run/%{name} %attr(0755,%{name},%{name}) %dir %{_localstatedir}/lib/%{name} @@ -84,20 +87,40 @@ useradd -r -g nsd -d /etc/nsd -s /sbin/nologin \ exit 0 %post -/sbin/chkconfig --add %{name} +if [ $1 -eq 1 ] ; then + # Initial installation + /bin/systemctl daemon-reload >/dev/null 2>&1 || : +fi %preun -if [ $1 -eq 0 ]; then - /sbin/service %{name} stop - /sbin/chkconfig --del %{name} +if [ $1 -eq 0 ] ; then + # Package removal, not upgrade + /bin/systemctl --no-reload disable nsd.service > /dev/null 2>&1 || : + /bin/systemctl stop nsd.service > /dev/null 2>&1 || : fi %postun -if [ "$1" -ge "1" ]; then - /sbin/service %{name} condrestart +/bin/systemctl daemon-reload >/dev/null 2>&1 || : +if [ $1 -ge 1 ] ; then + # Package upgrade, not uninstall + /bin/systemctl try-restart nsd.service >/dev/null 2>&1 || : fi +%triggerun -- nsd < 3.2.8-6 +# Save the current service runlevel info +# User must manually run systemd-sysv-convert --apply nsd +# to migrate them to systemd targets +/usr/bin/systemd-sysv-convert --save nsd >/dev/null 2>&1 ||: + +# Run these because the SysV package being removed won't do them +/sbin/chkconfig --del nsd >/dev/null 2>&1 || : +/bin/systemctl try-restart nsd.service >/dev/null 2>&1 || : + + %changelog +* Mon Sep 12 2011 Tom Callaway - 3.2.8-6 +- convert to systemd, tmpfiles.d + * Fri Jun 3 2011 Paul Wouters - 3.2.8-5 - fix /var/run/nsd to be owned by root, not nsd diff --git a/tmpfiles-nsd.conf b/tmpfiles-nsd.conf new file mode 100644 index 0000000..b5e5e6f --- /dev/null +++ b/tmpfiles-nsd.conf @@ -0,0 +1 @@ +d /var/run/nsd 0755 nsd nsd -