Kit*_*nde 882 sudo error-handling
当我运行时sudo
,终端卡住了几秒钟,然后输出错误消息。我的终端看起来像这样:
ubuntu@(none):~$ sudo true
sudo: unable to resolve host (none)
Run Code Online (Sandbox Code Playgroud)
我能做些什么来解决它?
Jer*_*err 1197
需要检查两件事(假设您的机器名为my-machine
,您可以根据需要进行更改):
该/etc/hostname
文件仅包含机器的名称。
那/etc/hosts
有一个条目localhost
。它应该有类似的东西:
127.0.0.1 localhost.localdomain 本地主机 127.0.1.1 我的机器
如果这些文件中的任何一个不正确(因为您不能 sudo),您可能必须将机器重新启动到恢复模式并进行修改,然后重新启动到您通常的环境。
Lek*_*eyn 223
编辑 /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-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
Run Code Online (Sandbox Code Playgroud)
用文件penguin
中所述的新主机名替换上面的示例/etc/hostname
。
Col*_*son 79
添加您的主机名,/etc/hosts
如下所示:
echo $(hostname -I | cut -d\ -f1) $(hostname) | sudo tee -a /etc/hosts
Run Code Online (Sandbox Code Playgroud)
Tho*_*hor 36
您的主机名 ( dave00-G31M-ES2L
) 未在/etc/hosts
. 添加L
到这一行:
127.0.1.1 dave00-G31M-ES2
Run Code Online (Sandbox Code Playgroud)
所以就变成了:
127.0.1.1 dave00-G31M-ES2L
Run Code Online (Sandbox Code Playgroud)
为了实现这一点,打开一个控制台(按Ctrl+ Alt+ T)并输入:
sudo gedit /etc/hosts
Run Code Online (Sandbox Code Playgroud)
添加L
提到的字母,保存并退出。
Luc*_*ico 19
我在 VPS 上使用 ubuntu 时遇到了这个问题。我解决了它编辑 /etc/hosts 文件。
运行这个命令:
sudo nano /etc/hosts
Run Code Online (Sandbox Code Playgroud)
然后添加:
127.0.0.1 localhost.localdomain localhost
127.0.1.1 ubuntu
Run Code Online (Sandbox Code Playgroud)
我希望这能解决你的问题:)
PS:记得重启电脑!
小智 14
即使我的 /etc/hostname 文件和 /etc/hosts 文件中的主机名匹配,我也遇到了同样的问题。
我的主机名是“staging_1”。事实证明,您的主机名中不能有下划线,这就是我收到此错误的原因。将下划线更改为连字符解决了我的问题。
小智 11
在 AWS 中,转到您的 vpc 并打开“DNS 主机名”。
nob*_*bar 10
问题中给出的症状可能与这个更具体的问题密切相关:
$ hostname --fqdn
hostname: Temporary failure in name resolution
Run Code Online (Sandbox Code Playgroud)
有多种方法可以解决此问题,其中一种方法是将您的主机名添加为 localhost /etc/hosts
(如其他几个答案所示)。一般来说,这可能是正确的做法,但这不是唯一可能的解决方案。
“完全限定域名”可能由外部 DNS 服务器或类似服务器提供(如果您的网络上可用)。在这种情况下,sudo
尽管缺少/etc/hosts
.
注意:sudo
由于 sudoers 文件中的可选功能,尝试取消引用主机名,即使它不是必需的。请参阅尝试搜索主机名的 sudo 命令。
只要延迟不是太长,此错误消息通常是无害的。
小智 6
我遇到了同样的错误消息。我认为 AWS 开发人员论坛上的这个讨论主题是一个更好的解决方案:
“转到 VPC 管理控制台,选择 VPC,单击操作,选择编辑 DNS 主机名并选择是。”
https://forums.aws.amazon.com/thread.jspa?messageID=699718
小智 6
在您关闭并重新启动模拟器之前,某些终端模拟器不会使用正确的主机名更新提示(lxterminal,我正在与您交谈)。
在编辑我的主机名和主机文件并运行之后,我花了 30 分钟来解决这个错误,sudo service hostname restart
直到我运行sudo hostname
并看到主机名是新值,即使提示显示的是旧值。
小智 6
大家建议修改/etc/hosts
。但在某些情况下,这可能是不可能的(例如在 docker 容器内)。所以,我必须找到一个更好的方法,我想出了这个:
echo "alias sudo='sudo -h 127.0.0.1'" >> ~/.bash_aliases
source ~/.bashrc
Run Code Online (Sandbox Code Playgroud)
别名在 bash 脚本中不起作用,但我们可以使用变量: sudo='sudo -h 127.0.0.1'
小智 5
就我而言,这是问题所在,我将其更改为hostname
,man
因为我想知道是否有一些参数可以在hostname
. 相反,它改变了我hostname
的man
,我总是收到和你一样的消息
sudo: unable to resolve host (none)
Run Code Online (Sandbox Code Playgroud)
将主机名改回`localhost 后一切正常
hostname localhost
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1187730 次 |
最近记录: |