-# TODO
-# - should unmount /proc/fs/nfsd and /var/lib/nfs/rpc_pipefs at package
-# uninstall (or in service nfs stop)
#
# Conditional build:
%bcond_with krb5 # build with MIT Kerberos (+libgssglue) instead of Heimdal
Summary(uk.UTF-8): Утиліти для NFS та демони підтримки для NFS-сервера ядра
Name: nfs-utils
Version: 1.2.5
-Release: 3
+Release: 4
License: GPL v2
Group: Networking/Daemons
#Source0: http://www.kernel.org/pub/linux/utils/nfs/%{name}-%{version}.tar.bz2
-Source0: http://downloads.sourceforge.net/project/nfs/nfs-utils/%{version}/%{name}-%{version}.tar.bz2
+Source0: http://downloads.sourceforge.net/nfs/%{name}-%{version}.tar.bz2
# Source0-md5: 8395ac770720b83c5c469f88306d7765
#Source1: ftp://ftp.linuxnfs.sourceforge.org/pub/nfs/nfs.doc.tar.gz
Source1: nfs.doc.tar.gz
Source9: nfslock.sysconfig
Source10: nfsfs.sysconfig
Source11: blkmapd.init
+Source100: proc-fs-nfsd.mount
+Source101: var-lib-nfs-rpc_pipefs.mount
+Source102: nfsd.service
+Source103: nfs-blkmapd.service
+Source104: nfs-exportfs.service
+Source105: nfs-gssd.service
+Source106: nfs-idmapd.service
+Source107: nfs-lock.service
+Source108: nfs-mountd.service
+Source109: nfs-svcgssd.service
+Source110: nfsd.postconfig
+Source111: nfsd.preconfig
+Source112: nfs-lock.preconfig
Patch0: %{name}-install.patch
Patch1: %{name}-statdpath.patch
Patch2: %{name}-subsys.patch
%else
BuildRequires: heimdal-devel >= 1.0
%endif
+BuildRequires: rpmbuild(macros) >= 1.623
# lucid context fields mismatch with current version of spkm3.h
BuildConflicts: gss_mech_spkm3-devel
Requires(post): fileutils
Requires(post): sed >= 4.0
Requires(post,preun): /sbin/chkconfig
Requires: %{name}-common = %{version}-%{release}
+Requires: libevent >= 2.0.14-2
Requires: rc-scripts >= 0.4.1.5
Requires: rpcbind >= 0.1.7
Requires: setup >= 2.4.6-7
супутні утиліти, які забезпечують набагато більшу продуктивність, ніж
традиційні Linux NFS-сервери, які використовує більшість користувачів.
+%package systemd
+Summary: systemd units for NFS server services
+Summary(pl.UTF-8): Jednostki systemd dla serwisów serwera NFS
+Group: Daemons
+Requires: %{name} = %{version}-%{release}
+Requires: systemd
+Requires: systemd-units
+
+%description systemd
+Systemd units for NFS server services.
+
+%description systemd -l pl.UTF-8
+Jednostki systemd dla serwisów serwera NFS.
+
%package clients
Summary: Clients for connecting to a remote NFS server
Summary(pl.UTF-8): Klienci do łączenia się ze zdalnym serwerem NFS
zamountowani na tym serwerze. Ten pakiet nie jest konieczny do
zamountowania zasobów NFS.
+%package clients-systemd
+Summary: systemd units for NFS clients
+Summary(pl.UTF-8): Jednostki systemd dla klientów NFS
+Group: Daemons
+Requires: %{name}-clients = %{version}-%{release}
+Requires: systemd
+Requires: systemd-units
+
+%description clients-systemd
+Systemd units for NFS clients.
+
+%description clients-systemd -l pl.UTF-8
+Jednostki systemd dla klientów NFS.
+
%package common
Summary: Common programs for NFS
Summary(pl.UTF-8): Wspólne programy do obsługi NFS
Provides: group(rpcstatd)
Provides: nfslockd
Provides: nfs-utils-lock
-Requires: libnfsidmap >= 0.21-3
+Requires: libnfsidmap >= 0.25-3
Requires: rc-scripts
Requires: rpcbind >= 0.1.7
Obsoletes: nfs-utils-lock
%description common -l pl.UTF-8
Wspólne programy do obsługi NFS.
+%package common-systemd
+Summary: systemd units for common NFS services
+Summary(pl.UTF-8): Jednostki systemd dla wspólnych serwisów NFS
+Group: Daemons
+Requires: %{name}-common = %{version}-%{release}
+Requires: systemd
+Requires: systemd-units
+
+%description common-systemd
+Systemd units for common NFS services.
+
+%description common-systemd -l pl.UTF-8
+Jednostki systemd dla wspólnych serwisów NFS.
+
%prep
%setup -q -a1
%patch0 -p1
--with-statdpath=/var/lib/nfs/statd \
--with-statedir=/var/lib/nfs \
--with-statduser=rpcstatd \
- --with-start-statd=%{_sbindir}/start-statd \
+ --with-start-statd=/sbin/start-statd \
--with-tcp-wrappers \
--with-krb5
%install
rm -rf $RPM_BUILD_ROOT
install -d $RPM_BUILD_ROOT%{_sysconfdir}/{rc.d/init.d,sysconfig,exports.d} \
- $RPM_BUILD_ROOT%{_var}/lib/nfs/{rpc_pipefs,v4recovery}
+ $RPM_BUILD_ROOT%{_var}/lib/nfs/{rpc_pipefs,v4recovery} \
+ $RPM_BUILD_ROOT{%{systemdunitdir},%{_datadir}/nfs-utils}
%{__make} install \
DESTDIR=$RPM_BUILD_ROOT
install -p utils/mount/nfsmount.conf $RPM_BUILD_ROOT/etc
-cat >$RPM_BUILD_ROOT%{_sbindir}/start-statd <<EOF
+cat >$RPM_BUILD_ROOT/sbin/start-statd <<EOF
#!/bin/sh
# mount.nfs calls this script when mounting a filesystem with locking
# enabled, but when statd does not seem to be running (based on
# /var/run/rpc.statd.pid).
-exec /sbin/service nfslock start
+exec /sbin/rpc.statd --no-notify
EOF
-sed -e "s|#!/bin/bash|#!/bin/sh|" utils/gssd/gss_destroy_creds > $RPM_BUILD_ROOT%{_sbindir}/gss_destroy_creds
+%{__sed} -i -e "s|#!/bin/bash|#!/bin/sh|" $RPM_BUILD_ROOT%{_sbindir}/gss_destroy_creds
+%{__sed} -i -e 's|%{_sbindir}nfsidmap|/sbin/nfsidmap|g' $RPM_BUILD_ROOT%{_mandir}/man8/nfsidmap.8
-mv $RPM_BUILD_ROOT%{_sbindir}/rpcdebug $RPM_BUILD_ROOT/sbin
+for f in rpcdebug blkmapd nfsidmap rpc.gssd rpc.idmapd rpc.statd ; do
+ mv $RPM_BUILD_ROOT%{_sbindir}/$f $RPM_BUILD_ROOT/sbin
+done
install %{SOURCE2} $RPM_BUILD_ROOT/etc/rc.d/init.d/nfs
install %{SOURCE3} $RPM_BUILD_ROOT/etc/rc.d/init.d/nfslock
install %{SOURCE9} $RPM_BUILD_ROOT/etc/sysconfig/nfslock
install %{SOURCE10} $RPM_BUILD_ROOT/etc/sysconfig/nfsfs
+install %{SOURCE100} $RPM_BUILD_ROOT%{systemdunitdir}/proc-fs-nfsd.mount
+install %{SOURCE101} $RPM_BUILD_ROOT%{systemdunitdir}/var-lib-nfs-rpc_pipefs.mount
+install %{SOURCE102} $RPM_BUILD_ROOT%{systemdunitdir}/nfsd.service
+install %{SOURCE103} $RPM_BUILD_ROOT%{systemdunitdir}/nfs-blkmapd.service
+install %{SOURCE104} $RPM_BUILD_ROOT%{systemdunitdir}/nfs-exportfs.service
+install %{SOURCE105} $RPM_BUILD_ROOT%{systemdunitdir}/nfs-gssd.service
+install %{SOURCE106} $RPM_BUILD_ROOT%{systemdunitdir}/nfs-idmapd.service
+install %{SOURCE107} $RPM_BUILD_ROOT%{systemdunitdir}/nfs-lock.service
+install %{SOURCE108} $RPM_BUILD_ROOT%{systemdunitdir}/nfs-mountd.service
+install %{SOURCE109} $RPM_BUILD_ROOT%{systemdunitdir}/nfs-svcgssd.service
+install %{SOURCE110} $RPM_BUILD_ROOT%{_datadir}/nfs-utils/nfsd.postconfig
+install %{SOURCE111} $RPM_BUILD_ROOT%{_datadir}/nfs-utils/nfsd.preconfig
+install %{SOURCE112} $RPM_BUILD_ROOT%{_datadir}/nfs-utils/nfs-lock.preconfig
+
> $RPM_BUILD_ROOT%{_var}/lib/nfs/rmtab
> $RPM_BUILD_ROOT%{_sysconfdir}/exports
/sbin/chkconfig --del svcgssd
fi
+%post systemd
+%systemd_post nfsd.service
+%systemd_post nfs-exportfs.service
+%systemd_post nfs-mountd.service
+%systemd_post nfs-svcgssd.service
+
+%preun systemd
+%systemd_preun nfsd.service
+%systemd_preun nfs-exportfs.service
+%systemd_preun nfs-mountd.service
+%systemd_preun nfs-svcgssd.service
+
+%postun systemd
+%systemd_reload
+
%post clients
/sbin/chkconfig --add nfsfs
%service nfsfs restart
/sbin/chkconfig --del blkmapd
fi
+%post clients-systemd
+%systemd_post nfs-blkmapd.service
+%systemd_post nfs-gssd.service
+
+%preun clients-systemd
+%systemd_preun nfs-blkmapd.service
+%systemd_preun nfs-gssd.service
+
+%postun clients-systemd
+%systemd_reload
+
%pre common
%groupadd -g 191 rpcstatd
%useradd -u 191 -d /var/lib/nfs/statd -s /bin/false -c "RPC statd user" -g rpcstatd rpcstatd
%groupremove rpcstatd
fi
+%post common-systemd
+%systemd_post nfs-idmapd.service
+%systemd_post nfs-lock.service
+
+%preun common-systemd
+%systemd_preun nfs-idmapd.service
+%systemd_preun nfs-lock.service
+
+%postun common-systemd
+%systemd_reload
+
+%triggerpostun -- %{name} < 1.2.5-4
+if [ -f /etc/sysconfig/nfsd ]; then
+ . /etc/sysconfig/nfsd
+ __RPCMOUNTDOPTIONS=
+ [ -n "$MOUNTD_PORT" ] && __RPCMOUNTDOPTIONS="-p $MOUNTD_PORT"
+ for vers in 2 3 4 ; do
+ __var=$(eval echo \$NFSv$vers)
+ [ -n "$__var" -a "$__var" != "yes" ] && \
+ __RPCMOUNTDOPTIONS="$__RPCMOUNTDOPTIONS --no-nfs-version $vers"
+ done
+ [ -z "$__RPCMOUNTDOPTIONS" ] && exit 0
+ cp -f /etc/sysconfig/nfsd{,.rpmsave}
+ echo >>/etc/sysconfig/nfsd
+ echo "# Added by rpm trigger" >>/etc/sysconfig/nfsd
+ echo "RPCMOUNTDOPTIONS=\"$RPCMOUNTOPTIONS $__RPCMOUNTDOPTIONS\"" >>/etc/sysconfig/nfsd
+fi
+
%triggerpostun common -- %{name}-lock < 1.2.5-3
if [ -f /etc/sysconfig/nfslock.rpmsave ]; then
mv -f /etc/sysconfig/nfslock{,.rpmnew}
mv -f /etc/sysconfig/nfslock.rpmsave /etc/sysconfig/nfslock
fi
+%triggerpostun common -- %{name}-common < 1.2.5-4
+if [ -f /etc/sysconfig/nfslock ]; then
+ . /etc/sysconfig/nfslock
+ [ -n "$STATD_PORT" ] && STATDOPTS="$STATDOPTS -p $STATD_PORT"
+ [ -n "$STATD_OUTPORT" ] && STATDOPTS="$STATDOPTS -o $STATD_OUTPORT"
+ [ -z "$STATDOPTS" ] && exit 0
+ cp -f /etc/sysconfig/nfslock{,.rpmsave}
+ echo >>/etc/sysconfig/nfslock
+ echo "# Added by rpm trigger" >>/etc/sysconfig/nfslock
+ echo "STATDOPTIONS=\"$STATDOPTS\"" >>/etc/sysconfig/nfslock
+fi
+
%files
%defattr(644,root,root,755)
%doc ChangeLog README html
%{_mandir}/man8/rpcdebug.8*
%{_mandir}/man8/svcgssd.8*
+%files systemd
+%defattr(644,root,root,755)
+%{systemdunitdir}/nfsd.service
+%{systemdunitdir}/nfs-exportfs.service
+%{systemdunitdir}/nfs-mountd.service
+%{systemdunitdir}/nfs-svcgssd.service
+%{systemdunitdir}/proc-fs-nfsd.mount
+%attr(755,root,root) %{_datadir}/nfs-utils/nfsd.postconfig
+%attr(755,root,root) %{_datadir}/nfs-utils/nfsd.preconfig
+
%files clients
%defattr(644,root,root,755)
%attr(754,root,root) /etc/rc.d/init.d/blkmapd
%attr(4755,root,root) /sbin/umount.nfs
%attr(4755,root,root) /sbin/mount.nfs4
%attr(4755,root,root) /sbin/umount.nfs4
-%attr(755,root,root) %{_sbindir}/blkmapd
+%attr(755,root,root) /sbin/blkmapd
+%attr(755,root,root) /sbin/rpc.gssd
%attr(755,root,root) %{_sbindir}/mountstats
%attr(755,root,root) %{_sbindir}/nfsiostat
-%attr(755,root,root) %{_sbindir}/rpc.gssd
%attr(755,root,root) %{_sbindir}/showmount
%{_mandir}/man5/nfsmount.conf.5*
%{_mandir}/man8/blkmapd.8*
%{_mandir}/man8/showmount.8*
%{_mandir}/man8/umount.nfs.8*
+%files clients-systemd
+%defattr(644,root,root,755)
+%{systemdunitdir}/nfs-blkmapd.service
+%{systemdunitdir}/nfs-gssd.service
+
%files common
%defattr(644,root,root,755)
%config(noreplace) %verify(not md5 mtime size) /etc/sysconfig/nfslock
%attr(754,root,root) /etc/rc.d/init.d/nfslock
%attr(755,root,root) %{_sbindir}/gss_clnt_send_err
%attr(755,root,root) %{_sbindir}/gss_destroy_creds
-%attr(755,root,root) %{_sbindir}/nfsidmap
-%attr(755,root,root) %{_sbindir}/rpc.idmapd
-%attr(755,root,root) %{_sbindir}/rpc.statd
%attr(755,root,root) %{_sbindir}/sm-notify
-%attr(755,root,root) %{_sbindir}/start-statd
+%attr(755,root,root) /sbin/nfsidmap
+%attr(755,root,root) /sbin/rpc.idmapd
+%attr(755,root,root) /sbin/rpc.statd
+%attr(755,root,root) /sbin/start-statd
%dir %{_var}/lib/nfs
%dir %{_var}/lib/nfs/rpc_pipefs
%dir %{_var}/lib/nfs/v4recovery
%{_mandir}/man8/rpc.statd.8*
%{_mandir}/man8/sm-notify.8*
%{_mandir}/man8/statd.8*
+
+%files common-systemd
+%defattr(644,root,root,755)
+%{systemdunitdir}/nfs-idmapd.service
+%{systemdunitdir}/nfs-lock.service
+%{systemdunitdir}/var-lib-nfs-rpc_pipefs.mount
+%dir %{_datadir}/nfs-utils
+%attr(755,root,root) %{_datadir}/nfs-utils/nfs-lock.preconfig