X11

Mint 12:突觸包管理器錯誤

  • February 16, 2012

昨天我遇到了同樣的問題,我通過執行解決了

sudo synaptic

但是今天我不知道發生了什麼,如果我跑了,gksu synaptic或者gksudo synaptic他們什麼都不做。

如果我進入根目錄並執行這些命令或執行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我前兩天跑了。當我做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 ...

一種可能的解釋是,由於最近發生的一些變化,X cookie 文件的位置已從 更改~/.Xauthority$XAUTHORITY. X cookie 文件包含 X 應用程序在連接到 X 伺服器時必須提供的密碼。(有關更多背景資訊,請參閱此答案的第一部分。)

確保XAUTHORITY變數沒有被sudo. 執行visudo以將此行添加到sudoers文件中:

Defaults env_keep += XAUTHORITY

一個相關的可能性是,如果您XAUTHORITY的環境中沒有,X cookie 儲存在~/.Xauthority. 如果HOME環境變數沒有被 保存sudo,那麼在其下執行的 X 應用程序sudo將查看~root/.Xauthority哪個沒有正確的 cookie。有三種簡單的方法可以解決這個問題,從最方便到不太方便:

  • 關閉env_reset選項sudoers(當您可以作為目標使用者執行任意命令時,對 沒有真正的安全好處env_reset),並且不要打開set_home. 這樣,~/.Xauthorityundersudo仍然是指呼叫使用者的主目錄。
  • 告訴sudo保留XAUTHORITY上面的變數,並XAUTHORITY在你的 X 會話啟動文件中設置,即使它是預設值。
  • 使用會話XAUTHORITY內呼叫使用者的主目錄進行設置,例如通過執行sudo
sudo env XAUTHORITY=${XAUTHORITY:-~/.Xauthority} xterm

引用自:https://unix.stackexchange.com/questions/31599