kun*_*unt 8 arch-linux gnome-terminal
我gnome-terminal 3.16.2-1在系统更新后停止工作。我在跑步Linux arch 4.1.6-1-ARCH #1 SMP PREEMPT Mon Aug 17 08:52:28 CEST 2015 x86_64 GNU/Linux。
启动它时,我收到
Error constructing proxy for org.gnome.Terminal:/org/gnome/Terminal/Factory0: Error calling StartServiceByName for org.gnome.Terminal: GDBus.Error:org.freedesktop.DBus.Error.Spawn.ChildExited: Process org.gnome.Terminal exited with status 8
Run Code Online (Sandbox Code Playgroud)
谷歌搜索问题告诉我重新设置区域设置。为此,我打开/etc/locale.gen并确保en_US.UTF-8 UTF-8没有注释。
然后我跑去sudo locale-gen生成语言环境。最重要的是,我还运行localectl set-locale LANG=en_US.UTF-8并重新启动。
当问题第一次出现时,我确实收到了一条与语言环境有关的错误消息。执行上述步骤后,这些错误消息消失了,但gnome-terminal仍然不起作用。上面的错误信息仍然存在。
我可以观察到的奇怪行为:
我的 Nautilus 文件管理器不会从桌面快捷方式启动,但可以从控制台启动而不会出现问题。
gnome-terminal 以 root 身份运行时确实会启动。
locale 输出:
LANG=en_US.UTF-8
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC=de_DE.UTF-8
LC_TIME=de_DE.UTF-8
LC_COLLATE="en_US.UTF-8"
LC_MONETARY=de_DE.UTF-8
LC_MESSAGES="en_US.UTF-8"
LC_PAPER=de_DE.UTF-8
LC_NAME="en_US.UTF-8"
LC_ADDRESS="en_US.UTF-8"
LC_TELEPHONE="en_US.UTF-8"
LC_MEASUREMENT=de_DE.UTF-8
LC_IDENTIFICATION="en_US.UTF-8"
LC_ALL=
Run Code Online (Sandbox Code Playgroud)
localectl 产出
System Locale: LANG=en_US.UTF-8
VC Keymap: us
X11 Layout: us,de
Run Code Online (Sandbox Code Playgroud)
小智 7
解决方案:
在终端中运行(如果你只gnome-terminal安装了alt+ctrl+F1 ),但记住不是永久的,所以重启后你需要再次执行:
dbus-update-activation-environment --all
Run Code Online (Sandbox Code Playgroud)
或者要永久解决它(假设您在/etc/X11/xinit/xinitrc.d查看说明中缺少脚本以获取更多详细信息)加载~/.xinitrc正确的脚本:
if [ -d /etc/X11/xinit/xinitrc.d ] ; then
for f in /etc/X11/xinit/xinitrc.d/?*.sh ; do
[ -x "$f" ] && . "$f"
done
unset f
fi
Run Code Online (Sandbox Code Playgroud)
请注意,这只有在您有正确的脚本时才有效 /etc/X11/xinit/xinitrc.d
说明:
在我的情况下,问题是缺少DISPLAYD-Bus 会话服务的变量。由于这一点,我无法启动gnome-terminal,也没有nautilius。
我正在使用Arch LinuxwithSlim和一些定制的.xinitrc. 因此,我错过了从/etc/X11/xinit/xinitrc.d/. 如果Arch Linux有脚本调用 50-systemd-user.sh,它负责为 D-Bus 会话设置适当的环境。就我而言,它看起来像这样:
#!/bin/sh
systemctl --user import-environment DISPLAY XAUTHORITY
if which dbus-update-activation-environment >/dev/null 2>&1; then
dbus-update-activation-environment DISPLAY XAUTHORITY
fi
Run Code Online (Sandbox Code Playgroud)
我的理解是DISPLAY和XAUTHORITY变量被导入到 systemd 管理器环境块中,并且dbus-daemon --session在激活会话服务时也使用这些变量。某些应用程序(这也取决于它们的调用方式)由于在启动期间缺少这些变量而失败。
小智 5
我~/.profile将以下行添加到它设置 DBUS_SESSION_BUS_ADDRESS 变量。它为我解决了这个问题。
eval `dbus-launch --sh-syntax`
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9779 次 |
| 最近记录: |