[PKG-OpenRC-Debian] Bug#765785: openrc: can't cope with dangling rc.d links

Gabriele Giacone 1o5g4r8o at gmail.com
Sat Oct 25 14:01:16 UTC 2014


Control: tags -1 + patch

Please consider attached patch.

-- 
G..e
-------------- next part --------------
diff --git a/debian/changelog b/debian/changelog
index 464e751..b3a0bec 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,9 @@
+openrc (0.13.1-3) UNRELEASED; urgency=medium
+
+  * Fix postinst, make dangling links presence not fatal (Closes: #765785).
+
+ -- Gabriele Giacone <1o5g4r8o at gmail.com>  Sat, 25 Oct 2014 15:30:56 +0200
+
 openrc (0.13.1-2) unstable; urgency=medium
 
   [ Steven Chamberlain ]
diff --git a/debian/openrc.postinst b/debian/openrc.postinst
index 8438f00..b0f287c 100644
--- a/debian/openrc.postinst
+++ b/debian/openrc.postinst
@@ -9,22 +9,34 @@ if [ "${1}" = "configure" ] ; then
 		[ -d /etc/rc${rl}.d ] || continue
 
 		for f in $(ls -1 /etc/rc${rl}.d | egrep 'S[[:digit:]]{2}*'); do
-			svc=$(readlink -f /etc/rc${rl}.d/${f})
-			svc=$(basename ${svc})
-			update-rc.d ${svc} enable ${rl}
+			rclink=/etc/rc${rl}.d/${f}
+			initsh=$(readlink -f ${rclink})
+			svc=$(basename ${initsh})
+			if [ -f ${initsh} ]; then
+				update-rc.d ${svc} enable ${rl}
+			else
+				echo "*** WARNING: dangling link $rclink"
+				echo $dsvcs|grep -qw ${svc} || dsvcs="$dsvcs ${svc}"
+			fi
 		done
 	done
 
 	[ -d /etc/rc6.d ] && for f in $(ls -1 /etc/rc6.d | egrep 'K[[:digit:]]{2}*'); do
-		svc=$(readlink -f /etc/rc6.d/${f})
-		# no need to duplicate services in the off runlevel
-		egrep -q '# Default-Start:\s+[S12345]' ${svc} && continue
+		rclink=/etc/rc6.d/${f}
+		initsh=$(readlink -f ${rclink})
+		svc=$(basename ${initsh})
+		if [ -f ${initsh} ]; then
+			# no need to duplicate services in the off runlevel
+			egrep -q '# Default-Start:\s+[S12345]' ${initsh} && continue
 
-		svc=$(basename ${svc})
-		# reboot is managed by transit as below
-		[ ${svc} = reboot ] && continue
+			# reboot is managed by transit as below
+			[ ${svc} = reboot ] && continue
 
-		update-rc.d ${svc} enable 6
+			update-rc.d ${svc} enable 6
+		else
+			echo "*** WARNING: dangling link $rclink"
+			echo $dsvcs|grep -qw ${svc} || dsvcs="$dsvcs ${svc}"
+		fi
 	done
 
 	rc-update add savecache off
@@ -36,6 +48,15 @@ if [ "${1}" = "configure" ] ; then
 
 	rc-update -u
 
+	if [ "$dsvcs" != "" ]; then
+		echo "**********************************************************************"
+		echo "*** WARNING: Found the following dangling links:"
+		for link in $dsvcs; do
+			ls -l /etc/rc*.d/*$link
+		done
+		echo "**********************************************************************"
+	fi
+
 	echo "**********************************************************************"
 	echo "*** WARNING: if you are replacing sysv-rc by OpenRC, then you must ***"
 	echo "*** reboot immediately using the following command:                ***"


More information about the OpenRC-devel mailing list