更改主机名gedit
未按预期工作后,它始终在我的根目录中显示错误“未指定协议”
** (gedit:23330): WARNING **: Could not open X display
No protocol specified
Cannot open display:
Run 'gedit --help' to
答案 0 :(得分:23)
不仅gedit
会失败,而且实际上所有使用X11协议的程序都与图形服务器通信。 X11使用Xauth协议对连接客户端进行身份验证。当您通过某种显示管理器登录时,会创建MIT-MAGIC-COOKIE-1
身份验证cookie并将其写入您的~/.Xauthority
文件。该文件由X11客户端读取,其中可用的cookie用于验证连接。
~/.Xauthority
文件中的Cookie列表可以使用xauth list
显示:
$ xauth list
localhost:1012 MIT-MAGIC-COOKIE-1 bd988401cbf8xxxxxxxxxxxxxxxxxxxx
some.host.example.com/unix:1012 MIT-MAGIC-COOKIE-1 bd988401cbf8xxxxxxxxxxxxxxxxxxxx
如果更改主机名,X11客户端库将无法再在身份验证数据库中找到匹配的cookie,X11服务器将拒绝未经身份验证的连接(除非另有配置)。
您可以使用xauth
添加匹配的Cookie:
$ xauth add "$(hostname)/unix:0" MIT-MAGIC-COOKIE-1 bd988401cbf8xxxxxxxxxxxxxxxxxxxx
$(hostname)
扩展为hostname
命令的结果,unix:0
对应于您设置为DISPLAY
的{{1}}环境变量。如果是另一个显示号码,例如:0.0
,然后您应该将添加的主机条目相应地更改为:ddd.0
。另请注意,添加的cookie的值应与现有cookie的值匹配。
如果您当时没有打开终端仿真程序并且由于身份验证错误而无法打开终端仿真程序,则可以切换到控制台(文本模式),登录并执行上述命令。
答案 1 :(得分:0)
只需重启机器即可更改主机名。
答案 2 :(得分:0)
jnweiger commented Aug 13, 2014:
Xauthority文件可以用主机名的方式编写 无所谓。
我不确定,如果
xauth
有适当的命令行来指定 身份验证系列,但我使用sed
切换到身份验证 家庭' FamilyWild' 。我们需要改变前16位nlist
输出。 FamilyWild 的值为65535
或0xffff
。xauth nlist :0 | sed -e 's/^..../ffff/' | xauth nmerge -
在这种情况下,在家庭编号(通常是主机名等)之后写的字符串对于匹配无关紧要。
在ALT的xauth包中,最近已应用patch来支持通过xauth
直接添加此类 FamilyWild 条目{ {1}}参数:
*:0
答案 3 :(得分:-1)
当我更改笔记本电脑的名称时,我也遇到了这个问题。 但是我设法使用以下命令修复它
su
(输入密码)
cd /etc
gedit hosts
从那里,我只是删除了对旧计算机名称的引用,并将其替换为新的。
127.x.x.x localhost
127.x.x.x (New Name)
但请注意,无论何时更改计算机名称,都必须确保在/etc/hostname
文件和/etc/host
文件中进行更改。如果您在不进行另一次更改的情况下进行1次更改,则会出现错误。