GNU bug report logs -
#26809
08/09: services: nscd: Create /etc/resolv.conf if it does not exist.
Previous Next
Reported by: Mark H Weaver <mhw <at> netris.org>
Date: Sun, 7 May 2017 04:21:02 UTC
Severity: normal
Done: ludo <at> gnu.org (Ludovic Courtès)
Bug is archived. No further changes may be made.
Full log
View this message in rfc822 format
[Message part 1 (text/plain, inline)]
Your bug report
#26809: 08/09: services: nscd: Create /etc/resolv.conf if it does not exist.
which was filed against the guix package, has been closed.
The explanation is attached below, along with your original report.
If you require more details, please reply to 26809 <at> debbugs.gnu.org.
--
26809: http://debbugs.gnu.org/cgi/bugreport.cgi?bug=26809
GNU Bug Tracking System
Contact help-debbugs <at> gnu.org with problems
[Message part 2 (message/rfc822, inline)]
Mark H Weaver <mhw <at> netris.org> skribis:
> ludo <at> gnu.org (Ludovic Courtès) writes:
>
>> civodul pushed a commit to branch master
>> in repository guix.
>>
>> commit 49f9d7f697d19870f01104cdb6a90a32aea87679
>> Author: Ludovic Courtès <ludo <at> gnu.org>
>> Date: Tue May 2 12:21:31 2017 +0200
>>
>> services: nscd: Create /etc/resolv.conf if it does not exist.
>>
>> * gnu/services/base.scm (nscd-activation): Create /etc/resolv.conf if it
>> does not exist yet.
>
> This commit broke the boot process on my system. The problem is that
> I'm using Network Manager, which makes /etc/resolv.conf into a symlink
> that points to /var/run/NetworkManager/resolv.conf. Since /var/run is
> cleaned during early boot, when this new activation code runs,
> /etc/resolv.conf is a broken symlink.
>
> I guess that 'file-exists?' returns #false for a broken symlink, and the
> 'call-with-output-file' tries to open the target of the symlink, which
> fails.
Indeed. I guess this is fixed by
c298fb133acbdc17e05a79c10ab9a9e214368264.
Thanks,
Ludo’.
[Message part 3 (message/rfc822, inline)]
ludo <at> gnu.org (Ludovic Courtès) writes:
> civodul pushed a commit to branch master
> in repository guix.
>
> commit 49f9d7f697d19870f01104cdb6a90a32aea87679
> Author: Ludovic Courtès <ludo <at> gnu.org>
> Date: Tue May 2 12:21:31 2017 +0200
>
> services: nscd: Create /etc/resolv.conf if it does not exist.
>
> * gnu/services/base.scm (nscd-activation): Create /etc/resolv.conf if it
> does not exist yet.
This commit broke the boot process on my system. The problem is that
I'm using Network Manager, which makes /etc/resolv.conf into a symlink
that points to /var/run/NetworkManager/resolv.conf. Since /var/run is
cleaned during early boot, when this new activation code runs,
/etc/resolv.conf is a broken symlink.
I guess that 'file-exists?' returns #false for a broken symlink, and the
'call-with-output-file' tries to open the target of the symlink, which
fails.
Mark
> diff --git a/gnu/services/base.scm b/gnu/services/base.scm
> index 67972bf..a64faa0 100644
> --- a/gnu/services/base.scm
> +++ b/gnu/services/base.scm
> @@ -1149,7 +1149,14 @@ the tty to run, among other things."
> #~(begin
> (use-modules (guix build utils))
> (mkdir-p "/var/run/nscd")
> - (mkdir-p "/var/db/nscd"))) ;for the persistent cache
> + (mkdir-p "/var/db/nscd") ;for the persistent cache
> +
> + ;; In libc 2.25 nscd uses inotify to watch /etc/resolv.conf, but only if
> + ;; that file exists when it is started. Thus create it here.
> + (unless (file-exists? "/etc/resolv.conf")
> + (call-with-output-file "/etc/resolv.conf"
> + (lambda (port)
> + (display "# This is a placeholder.\n" port))))))
>
> (define nscd-service-type
> (service-type (name 'nscd)
This bug report was last modified 8 years and 52 days ago.
Previous Next
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.