sudo /usr/local/bin/tlmgr -gui
我在使用 Gnome 3 的 OpenSUSE Tumbleweed 上收到(TeX Live 2017 管理器)的完整错误消息:
No protocol specified
perl/Tk unusable, cannot create main windows.
That could be a consequence of not having X Windows installed or started!
Error message from creating MainWindow:
couldn't connect to display ":0" at /usr/lib/perl5/vendor_perl/5.24.1/x86_64-linux-thread-multi/Tk/MainWindow.pm line 53.
Tk::MainWindow->new() at /usr/local/bin/tlmgr line 4704.
启动它时没有这样的错误消息sudo
(尽管我在系统范围内安装了它,但不能以这种方式使用它)。
同样的结果如果
- 正在做
sudo -H
- 在里面做
sudo -i
(应该和AFAIK一样sudo -H
) - 使用
pkexec
而不是sudo
(显然gksu
/的新替代品gksudo
?)
然后我尝试聪明地玩弄 X 权限文件(从诸如https://unix.stackexchange.com/a/8250):
ln -s /run/user/1000/gdm/Xauthority /root/.Xauthority
# inside sudo -i then
export XAUTHORITY=/root/.Xauthority
之后,我收到以下前两行的错误消息(其余部分与以前相同):
Invalid MIT-MAGIC-COOKIE-1 keyperl/Tk unusable, cannot create main windows.
That could be a consequence of not having X Windows installed or started!
输出xauth list
:
linux-q1xc/unix: MIT-MAGIC-COOKIE-1 fa445a3c038b19300e8e45d4ae0ae55a
#ffff#6c696e75782d71317863#: MIT-MAGIC-COOKIE-1 fa445a3c038b19300e8e45d4ae0ae55a
为了sudo xauth list
:
linux-q1xc/unix:10 MIT-MAGIC-COOKIE-1 7e608058d97a6bf4ae346879f4f5fd46
为了ssh -X localhost xauth list
:
linux-q1xc/unix:10 MIT-MAGIC-COOKIE-1 faaf2ba1724d5efe85aa5ef6cb4fcc52
为了ssh -X root@localhost xauth list
:
linux-q1xc/unix:10 MIT-MAGIC-COOKIE-1 e8168ff05f56458663f187ec38f744fe
后sudo ln -sf ~/.Xauthority /root
输出xauth list
:
linux-q1xc/unix: MIT-MAGIC-COOKIE-1 fa445a3c038b19300e8e45d4ae0ae55a
#ffff#6c696e75782d71317863#: MIT-MAGIC-COOKIE-1 fa445a3c038b19300e8e45d4ae0ae55a
输出sudo xauth list
:
linux-q1xc/unix:10 MIT-MAGIC-COOKIE-1 faaf2ba1724d5efe85aa5ef6cb4fcc52
错误消息又是第一条。
xauth list
内部su -
或使用输出sudo -E
(两者都有效):
linux-q1xc/unix: MIT-MAGIC-COOKIE-1 fa445a3c038b19300e8e45d4ae0ae55a
#ffff#6c696e75782d71317863#: MIT-MAGIC-COOKIE-1 fa445a3c038b19300e8e45d4ae0ae55a
(与第一个相同。)
与 一起工作ssh -X localhost tlmgr -gui
。也可以在内部使用su -
并使用sudo -E
.
根本问题是什么以及如何解决?
答案1
DISPLAY
正如评论中所讨论的,问题与不保留有关sudo
,因此使用sudo -E
是一种可能的解决方案。