Preserve /etc/zfs/zed.d configuration on upgrade
Of the zedlet scripts shipped by upstream, a subset are enabled by default, by creating symlinks in /etc/zfs/zed.d. These symlinks are shipped in the zfs-zed package. dpkg, however, does not support conffile handling of symlinks, and therefore any changes (removals) to the symlinks are not preserved on package upgrade. To address this policy violation, we: 1. During package build, create a list of enabled-by-default zedlets, instead of creating symlinks. 2. On package removal, identify all enabled-by-default zedlets whose symlinks do not exist (i.e., were removed by the user). This is done by creating "whiteout" links to /dev/null in their place). 3. On package installation, create links to enabled-by-default zedlets UNLESS there is already a file there (i.e., abort if there is a whiteout link). 4. We also clean up broken symlinks to removed zedlets at package postinst. (cherry picked and adapted from 5cee380324d74e640d5dd7a360faba3994c8007f [0]) [0] https://salsa.debian.org/zfsonlinux-team/zfs.git Signed-off-by: Stoiko Ivanov <s.ivanov@proxmox.com>
This commit is contained in:
parent
475af1bc20
commit
4d56f4c5b5
12
debian/patches/0006-dont-symlink-zed-scripts.patch
vendored
Normal file
12
debian/patches/0006-dont-symlink-zed-scripts.patch
vendored
Normal file
@ -0,0 +1,12 @@
|
||||
Description: track default symlinks, instead of symlinking
|
||||
Forwarded: no need
|
||||
--- a/cmd/zed/zed.d/Makefile.am
|
||||
+++ b/cmd/zed/zed.d/Makefile.am
|
||||
@@ -52,6 +52,6 @@
|
||||
for f in $(zedconfdefaults); do \
|
||||
test -f "$(DESTDIR)$(zedconfdir)/$${f}" -o \
|
||||
-L "$(DESTDIR)$(zedconfdir)/$${f}" || \
|
||||
- ln -s "$(zedexecdir)/$${f}" "$(DESTDIR)$(zedconfdir)"; \
|
||||
+ echo "$${f}" >> "$(DESTDIR)$(zedexecdir)/DEFAULT-ENABLED" ; \
|
||||
done
|
||||
chmod 0600 "$(DESTDIR)$(zedconfdir)/zed.rc"
|
1
debian/patches/series
vendored
1
debian/patches/series
vendored
@ -3,3 +3,4 @@
|
||||
0003-Fix-the-path-to-the-zed-binary-on-the-systemd-unit.patch
|
||||
0004-import-with-d-dev-disk-by-id-in-scan-service.patch
|
||||
0005-Enable-zed-emails.patch
|
||||
0006-dont-symlink-zed-scripts.patch
|
||||
|
20
debian/zfs-zed.postinst
vendored
Normal file
20
debian/zfs-zed.postinst
vendored
Normal file
@ -0,0 +1,20 @@
|
||||
#!/bin/sh
|
||||
set -e
|
||||
|
||||
zedd="/usr/lib/zfs-linux/zed.d"
|
||||
etcd="/etc/zfs/zed.d"
|
||||
|
||||
# enable all default zedlets that are not overridden
|
||||
while read -r file ; do
|
||||
etcfile="${etcd}/${file}"
|
||||
[ -e "${etcfile}" ] && continue
|
||||
ln -s "${zedd}/${file}" "${etcfile}"
|
||||
done < "${zedd}/DEFAULT-ENABLED"
|
||||
|
||||
# remove the overrides created in prerm
|
||||
find "${etcd}" -maxdepth 1 -lname '/dev/null' -delete
|
||||
# remove any dangling symlinks to old zedlets
|
||||
find "${etcd}" -maxdepth 1 -lname "${zedd}/*" -xtype l -delete
|
||||
|
||||
#DEBHELPER#
|
||||
|
16
debian/zfs-zed.prerm
vendored
Normal file
16
debian/zfs-zed.prerm
vendored
Normal file
@ -0,0 +1,16 @@
|
||||
#!/bin/sh
|
||||
set -e
|
||||
|
||||
zedd="/usr/lib/zfs-linux/zed.d"
|
||||
etcd="/etc/zfs/zed.d"
|
||||
|
||||
if [ "$1" != "failed-upgrade" ] && [ -d "${etcd}" ] && [ -d "${zedd}" ] ; then
|
||||
while read -r file ; do
|
||||
etcfile="${etcd}/${file}"
|
||||
[ -e "${etcfile}" ] && continue
|
||||
ln -s /dev/null "${etcfile}"
|
||||
done < "${zedd}/DEFAULT-ENABLED"
|
||||
fi
|
||||
|
||||
#DEBHELPER#
|
||||
|
Loading…
Reference in New Issue
Block a user