Do not fail in multiarch environment when installing libnss_dns.so.
authorMichael Prokop <mika@grml.org>
Tue, 7 Jun 2011 08:15:52 +0000 (10:15 +0200)
committerMichael Prokop <mika@grml.org>
Tue, 7 Jun 2011 11:26:10 +0000 (13:26 +0200)
Updating initramfs fails with:

| live-boot: core filesystems devices utils:memdisk udev wget blockdevE: /usr/share/initramfs-tools/hooks/live failed with return 1.

with multiarch libc because the filename is no longer necessarily
/lib/libnss_dns.so.* but could also be e.g.
/lib/x86_64-linux-gnu/libnss_dns.so.*.

hooks/live

index 3862a60..b3de1e5 100755 (executable)
@@ -254,7 +254,16 @@ fi
 
 # DNS for initramfs
 #copy_exec /lib/libnss_files.so.*      /lib  # /etc/hosts and /etc/passwd
-copy_exec /lib/libnss_dns.so.*      /lib  # DNS server
+# DNS server:
+if ls /lib/libnss_dns.so.* >/dev/null 2>&1 ; then # non-multiarch libc
+        copy_exec /lib/libnss_dns.so.*      /lib
+elif ls /lib/*/libnss_dns.so.* >/dev/null 2>&1 ; then # multiarch libc
+        for libnss in /lib/*/libnss_dns.so.* ; do
+                copy_exec "$libnss"
+        done
+else
+        echo "Warning: libnss_dns.so.* not found. DNS in initramfs not functional."
+fi
 #copy_exec /lib/libnss_compat.so.*      /lib  # /etc/passwd
 
 # Configuration file - may be needed if /etc/hosts is used.