我刚刚从 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-terminal
ssh 会话中的 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 不会刷新其环境。以下步骤可解决此问题:
- 在您的主文件夹中创建一个脚本,例如:
vim ~/term
- 将以下内容添加到脚本并保存:
#!/usr/bin/env bash dbus-update-activation-environment --systemd --all gnome-terminal &
- 使脚本可执行
chmod 755 ~/term
- 运行‘~/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。