Resolvconf -u выдает ошибку «resolvconf: Ошибка: /etc/resolv.conf должен быть символической ссылкой»

13

Я использую resolvconf для установки статических DNS-серверов /etc/resolv.conf. Однако, когда я запускаю sudo resolvconf -uобновление /etc/resolv.confс новой статической информацией, я получаю ошибку «resolvconf: Error: /etc/resolv.conf должно быть символической ссылкой». Как я могу это исправить?

Azendale
источник

Ответы:

21

Это легко исправить. Просто откройте терминал и выполните следующие команды:

sudo rm /etc/resolv.conf
sudo ln -s ../run/resolvconf/resolv.conf /etc/resolv.conf
sudo resolvconf -u
Azendale
источник
1
Эта информация устарела. /etc/resolv.conf теперь должен быть связан с ../run/resolvconf/resolv.conf.
Jdthood
Утверждение, что сообщение об ошибке вызвано прерванным запуском resolvconf, является ложным.
Jdthood
1
Теперь это правильно. :)
JDThood
2
@jdthood: зачем это ../нужно? Почему бы нам не использовать sudo ln -s /run/resolvconf/resolv.conf /etc/resolv.conf?
Басж
2
@Basj Разница в том, что она делает символическую ссылку относительной: читайте ее как что-то вроде «перейти в папку, затем« запустить », затем« resolvconf », затем в файл« resolv.conf »». Я предполагаю, что так или иначе работает, но зачем жестко задавать путь? Что если вы работаете с контейнерами LXC (где корневая ФС находится в папке)? Затем, открыв ссылку с хоста LXC, вы попадете в неверный файл, если вы указали абсолютный путь.
Азендейл,
11

Начиная с Ubuntu 12.04 resolvconf является частью базовой системы. Вы можете восстановить нужную символическую ссылку, запустив

dpkg-reconfigure resolvconf

или сделав следующее в терминале.

sudo ln -nsf ../run/resolvconf/resolv.conf /etc/resolv.conf

Обратите внимание, что с Ubuntu 12.10 resolvconf больше не прерывается, если /etc/resolv.conf не является символической ссылкой. Он выводит предупреждающее сообщение, но его можно отключить, поставив строку

REPORT_ABSENT_SYMLINK=no

в / etc / default / resolvconf.

jdthood
источник
Я предполагаю, что выполнение dpkg-reconfigureкоманды изменится /etc/resolv.confна символическую ссылку, даже если обычный файл находится в /etc/resolv.conf? Кроме того, вы должны удалить, /etc/resolv.confпрежде чем делать ln? Я получаю сообщение об ошибке, пытаясь сделать это в своей системе, но, опять же, у меня не было ошибки, описанной в этом вопросе, когда я пытался это сделать.
Азендейл
Да, при запуске «dpkg-reconfigure resolvconf» файл /etc/resolv.conf возвращается обратно в символическую ссылку, и если там был файл; он сохраняет копию исходного файла в /etc/resolvconf/resolv.conf.d/original. Хорошей идеей будет удалить /etc/resolv.conf, прежде чем помещать туда символическую ссылку, но если вы используете "ln -nsf", делать это не обязательно. Я только что изменил ответ, чтобы сказать «ln -nsf» вместо «ln -s».
Jdthood
0

rm -r resolv.conf
nano resolv.conf в нем делает

nameserver 1.1.1.1

nameserver 1.0.0.1

сохраните его с помощью Ctrl + X.

после этого выполните: sudo apt-get install openresolv

после этого: перезагрузите компьютер, он будет работать.

Я потратил 4 часа на отладку. Это, безусловно, будет работать, если вы делаете это хорошо

Tarling
источник
1
почему ты кричишь?
Pierre.Vriens