--- Begin Message ---
Package: nss-mdns
Version: 0.8-6
Severity: wishlist
Tags: patch
Hi,
Please merge the diff from the 0.8-6.1 NMU I just uploaded. I'll
comment in the RC bug I'm closing in an hour or so to explain a
limitation in the NMU I did which I believe should be addressed in
avahi-daemon.
Bye,
-- System Information:
Debian Release: 4.0
APT prefers unstable
APT policy: (500, 'unstable'), (1, 'experimental')
Architecture: i386 (i686)
Shell: /bin/sh linked to /bin/bash
Kernel: Linux 2.6.18-3-686
Locale: LANG=fr_FR.UTF-8, LC_CTYPE=fr_FR.UTF-8 (charmap=UTF-8)
--
Loïc Minier <[email protected]>
"Forget your stupid theme park! I'm gonna make my own! With hookers!
And blackjack! In fact, forget the theme park!" -- Bender
--- nss-mdns-0.8/debian/control
+++ nss-mdns-0.8/debian/control
@@ -7,8 +7,8 @@
Package: libnss-mdns
Section: admin
-Recommends: zeroconf
-Suggests: avahi-daemon
+Depends: perl, avahi-daemon
+Suggests: avahi-autoipd | zeroconf
Architecture: any
Depends: ${shlibs:Depends}, base-files (>= 3.1.10)
Description: NSS module for Multicast DNS name resolution
--- nss-mdns-0.8/debian/rules
+++ nss-mdns-0.8/debian/rules
@@ -27,7 +27,7 @@
config.status: configure
dh_testdir
# Add here commands to configure the package.
- ./configure --host=$(DEB_HOST_GNU_TYPE) --build=$(DEB_BUILD_GNU_TYPE) --prefix=/usr --mandir=\$${prefix}/share/man --infodir=\$${prefix}/share/info --sysconfdir=/etc --localstatedir=/var --libexecdir=\${prefix}/lib/nss-mdns CFLAGS="$(CFLAGS)" LDFLAGS="-Wl,-z,defs"
+ ./configure --host=$(DEB_HOST_GNU_TYPE) --build=$(DEB_BUILD_GNU_TYPE) --prefix=/usr --mandir=\$${prefix}/share/man --infodir=\$${prefix}/share/info --sysconfdir=/etc --localstatedir=/var --libexecdir=\${prefix}/lib/nss-mdns CFLAGS="$(CFLAGS)" LDFLAGS="-Wl,-z,defs" --disable-legacy
build: build-stamp
--- nss-mdns-0.8/debian/changelog
+++ nss-mdns-0.8/debian/changelog
@@ -1,3 +1,41 @@
+nss-mdns (0.8-6.1) unstable; urgency=low
+
+ * Non-maintainer upload to fix a long-standing RC bug and to beat the
+ package into shape before etch with suggestions from upstream; thanks
+ Lennart Poettering.
+ * Configure with --disable-legacy, as recommended by upstream for security
+ reasons; the legacy mode might be offered in a separate binary package for
+ the corner cases where it can be useful; see full discussion in #393711;
+ depend on avahi-daemon as nss-mdns will not work without avahi when
+ compiled like this; closes: #399297.
+ * Only suggest zeroconf instead of Recommending it: even if it can act as a
+ nice complement to nss-mdns, it is intrusive and orthogonal to nss-mdns
+ and conflicts with avahi-autoipd; closes: #353131, #392590.
+ * Suggest avahi-autoipd as an alternative to zeroconf.
+ * Remove offensive comments in postinst and README.Debian.
+ * Document the history of postinst snippets in debian/NOTES.Debian to permit
+ handling all upgrade paths.
+ * Depend on Perl for the postinst snippets using the perl interpreter.
+ * Rewrite postinst to handle all upgrade paths.
+ - Does not wipe NSS configuration which matches the upstream recommended
+ configuration during upgrades from versions 0.8-4.2 or 0.8-5;
+ closes: #393608.
+ - Install the upstream recommended configuration for first installs and
+ upgrades from versions which did not automatically insert mdns in the
+ NSS setup (unless mdns is already setup); closes: #393711.
+ - Keep configuration intact when upgrading from versions which installed
+ the upstream recommended configuration.
+ - Remove whitespaces added in upgrades from version 0.8-4.2 or 0.8-5 to
+ 0.8-6.
+ - For upgrades from 0.8-6, attempt to revert the problematic "mdns_minimal
+ dns mdns" configuration and to install the upstream recommended
+ configuration.
+ * Update README.Debian to match the above changes and a planned changes in
+ avahi-daemon which should disable itself if a .local SOA is found after a
+ change in the DNS settings.
+
+ -- Loic Minier <[email protected]> Sun, 24 Dec 2006 20:27:30 +0100
+
nss-mdns (0.8-6) unstable; urgency=medium
* Revert hostile package takeover.
--- nss-mdns-0.8/debian/postinst
+++ nss-mdns-0.8/debian/postinst
@@ -4,47 +4,82 @@
-if [ "$1" = configure ] && [ -e /etc/nsswitch.conf ]; then
- if [ -z "$2" ] || dpkg --compare-versions "$2" ge 0.8-6; then
- perl -i -pe '
- sub insert {
- my @bits=split(" ", shift);
- if (grep { $_ eq "mdns4_minimal" || $_ eq "mdns4"
- || $_ eq "mdns" || $_ eq "mdns_minimal"
- || $_ eq "mdns6" || $_ eq "mdns6_minimal"} @bits) {
- return join " ", @bits;
- }
- return join " ", map {
- $_ eq "dns" ? ("mdns_minimal",$_,"mdns") : $_
- } @bits;
- }
- s/^(hosts:\s+)(.*)/$1.insert($2)/e;
- ' /etc/nsswitch.conf
- fi
- if [ -z "$2" ] || dpkg --compare-versions "$2" eq 0.8-5; then
- # Undo the SjoerdHess damage
- perl -i -pe '
- s/^(hosts:\s+)(.*)mdns4_minimal \[NOTFOUND=return\](.*dns.*)mdns4(.*)/$1$2$3$4/;
- ' /etc/nsswitch.conf
- fi
- if [ -z "$2" ] || dpkg --compare-versions "$2" eq 0.8-4.2; then
- # Undo the SjoerdHess damage
- perl -i -pe '
- s/^(hosts:\s+)(.*)mdns4_minimal \[NOTFOUND=return\](.*dns.*)mdns4(.*)/$1$2$3$4/;
- ' /etc/nsswitch.conf
- fi
- if [ -z "$2" ] || dpkg --compare-versions "$2" le 0.8-4.1; then
- perl -i -pe '
- sub insert {
- my @bits=split(" ", shift);
- if (grep { $_ eq "mdns4_minimal" || $_ eq "mdns4"
- || $_ eq "mdns" || $_ eq "mdns_minimal"
- || $_ eq "mdns6" || $_ eq "mdns6_minimal"} @bits) {
- return join " ", @bits;
- }
- return join " ", map {
- $_ eq "dns" ? ("mdns_minimal",$_,"mdns") : $_
- } @bits;
- }
- s/^(hosts:\s+)(.*)/$1.insert($2)/e;
- ' /etc/nsswitch.conf
- fi
+log() {
+ echo "$*"
+}
+
+# try to insert mdns entries to the "hosts" line in /etc/nsswitch.conf to
+# automatically enable nss-mdns support; do not change the configuration if the
+# "hosts" line already references some mdns lookups
+insert_mdns() {
+ log "Checking NSS setup..."
+ # abort if /etc/nsswitch.conf does not exist
+ if ! [ -e /etc/nsswitch.conf ]; then
+ log "Could not find /etc/nsswitch.conf."
+ return
+ fi
+ perl -i -pe '
+ sub insert {
+ # this also splits on tab
+ my @bits=split(" ", shift);
+ # do not break configuration if the "hosts" line already references
+ # mdns
+ if (grep { $_ eq "mdns4_minimal" || $_ eq "mdns4"
+ || $_ eq "mdns" || $_ eq "mdns_minimal"
+ || $_ eq "mdns6" || $_ eq "mdns6_minimal"} @bits) {
+ return join " ", @bits;
+ }
+ # change "dns" into "mdns4_minimal [NOTFOUND=return] dns mdns4"
+ return join " ", map {
+ $_ eq "dns" ? ("mdns4_minimal","[NOTFOUND=return]",$_,"mdns4") : $_
+ } @bits;
+ }
+ s/^(hosts:\s+)(.*)/$1.insert($2)/e;
+ ' /etc/nsswitch.conf
+}
+
+action="$1"
+
+if [ configure = "$action" ]; then
+ if [ -z "$2" ]; then
+ log "First installation detected..."
+ # first install: setup the recommended configuration (unless
+ # nsswitch.conf already contains mdns entries)
+ insert_mdns
+ else
+ # upgrade
+ version="$2"
+
+ if dpkg --compare-versions "$version" lt 0.8-4.2; then
+ log "Upgrade from unconfigured version detected."
+ # versions prior to 0.8-4.2 did not setup nss-mdns automatically,
+ # do it now
+ insert_mdns
+ elif dpkg --compare-versions "$version" lt 0.8-6; then
+ log "Already configured version detected, skipping NSS setup."
+ # versions 0.8-4.2 and 0.8-5 installed the same configuration as
+ # this postinst, so nothing needs to be done
+ :
+ elif dpkg --compare-versions "$version" lt 0.8-6.1; then
+ log "Upgrade from possibly broken version detected."
+ if [ -e /etc/nsswitch.conf ]; then
+ # version 0.8-6 broke the configuration in multiple ways: 1)
+ # for systems which were upgraded from 0.8-4.2 or 0.8-5 to
+ # 0.8-6, the hosts line will look like:
+ # hosts: files dns
+ # cleanup from this specially formatted line into the default
+ # one:
+ sed -i \
+ 's/^hosts: files dns $/hosts: files dns/' \
+ /etc/nsswitch.conf
+ # 2) for systems which re-installed 0.8-6 or installed 0.8-6 as the
+ # first version, the hosts line will look like:
+ # hosts: files mdns_minimal dns mdns
+ # cleanup from this specially formatted line into the default one:
+ sed -i -r \
+ '/^hosts:/s/\<mdns_minimal dns mdns\>/dns/' \
+ /etc/nsswitch.conf
+ fi
+
+ insert_mdns
+ fi
+ fi
fi
--- nss-mdns-0.8/debian/README.Debian
+++ nss-mdns-0.8/debian/README.Debian
@@ -1,53 +1,29 @@
-
MODIFYING /etc/nsswitch.conf
----------------------------
Previously the base-files package shipped /etc/nsswitch.conf and specified:
-hosts: files dns mdns
+ hosts: files dns mdns
However, due to bug#351990, this is no longer the case. /etc/nsswitch.conf
-is now generated post-installation. Upon installation, if the strings 'mdns',
-'mdns_minimal', 'mdns4', 'mdns4_minimal', 'mdns6' and 'mdns6_minimal' do NOT
-appear on the hosts line, your /etc/nsswitch.conf file will be updated
-
-This means that, /etc/nsswitch.conf will be set to:
-
-hosts: files mdns_minimal dns mdns
-
-Note: this is never removed once installed, the side-effect of not removing
-the entry is that there is a slight delay (similiar to how the Standard C
-libraries searches for optimised versions) during program startup and execution
-
-WHAT ABOUT UPSTREAM?
---------------------
-
-Upstream recommends a slightly different line, which make mDNS authoriative
-for both the .local, 169.254.0.0/16 and fe80::/16 zones. This means that
-local administrators do not have the opportunity to insert entries into
-any of those zones (unlikely but possible).
-
-Additionally, using the recommended upstream line can cause interaction
-issues with incorrectly configured installations (not surprisingly
-many "enterprises" use .local for their internal servers).
-
-Debian takes the most conservative approach to ensure that your installation
-continues to function correctly. However that may mean slightly longer delays
-(sometimes as long as 10 seconds) when things do not work properly.
-
-WHAT ABOUT IPv6?
-----------------
-
-mDNS (multicast DNS) has been widely deployed within the Apple
-community (since Mac OS X 10.1) and by many printer manufacturers.
-
-Initially the mDNS entries only contained IPv4 addresses (A records),
-however, since Mac OS X 10.3 onwards, mDNS entries have also been
-populated with IPv6 addresses (AAAA records).
-
-Therefore Debian, once again, differs from upstream by recommending
-an entry which looks up addresses via both IPv4 and IPv6.
-
--- Anand Kumria <[email protected]>, Sun, 2 Jul 2006 21:36:18 +1000
+is now generated post-installation. Upon installation of nss-mdns, if the
+strings 'mdns', 'mdns_minimal', 'mdns4', 'mdns4_minimal', 'mdns6' or
+'mdns6_minimal' appear on the hosts line, your /etc/nsswitch.conf file
+will not be updated, otherwise it will updated to match the upstream
+recommended configuration which usually looks like:
+
+ hosts: files mdns4_minimal [NOTFOUND=return] dns mdns4
+
+This is currently not removed on removal or purge of nss-mdns.
+
+
+.local domains
+--------------
+
+Making nss-mdns authoritative for .local breaks resolution on networks
+where .local is a real domain name. To workaround this, avahi-daemon
+should be restarted when the DNS settings change (for example via
+resolvconf and dhclient hooks) and disable itself when a SOA for the
+.local zone is found. This is not currently implemented at the time of
+writing, but should soon be.
-and further clarified in light of the SjoerdHess debacle on 20061016T1230
--- nss-mdns-0.8.orig/debian/NOTES.Debian
+++ nss-mdns-0.8/debian/NOTES.Debian
@@ -0,0 +1,62 @@
+Upgrade implementation notes
+============================
+
+The first version in Debian was 0.3-2.
+
+Starting with version 0.8-4.2 inclusive, the package started touching
+/etc/nsswitch.conf in debian/postinst.
+
+In versions 0.8-4.2, for first installs and upgrades from versions lower or
+equal to 0.8-4.1, the postinst would:
+- avoid doing anything if any of "mdns4_minimal", "mdns4", "mdns",
+ "mdns_minimal", "mdns6", "mdns6_minimal" was found in the hosts line; that
+ is, manually configured /etc/nsswitch.conf were kept intact
+- otherwise change the "dns" entry in /etc/hosts into:
+ "mdns4_minimal [NOTFOUND=return] dns mdns4"
+
+Problems with this version:
+1) does not preserve spacing ("foo bar" becomes "foo bar")
+2) breaks local reaction overrides ("[STATUS=ACTION]")
+
+In version 0.8-5, the postinst is identical to the postinst of version 0.8-4.2.
+
+In version 0.8-6, the postinst was really messed up:
+* for first installs:
+ - avoid doing anything if any of "mdns4_minimal", "mdns4", "mdns",
+ "mdns_minimal", "mdns6", "mdns6_minimal" was found in the hosts line; that
+ is, manually configured /etc/nsswitch.conf were kept intact
+ - otherwise change the "dns" entry in /etc/hosts into:
+ "mdns_minimal dns mdns"
+ - if the hosts line contained "... mdns4_minimal [NOTFOUND=return] ... dns
+ ... mdns4 ...", remove these "mdns4_minimal [NOTFOUND=return]" and "mdns4"
+ entries
+* for upgrades from versions lower or equal to 0.8-4.1:
+ - avoid doing anything if any of "mdns4_minimal", "mdns4", "mdns",
+ "mdns_minimal", "mdns6", "mdns6_minimal" was found in the hosts line; that
+ is, manually configured /etc/nsswitch.conf were kept intact
+ - otherwise change the "dns" entry in /etc/hosts into:
+ "mdns_minimal dns mdns"
+* for upgrades from versions 0.8-4.2 and 0.8-5:
+ - if the hosts line contained "... mdns4_minimal [NOTFOUND=return] ... dns
+ ... mdns4 ...", remove these "mdns4_minimal [NOTFOUND=return]" and "mdns4"
+ entries
+* for upgrades from versions higher or equal to 0.8-6 (i.e. reinstalls of
+ 0.8-6!):
+ - avoid doing anything if any of "mdns4_minimal", "mdns4", "mdns",
+ "mdns_minimal", "mdns6", "mdns6_minimal" was found in the hosts line; that
+ is, manually configured /etc/nsswitch.conf were kept intact
+ - otherwise change the "dns" entry in /etc/hosts into:
+ "mdns_minimal dns mdns"
+
+Problems with this version:
+1) does not preserve spacing ("foo bar" becomes "foo bar") in many cases
+2) breaks local reaction overrides ("[STATUS=ACTION]") in many cases
+3) does not handle all versions (e.g. local versions, versions from Ubuntu)
+4) installs a configuration which does not match the upstream recommendations
+ for new installs or upgrades from >= 0.8-4.1
+5) removes any local or automatic configuration and breaks the mdns setup when
+ upgrading from versions 0.8-4.2 and 0.8-5
+6) results in ugly spacing when upgrading from versions 0.8-4.2 and 0.8-5 (note
+ the trailing space and the double space between files and dns):
+ hosts: files dns
+
--- End Message ---