gnome-terminal 启动失败(超时)

gnome-terminal 启动失败(超时)

我刚刚从 Ubuntu 16.04 升级到 18.04。我的工作流程是使用 VcXsrv 从 Windows 连接到 Ubuntu(使用 X 隧道的 ssh),在 Ubuntu 上启动 xterm。在 xterm 中,我正在输入gnome-terminal以获取 gnome 终端。

自升级以来,此功能不再起作用。我收到

$ gnome-terminal  
# Couldn't register with accessibility bus: Did not receive a reply. Possible causes include: the remote application did not send a reply, the message bus security policy blocked the reply, the reply timeout expired, or the network connection was broken.  
# Error constructing proxy for org.gnome.Terminal:/org/gnome/Terminal/Factory0: Fehler beim Aufruf von StartServiceByName für org.gnome.Terminal: Zeitüberschreitung wurde erreicht  

或者从英语区域设置开始时

$ LANG=en_US.utf8 gnome-terminal  
# Couldn't register with accessibility bus: Did not receive a reply. Possible causes include: the remote application did not send a reply, the message bus security policy blocked the reply, the reply timeout expired, or the network connection was broken.  
# Error constructing proxy for org.gnome.Terminal:/org/gnome/Terminal/Factory0: Error calling StartServiceByName for org.gnome.Terminal: Timeout was reached

我并不总是能得到第一行,但我总是得到超时错误。

进一步探究我发现的问题

  • sudo gnome-terminal作品
  • gnome-terminal在本地登录 PC 后,在 xterm 中运行时有效
  • 当我也在 PC 上本地登录时,gnome-terminal远程会话的 xterm 会在 PC 上的本地会话中打开一个 gnome 终端(仍然会出现关于使用辅助功能总线注册的第一行错误)
  • 当我也通过 rdp(Windows 网络连接)登录时,gnome-terminalssh 会话中的 xrdp 会话中会打开一个 gnome 终端
  • 当我通过 rdp(Windows 网络连接)登录时,在那里注销,然后gnome-terminal可以打开 gnome 终端

我该怎么做才能使gnome-terminal远程会话的 xterm 正常工作?

答案1

相同的问题,找到了解决方案。

在第一个终端中测试时在第二个终端中运行“tail -f /var/log/syslog”,当我在“sudo bash”后启动 gnome-terminal 时出现以下情况:

Mar 23 10:11:59 X399-DESIGNARE-EX dbus-daemon[2584]: [session uid=0 pid=2582] Activating service name='org.gnome.Terminal' requested by ':1.6' (uid=0 pid=2929 comm="/usr/bin/gnome-terminal.real " label="unconfined")
Mar 23 10:11:59 X399-DESIGNARE-EX gnome-terminal-[2934]: Couldn't connect to accessibility bus: Failed to connect to socket /tmp/dbus-GAXcx1c8OL: Connection refused
Mar 23 10:11:59 X399-DESIGNARE-EX dbus-daemon[2584]: [session uid=0 pid=2582] Successfully activated service 'org.gnome.Terminal'
Mar 23 10:11:59 X399-DESIGNARE-EX gnome-terminal-[2934]: The owner of /home/<user>/.config/ibus/bus is not root!

当我以自己的身份运行 gnome-terminal 时,出现以下信息:

Mar 23 10:16:30 X399-DESIGNARE-EX dbus-daemon[2564]: [session uid=1000 pid=2564] Activating via systemd: service name='org.gnome.Terminal' unit='gnome-terminal-server.service' requested by ':1.4' (uid=1000 pid=2959 comm="/usr/bin/gnome-terminal.real " label="unconfined")
Mar 23 10:16:30 X399-DESIGNARE-EX systemd[2435]: Starting GNOME Terminal Server...
Mar 23 10:16:30 X399-DESIGNARE-EX systemd[2435]: gnome-terminal-server.service: Main process exited, code=exited, status=10/n/a
Mar 23 10:16:30 X399-DESIGNARE-EX gnome-terminal-server[2962]: Unable to init server: Could not connect: Connection refused
Mar 23 10:16:30 X399-DESIGNARE-EX gnome-terminal-server[2962]: Failed to parse arguments: Cannot open display:
Mar 23 10:16:30 X399-DESIGNARE-EX systemd[2435]: gnome-terminal-server.service: Failed with result 'exit-code'.
Mar 23 10:16:30 X399-DESIGNARE-EX systemd[2435]: Failed to start GNOME Terminal Server.

...经过大量挖掘,我终于找到了gnome 终端无法启动,这表明当非 root 用户请求服务时,dbus 不会刷新其环境。以下步骤可解决此问题:

  1. 在您的主文件夹中创建一个脚本,例如:

vim ~/term

  1. 将以下内容添加到脚本并保存:

#!/usr/bin/env bash dbus-update-activation-environment --systemd --all gnome-terminal &

  1. 使脚本可执行

chmod 755 ~/term

  1. 运行‘~/term’以用户身份(非 root)启动 gnome-terminal,它应该可以正确启动。

主持人须知:

请不要删除提供问题更多细节的答案。您删除的内容并未违反发布指南,并为任何试图找到解决方案的人提供了大量额外信息。这个答案没有提供这些额外信息,我不愿意费力去恢复它。

这个答案解决了这个问题。

请不要删除它!

答案2

好吧,伙计们,这些对我来说很有用。你只需要:

sudo apt-get reinstall dbus

一旦做了就完成了。

答案3

@kch_PE_MSEE_BSCE 的故障排除方法对我有用。

$ python3 -v /usr/bin/gnome-terminal -v
...
import 'shutil' # <_frozen_importlib_external.SourceFileLoader object at 0x7f52f1940430>
# Error constructing proxy for org.gnome.Terminal:/org/gnome/Terminal/Factory0: Error calling StartServiceByName for org.gnome.Terminal: Timeout was reached
<---- stuck here
# clear builtins.

$ tail -f /var/log/syslog
...
Dec  7 17:06:02 u22 systemd[1696]: Starting GNOME Terminal Server...
Dec  7 17:06:02 u22 gnome-terminal-server[5348]: /usr/libexec/gnome-terminal-server: symbol lookup error: /usr/libexec/gnome-terminal-server: undefined symbol: vte_terminal_paste_text
Dec  7 17:06:02 u22 systemd[1696]: gnome-terminal-server.service: Main process exited, code=exited, status=127/n/a
Dec  7 17:06:02 u22 systemd[1696]: gnome-terminal-server.service: Failed with result 'exit-code'.

知道原因了。我是因为libvte软件包降级导致的

因为 vte 这个愚蠢的全选问题,我不得不使用旧版本 https://gitlab.gnome.org/GNOME/gnome-terminal/-/issues/326
https://gitlab.gnome.org/GNOME/gnome-terminal/-/issues/288

https://launchpad.net/~nrbrtx/+archive/ubuntu/vte?field.series_filter=jammy

终结者工作了,再见 gnome-terminal。

相关内容