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

Axel Beckert abe at debian.org
Wed Jan 14 15:18:26 UTC 2015


Hi,

Thomas Hood wrote:
> On 14 January 2015 at 15:08, Vincent Lefevre <vincent at vinc17.net> wrote:
> > On 2015-01-14 14:14:22 +0100, Thomas Hood wrote:
> >> This is an allowed configuration (which is sometimes even useful). [...]
> >
> > OK, but this is a very atypical usage for users of wicd, whose goal
> > is to make things work without needing to be root. So what about an
> > option for /etc/default/resolvconf to force the link creation when
> > using dhclient?
> 
> 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.

> >> 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')

And from /usr/share/pyshared/wicd/wnettools.py:

    679         if self.resolvconf_cmd:
    680             cmd = [self.resolvconf_cmd, '-a', self.iface]
    681             if self.verbose: print cmd
    682             p = misc.Run(cmd, include_stderr=True, return_obj=True)
    683             p.communicate(input=resolv_params)
    684         else:
    685             resolv = open("/etc/resolv.conf", "w")
    686             resolv.write(resolv_params + "\n")
    687             resolv.close()

Looks all sane to me.

		Regards, Axel
-- 
 ,''`.  |  Axel Beckert <abe at debian.org>, http://people.debian.org/~abe/
: :' :  |  Debian Developer, ftp.ch.debian.org Admin
`. `'   |  4096R: 2517 B724 C5F6 CA99 5329  6E61 2FF9 CD59 6126 16B5
  `-    |  1024D: F067 EA27 26B9 C3FC 1486  202E C09E 1D89 9593 0EDE



More information about the Resolvconf-devel mailing list