在 14.04 上更改主机名后,我无法启动 unetbootin,尝试从 bash 启动该应用程序返回:
_IceTransSocketUNIXConnect: Cannot connect to non-local host OLDHOSTNAME _IceTransSocketUNIXConnect: Cannot connect to non-local host OLDHOSTNAME Qt: Session management error: Could not open network socket
输出hostname
cat /etc/hostname
和cat /etc/hosts
全部确认主机名正确。我还在进行更改后重新启动了系统,以确认所有内容都已加载新设置。
我不知所措,任何帮助都非常感谢!另外,有人能提供一些关于 IceTransSocketUNIXConnect 的背景知识以及它的工作原理吗?它和 Winsock 有什么相似之处吗?
答案1
看来这个错误源自 ~/.ICEauthority 文件。您可以使用命令iceauth list
列出您的条目。在我的情况下,包括旧主机名localhost
,将其替换为您的旧主机名。
例如iceauth list | grep localhost
:
XSMP "" unix/localhost@localdomain:/tmp/.ICE-unix/2640 MIT-MAGIC-COOKIE-1 7035f3aebe650bd72315b76819267a9d
XSMP "" 本地/localhost@localdomain:@/tmp/.ICE-unix/2640 MIT-MAGIC-COOKIE-1 abe16eba34a1cf69087aff88bdd14a1a
ICE "" 本地/localhost@localdomain:@/tmp/.ICE-unix/2640 MIT-MAGIC-COOKIE-1 1e69a0d48b1f1375167c79bffbbfa06e ICE ""
unix/localhost@localdomain:/tmp/.ICE-unix/2640 MIT-MAGIC-COOKIE-1 f91ab2525bf0000159161db41df1aa0c
2 个选项:
- 简单 - 删除 ~/.ICEauthority 文件并重新启动机器或显示管理器。~/.ICEauthority 将使用您的新主机名重新生成。
- 高级 - 用于
iceauth remove
删除错误条目,然后重新启动显示管理器(14.04 默认 = lightdm)。只需将上面的 grep 中的行复制粘贴到下面的示例中,即可删除 XSMP 和 ICE 协议条目。iceauth -v remove netid=unix/localhost@localdomain:/tmp/.ICE-unix/2640
iceauth -v remove netid=local/localhost@localdomain:@/tmp/.ICE-unix/2640
iceauth list | grep localhost
# 确认它们已被删除。sudo restart lightdm
# @看这个答案了解更多详情,或者如果这对你不起作用
进一步阅读man iceauth
:
列表
列出(打印)权威文件中的条目。您可以指定以下可选修饰符来指定列出哪些条目。
列表 [ 协议名称 ] [ 协议数据 ] [ 网络标识 ] [ 身份验证名称 ]
消除
从规范文件中删除条目。
删除 [ 协议名称 ] [ 协议数据 ] [ 网络标识 ] [ 身份验证名称 ]
来源:
https://superuser.com/questions/714015/accidentally-deleted-iceauthority-and-xauthority-files
https://codeyarns.com/2015/03/23/cannot-connect-to-non-local-host-error/
https://linux.die.net/man/1/iceauth
如何从命令行重新启动 X Window Server?