昨天我有同样的问题,我通过运行解决了这个问题
sudo synaptic
但今天我不知道发生了什么,是我跑步gksu synaptic
还是gksudo synaptic
他们不采取任何行动。
如果我转到 root 并执行这些命令或执行sudo synaptic
,我会看到:
sudo synaptic
No protocol specified
(synaptic:32377): Gtk-WARNING **: cannot open display: :0.0
编辑:@Nunoxic
我正在本地计算机上工作。当我做的时候,sudo apt-get update
有些东西会更新,有些东西不会更新
E: Some index files failed to download. They have been ignored, or old ones used instead.
我sudo apt-get update
2天前跑步了。当我做的echo $DISPLAY
输出是:0
@吉尔斯
的输出echo $XAUTHORITY
什么也没有:)
的输出sudo env | sort
是
COLORTERM=gnome-terminal
DISPLAY=:0.0
HOME=/root
LANG=en_US.UTF-8
LANGUAGE=en_US:en
LC_COLLATE=en_US.UTF-8
LC_CTYPE=en_US.UTF-8
LC_MESSAGES=en_US.UTF-8
LOGNAME=root
MAIL=/var/mail/root
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/X11R6/bin
SHELL=/bin/bash
SUDO_COMMAND=/usr/bin/env
SUDO_GID=0
SUDO_UID=0
SUDO_USER=root
TERM=xterm
USERNAME=root
USER=root
的输出sudo xterm
是
No protocol specified
Warning: This program is an suid-root program or is being run by the root user.
The full text of the error or warning message cannot be safely formatted
in this environment. You may get a more descriptive message by running the
program as a non-root user or by removing the suid bit on the executable.
xterm Xt error: Can't open display: %s
编辑
的输出 XAUTHORITY=~/.Xauthority; sudo xterm
是
No protocol specified
Warning: This program is an suid-root program or is being run by the root user.
The full text of the error or warning message cannot be safely formatted
in this environment. You may get a more descriptive message by running the
program as a non-root user or by removing the suid bit on the executable.
xterm Xt error: Can't open display: %s
的输出sudo -s9999 strace xterm
是
sudo: invalid option -- '9'
usage: sudo -h | -K | -k | -L | -V
usage: sudo -v [-AknS] [-g groupname|#gid] [-p prompt] [-u user name|#uid]
usage: sudo -l[l] [-AknS] [-g groupname|#gid] [-p prompt] [-U user name] [-u
user name|#uid] [-g groupname|#gid] [command]
usage: sudo [-AbEHknPS] [-C fd] [-g groupname|#gid] [-p prompt] [-u user
name|#uid] [-g groupname|#gid] [VAR=value] [-i|-s] [<command>]
usage: sudo -e [-AknS] [-C fd] [-g groupname|#gid] [-p prompt] [-u user
name|#uid] file ...
答案1
一种可能的解释是,由于最近的一些更改,X cookie 文件的位置已从 更改~/.Xauthority
为 指示的某个位置$XAUTHORITY
。 X cookie 文件包含 X 应用程序在连接到 X 服务器时必须提供的密码。 (参见第一部分这个答案了解更多背景。)
确保XAUTHORITY
变量没有被删除sudo
。运行visudo
以将此行添加到sudoers
文件中:
Defaults env_keep += XAUTHORITY
一个相关的可能性是,如果您的环境中没有XAUTHORITY
X cookie,则 X cookie 存储在~/.Xauthority
.如果HOME
环境变量没有被 保留sudo
,那么运行在下面的 X 应用程序sudo
将查找~root/.Xauthority
哪个没有正确的 cookie。有三种简单的方法可以解决这个问题,从最方便到不太方便:
- 关闭该
env_reset
选项sudoers
(当您可以作为目标用户运行任意命令时,没有真正的安全优势env_reset
),并且不要打开set_home
。这样,~/.Xauthority
undersudo
仍然指调用用户的主目录。 - 告诉
sudo
您保留XAUTHORITY
上面的变量,并XAUTHORITY
在 X 会话启动文件中进行设置,即使它是默认值。 XAUTHORITY
使用会话内调用用户的主目录进行设置sudo
,例如通过运行sudo env XAUTHORITY=${XAUTHORITY:-~/.Xauthority} xterm