Когда я бегу sudo
терминал зависает на несколько секунд, а затем выдает сообщение об ошибке. Мой терминал выглядит так:
ubuntu@(none):~$ sudo truesudo: unable to resolve host (none)
Что я могу сделать, чтобы решить эту проблему?
Когда я бегу sudo
терминал зависает на несколько секунд, а затем выдает сообщение об ошибке. Мой терминал выглядит так:
ubuntu@(none):~$ sudo truesudo: unable to resolve host (none)
Что я могу сделать, чтобы решить эту проблему?
Две вещи, которые нужно проверить (предполагая, что ваша машина вызвана my-machine
, вы можете изменить это по мере необходимости):
Что тот /etc/hostname
файл содержит только имя машины.
Тот /etc/hosts
имеет запись для localhost
. В нем должно быть что-то вроде:
127.0.0.1 localhost.localdomain localhost 127.0.1.1 моя машина
Если какой-либо из этих файлов неверен (поскольку вы не можете выполнить sudo), вам, возможно, придется перезагрузить компьютер в режим восстановления и внести изменения, а затем перезагрузиться в обычную среду.
Редактировать /etc/hosts
и добавьте свое новое имя хоста в строку 127.0.0.1 (или создайте новую строку, если вы так предпочитаете).
Мой выглядит как:
127.0.0.1 localhost localhost.localdomain penguin# The following lines are desirable for IPv6 capable hosts::1 ip6-localhost ip6-loopbackfe00::0 ip6-localnetff00::0 ip6-mcastprefixff02::1 ip6-allnodesff02::2 ip6-allrouters
Заменять penguin
в приведенном выше примере по вашему новому имени хоста, как указано в /etc/hostname
файл.
Добавьте свое имя хоста в /etc/hosts
вот так:
echo $(hostname -I | cut -d\ -f1) $(hostname) | sudo tee -a /etc/hosts
Обратите внимание, что это ответ на этот вопрос который был объединен с этим.
Ваше имя хоста (dave00-G31M-ES2L
) не представлен в /etc/hosts
. Добавьте L
к этой строке:
127.0.1.1 dave00-G31M-ES2
Таким образом, это становится:
127.0.1.1 dave00-G31M-ES2L
Для этого откройте консоль (нажмите Ctrl+Alt+T) и введите:
sudo gedit /etc/hosts
Добавьте букву L
как уже упоминалось, сохраните и выйдите.
У меня была эта проблема, когда я использовал ubuntu на VPS. Я решил это, отредактировав файл /etc/hosts.
выполните эту команду:
sudo nano /etc/hosts
а затем добавьте:
127.0.0.1 localhost.localdomain localhost127.0.1.1 ubuntu
Я надеюсь, что это решит вашу проблему :)
PS: Не забудьте перезагрузить свой компьютер!
У меня была та же проблема, хотя имя хоста в моем файле /etc/hostname и файле /etc/hosts совпадали.
Мое имя хоста было "staging_1". Оказывается, у вас не может быть подчеркивания в вашем имени хоста, вот почему я получал эту ошибку. Изменение подчеркивания на дефис устранило мою проблему.
В AWS перейдите на свой vpc и включите "DNS-имена хостов".
Симптом, указанный в вопросе, может сильно коррелировать с этой более конкретной проблемой:
$ hostname --fqdnhostname: Temporary failure in name resolution
Существуют различные способы решения этой проблемы, один из которых заключается в добавлении вашего имени хоста в качестве localhost в /etc/hosts
(как показано в нескольких других ответах). В целом это может быть правильным решением, но это не единственно возможное решение.
"Полное доменное имя" может быть предоставлено внешним DNS-сервером или аналогичным (если таковое доступно в вашей сети). В этом случае, sudo
не буду жаловаться, несмотря на пропущенную запись в /etc/hosts
.
Примечание: sudo
пытается разыменовать имя хоста, даже если это не обязательно требуется из-за дополнительных возможностей в файле sudoers. Видеть команда sudo пытается выполнить поиск имени хоста.
Пока задержка не слишком велика, это сообщение об ошибке обычно безвредно.
Все советуют изменить /etc/hosts
. Но в некоторых случаях это может быть невозможно (например, внутри контейнера docker). Итак, мне нужно было найти лучший способ, и я придумал это:
echo "alias sudo='sudo -h 127.0.0.1'" >> ~/.bash_aliasessource ~/.bashrc
Псевдонимы не работают в сценариях bash, но мы можем использовать переменные: sudo='sudo -h 127.0.0.1'
Я столкнулся с таким же сообщением об ошибке. Я думаю, что эта дискуссионная тема на форумах разработчиков AWS - лучшее решение:
"Перейдите в консоль управления VPC, выберите VPC, нажмите "Действия", выберите "Редактировать имена DNS-хостов" и выберите "Да"."
Я не рекомендую закрывать этот вопрос как * слишком локализованный*. Есть много пользователей, которые могут ошибочно подумать, что они ввели одно имя в свой файл “hosts”, но вместо этого ввели другое имя, тем более что во многих сетях компьютеры называются одинаково. Этот вопрос (и ответ) будет отображаться, когда кто-то будет искать с этой проблемой, и ответ побудит их проверить наличие таких несоответствий, даже если точное написание будет другим.
убедитесь, что ваше “имя хоста” совпадает с “hosts”. например, имя хоста ubuntu-pc и hosts ubuntu-pc должны быть одинаковыми.
Пожалуйста, опубликуйте содержимое файлов "/etc/hostname` и “/etc/hosts”.
Я не могу опубликовать ответ, потому что этот вопрос защищен, и у меня здесь недостаточно репутации. В моем случае я решил проблему, перезапустив network-manager: sudo /etc/init.d/network-manager restart
. Однако мне интересно, почему в первую очередь “sudo” тратит время на ожидание материалов, связанных с сетью. Разве “sudo” не должен работать без проблем, когда сеть недоступна?
Я столкнулся с этим сегодня. Проблема заключалась в том, что то, что у меня было в hostname, не было в /etc/hosts. А именно: $ hostname => ‘mybox’ $ grep ‘mybox’ /etc/hosts => 192.168.1.2 mybox.example.com . Мне нужно было добавить “mybox” после моего доменного имени в /etc/hosts => 192.168.1.2 mybox.example.com моя коробка
Why does the question have <USER>- в конце? Это противоречит фактическому результату, показанному в теле вопроса как "(нет)
Предложение по улучшению: удалить `
@arielf Вы можете улучшить вопросы здесь. Он был изменен другим пользователем. Я тоже не знаю.