diff --git a/debian/libnss-myhostname.postrm b/debian/libnss-myhostname.postrm index 81374eeba..0a6d0f2ea 100644 --- a/debian/libnss-myhostname.postrm +++ b/debian/libnss-myhostname.postrm @@ -1,32 +1,28 @@ #!/bin/sh set -e -# This code was taken from libnss-myhostname remove_nss_entry() { + local file=$1 + local pkg=$2 + local module=$3 refcount=$(dpkg-query -f '${db:Status-Abbrev} ${binary:Package}\n' \ - -W libnss-myhostname | grep '^i' | wc -l) + -W $pkg | grep '^i' | wc -l) if [ "$refcount" -gt 0 ] ; then - # there are other instances, do nothing + # package is installed for other architectures still, do nothing return fi echo "Checking NSS setup..." - # abort if /etc/nsswitch.conf does not exist - if ! [ -e /etc/nsswitch.conf ]; then - echo "Could not find /etc/nsswitch.conf." + # abort if file does not exist + if ! [ -e $file ]; then + echo "Could not find ${file}." return fi - perl -i -pe ' - sub remove { - my $s=shift; - $s=~s/\s+\Qmyhostname\E//g; - return $s; - } - s/^(hosts:)(.*)/$1.remove($2)/e; - ' /etc/nsswitch.conf + # we must remove possible [foo=bar] options as well + sed -i -r "/hosts:/ s/[[:space:]]+$module\b([[:space:]]*\[[^]]*\])*//" $file } if [ "$1" = remove ]; then - remove_nss_entry + remove_nss_entry /etc/nsswitch.conf libnss-myhostname myhostname fi #DEBHELPER# diff --git a/debian/libnss-mymachines.postrm b/debian/libnss-mymachines.postrm index f9475ae95..1318f2186 100644 --- a/debian/libnss-mymachines.postrm +++ b/debian/libnss-mymachines.postrm @@ -1,32 +1,28 @@ #!/bin/sh set -e -# This code was taken from libnss-myhostname remove_nss_entry() { + local file=$1 + local pkg=$2 + local module=$3 refcount=$(dpkg-query -f '${db:Status-Abbrev} ${binary:Package}\n' \ - -W libnss-mymachines | grep '^i' | wc -l) + -W $pkg | grep '^i' | wc -l) if [ "$refcount" -gt 0 ] ; then - # there are other instances, do nothing + # package is installed for other architectures still, do nothing return fi echo "Checking NSS setup..." - # abort if /etc/nsswitch.conf does not exist - if ! [ -e /etc/nsswitch.conf ]; then - echo "Could not find /etc/nsswitch.conf." + # abort if file does not exist + if ! [ -e $file ]; then + echo "Could not find ${file}." return fi - perl -i -pe ' - sub remove { - my $s=shift; - $s=~s/\s+\Qmymachines\E//g; - return $s; - } - s/^(hosts:)(.*)/$1.remove($2)/e; - ' /etc/nsswitch.conf + # we must remove possible [foo=bar] options as well + sed -i -r "/hosts:/ s/[[:space:]]+$module\b([[:space:]]*\[[^]]*\])*//" $file } if [ "$1" = remove ]; then - remove_nss_entry + remove_nss_entry /etc/nsswitch.conf libnss-mymachines mymachines fi #DEBHELPER# diff --git a/debian/libnss-resolve.postrm b/debian/libnss-resolve.postrm index 48ab7cf10..6f0f787f0 100644 --- a/debian/libnss-resolve.postrm +++ b/debian/libnss-resolve.postrm @@ -1,32 +1,28 @@ #!/bin/sh set -e -# This code was taken from libnss-myhostname remove_nss_entry() { + local file=$1 + local pkg=$2 + local module=$3 refcount=$(dpkg-query -f '${db:Status-Abbrev} ${binary:Package}\n' \ - -W libnss-resolve | grep '^i' | wc -l) + -W $pkg | grep '^i' | wc -l) if [ "$refcount" -gt 0 ] ; then - # there are other instances, do nothing + # package is installed for other architectures still, do nothing return fi echo "Checking NSS setup..." - # abort if /etc/nsswitch.conf does not exist - if ! [ -e /etc/nsswitch.conf ]; then - echo "Could not find /etc/nsswitch.conf." + # abort if file does not exist + if ! [ -e $file ]; then + echo "Could not find ${file}." return fi - perl -i -pe ' - sub remove { - my $s=shift; - $s=~s/\s+resolve\b//g; - return $s; - } - s/^(hosts:)(.*)/$1.remove($2)/e; - ' /etc/nsswitch.conf + # we must remove possible [foo=bar] options as well + sed -i -r "/hosts:/ s/[[:space:]]+$module\b([[:space:]]*\[[^]]*\])*//" $file } if [ "$1" = remove ]; then - remove_nss_entry + remove_nss_entry /etc/nsswitch.conf libnss-resolve resolve systemctl disable systemd-resolved.service if [ -d /run/systemd/system ]; then deb-systemd-invoke stop systemd-resolved.service || true