[Resolvconf-devel] Bug#773749: Resolvconf vs wicd

Vincent Lefevre vincent at vinc17.net
Wed Jan 14 16:33:24 UTC 2015


On 2015-01-14 15:24:53 +0100, Thomas Hood wrote:
> It's up to the admin to change things in /etc/. Programs that play
> around with things in /etc/ at runtime are not well behaved by Debian
> standards.

dhclient does this by default.

> > Otherwise the user needs to modify
> > /etc/dhcp/dhclient-enter-hooks.d/resolvconf to get this behavior.
> 
> Now I have the feeling I'm missing something. Is there some reason
> that the symlink at /etc/resolv.conf has to be created at run time?
> Why can't the administrator just do "ln -s /run/resolvconf/resolv.conf
> /etc/resolv.conf" to restore the symlink?

This is now done, but just in case the symlink gets removed again.
I don't want to waste my time finding why the network doesn't work.

On 2015-01-14 16:18:26 +0100, Axel Beckert wrote:
> Thomas Hood wrote:
> > It's up to the admin to change things in /etc/. Programs that play
> > around with things in /etc/ at runtime are not well behaved by Debian
> > standards.
> 
> Depends. I agree for anything in the maintainer scripts, but I
> disagree for anything which can be seen as (configuration) editor.
> 
> From my point of view, wicd acts as configuration editor (or profile
> chooser + editor) on behalf of the local administrator, at least for
> static DNS servers, search domains, IP addresses, etc.

Exactly my point.

> > >> When the resolvconf package is initially installed it optionally and
> > >> by default creates the symlink at /etc/resolv.conf,
> > >
> > > But the symlink got removed for some reason I ignore. I'm wondering
> > > whether wicd was the cause (with the code related to the backup file).
> 
> Interesting idea. I agree that editing that file is the proper way.
> From what I saw of wicd's code, I remembered a "move":
> 
> /usr/share/wicd/daemon/wicd-daemon.py:1763: shutil.move(backup_location, '/etc/resolv.conf')
> 
> But that's a) only the reverse direction and b) wicd cares about
> symlinks in both directions:
> 
>    1705         if not os.path.exists(backup_location):
>    1706             if os.path.islink('/etc/resolv.conf'):
>    1707                 dest = os.readlink('/etc/resolv.conf')
>    1708                 os.symlink(dest, backup_location)
>    1709             else:
>    1710                 shutil.copy2('/etc/resolv.conf', backup_location)
>    […]
>    1757             backup_location = wpath.varlib + 'resolv.conf.orig'
>    1758             if os.path.islink(backup_location):
>    1759                 dest = os.readlink(backup_location)
>    1760                 os.remove('/etc/resolv.conf')
>    1761                 os.symlink(dest, '/etc/resolv.conf')
>    1762             else:
>    1763                 shutil.move(backup_location, '/etc/resolv.conf')

I'm not convinced. It seems that /etc/resolv.conf is "restored"
when wicd is killed. But what if /etc/resolv.conf has changed
while wicd was running? Typically, wicd is running and one installs
resolvconf, which creates the /etc/resolv.conf symlink.

Otherwise the problem could have come from an old version. I'm also
wondering whether network-manager got installed for a short period
due to a dependency from a GNOME application; I don't know what it
does with /etc/resolv.conf when the package is installed.

-- 
Vincent Lefèvre <vincent at vinc17.net> - Web: <https://www.vinc17.net/>
100% accessible validated (X)HTML - Blog: <https://www.vinc17.net/blog/>
Work: CR INRIA - computer arithmetic / AriC project (LIP, ENS-Lyon)



More information about the Resolvconf-devel mailing list