Unexpected behavior: make_resolv_conf is not undefined if /etc/resolv.conf is not a symlink
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
| resolvconf (Ubuntu) |
Undecided
|
Unassigned |
Bug Description
The resolvconf package comes with /etc/dhcp/
However, the hook also checks if /etc/resolv.conf is a symlink. This is problematic because if /etc/resolv.conf is not a symlink then the script does not redefine make_resolv_conf() and so dhclient will overwrite /etc/resolv.conf when it configures an interface, even though the resolvconf package is installed.
The behavior I would expect would be /etc/resolv.conf never changing if resolvconf is installed and /etc/resolv.conf is not a symlink.
Debian implements the behavior I would expect.
At the very least, I think that the different behavior in Ubuntu should be documented in the man pages for resolvconf.
As far as I can tell, there's no reason to check for /etc/resolv.conf being a symlink when resolvconf itself already does that.
The patch was introduced by: http://
Related branches
description: | updated |
Thomas Hood (jdthood) wrote : | #1 |
summary: |
- unexpected behavior: make_resolv_conf not undefined + Unexpected behavior: make_resolv_conf is not undefined if + /etc/resolv.conf is not a symlink |
description: | updated |
Alan (asbraithwaite+launchpad) wrote : | #2 |
Thanks @jdthood !
I figured there could be some arcane reason why the symlink check would be there on Ubuntu but not Debian, but I couldn't fathom why after reading through the entire hook.
Also, thanks for cleaning up the report! :D
Launchpad Janitor (janitor) wrote : | #3 |
Status changed to 'Confirmed' because the bug affects multiple users.
Changed in resolvconf (Ubuntu): | |
status: | New → Confirmed |
Launchpad Janitor (janitor) wrote : | #4 |
This bug was fixed in the package resolvconf - 1.77ubuntu1
---------------
resolvconf (1.77ubuntu1) wily; urgency=medium
* Merge with Debian unstable. Remaining Ubuntu changes:
- debian/postinst: Make /etc/resolv.conf a relative symlink so that it
works when setting up chroots.
- Eliminate all references to /etc/resolvconf
directly in /run, there is no reason to support making any of this
configurable with a symlink since we already have a versioned dependency
on the version of initscripts that introduces the /run transition.
* Clean up some merge delta, thanks to Thomas Hood for reviewing!
- Put back debian/triggers (should have been re-added as part of fixing
LP #1453185)
- Drop symlink check in dhclient-
dhclient overwriting /etc/resolv.conf when resolvconf is installed.
(LP: #1385010)
- resolvconf/
false; it's rather irrelevant as we install resolvconf by default.
resolvconf (1.77) unstable; urgency=low
* [0781847] interface-order: match br ifaces at the same
priority as eth ifaces (see LP#1446681)
* Remove obsolete upgrade code
* [00ad4bf] Override immutability attrib on /etc/resolv.conf
if dnssec-trigger is installed. See #776778 for background.
-- Martin Pitt <email address hidden> Mon, 01 Jun 2015 08:42:43 +0200
Changed in resolvconf (Ubuntu): | |
status: | Confirmed → Fix Released |
Thomas Hood (jdthood) wrote : | #5 |
Yay.
We may now get a complaint from someone who has deleted the symlink at /etc/resolv.conf but still has resolvconf installed and relies upon dhclient updating /etc/resolv.conf dynamically. Their problem: /etc/resolv.conf is no longer updated after resolvconf is upgraded to 1.77ubuntu1. Solution for this person: they should remove the (unused) resolvconf package. Or change dhclient-
You are right. In the Debian version, the script is activated by "test -x /sbin/resolvconf" where the presence of /sbin/resolvconf indicates that the resolvconf package is installed. The convention in Debian is: "If the resolvconf package is installed then disable your default resolv. conf-updating behaviors and instead send the information to /sbin/resolvconf". In Debian the convention is furthermore that other packages should NOT check whether or not /etc/resolv.conf is a symlink and do things to /etc/resolv.conf if it isn't a symlink. In Debian, installing resolvconf and deleting the symlink at /etc/resolv.conf is a way of configuring the system such that the file is not updated by anything.
Unlike Debian, Ubuntu includes resolvconf in the base install. Furthermore Ubuntu has been afflicted by mysterious bug #1000244 which is the problem that in rare cases /etc/resolv.conf fails to be a symlink after resolvconf is installed. So perhaps there was a pragmatic reason for Ubuntu to make a change whose effect is to restore dhclient's default behavior when /etc/resolv.conf is not a symlink.
Nevertheless, as the Debian maintainer of resolvconf, I agree with you. :)