Resolvconf -u 给出错误“resolvconf:错误:/etc/resolv.conf 必须是符号链接”

Aze*_*ale 18 networking resolv.conf

我使用 resolvconf 将静态 DNS 服务器设置在/etc/resolv.conf. 但是,当我运行sudo resolvconf -u/etc/resolv.conf使用新的静态信息进行更新时,出现错误“resolvconf:错误:/etc/resolv.conf 必须是符号链接”。我怎样才能解决这个问题?

Aze*_*ale 31

很容易修复。只需打开一个终端并运行以下命令:

sudo rm /etc/resolv.conf
sudo ln -s ../run/resolvconf/resolv.conf /etc/resolv.conf
sudo resolvconf -u
Run Code Online (Sandbox Code Playgroud)

  • @jdthood:为什么需要`../`?为什么我们不应该使用`sudo ln -s /run/resolvconf/resolv.conf /etc/resolv.conf`? (3认同)
  • @Basj 不同之处在于它使符号链接相对:将其理解为“上一个文件夹,然后'运行',然后'resolvconf',然后到文件'resolv.conf'”。我猜任何一种方式都有效,但为什么要硬编码路径?如果您使用 LXC 容器(根 FS 位于文件夹中)怎么办?如果您使用了绝对路径,那么从 LXC 主机打开链接将带您到错误的文件。 (2认同)

jdt*_*ood 12

从 Ubuntu 12.04 开始,resolvconf 是基本系统的一部分。您可以通过运行重新创建所需的符号链接

dpkg-reconfigure resolvconf
Run Code Online (Sandbox Code Playgroud)

或通过在终端中执行以下操作。

sudo ln -nsf ../run/resolvconf/resolv.conf /etc/resolv.conf
Run Code Online (Sandbox Code Playgroud)

请注意,从 Ubuntu 12.10 开始,如果 /etc/resolv.conf 不是符号链接,则 resolvconf 不再中止。它确实打印了一条警告消息,但是可以通过放置该行来使其静音

REPORT_ABSENT_SYMLINK=no
Run Code Online (Sandbox Code Playgroud)

在 /etc/default/resolvconf.conf 中