当终端无法启动时,我遇到了问题。当区域设置不受支持时,我查看了相关问题。我尝试过更新它,重新生成它 - 没有任何帮助。最后我找到了下一条错误消息/var/log/syslog
Dec 31 00:45:43 kes-X751SA console-kit-daemon[2215]: (process:3545): GLib-CRITICAL **: g_slice_set_config: assertion 'sys_page_size == 0' failed
Dec 31 00:45:48 kes-X751SA org.gnome.Terminal[2464]: Locale not supported.
Dec 31 00:45:57 kes-X751SA console-kit-daemon[2215]: (process:3562): GLib-CRITICAL **: g_slice_set_config: assertion 'sys_page_size == 0' failed
这里就不清楚了。如果我的区域设置错误,不支持哪个区域设置?如何检查支持哪些语言环境?如何应用支持的语言环境?
答案1
直接来自“疑难解答”部分小吃指南,在“GNOME 终端拒绝启动”标题下:
- GNOME 终端服务器要求在其环境变量中配置 UTF-8 语言环境
LANG
,否则拒绝启动。它不能只是语言C
环境。
请注意,GNOME 终端服务器是org.gnome.Terminal
在每用户服务管理器下通过 DBUS 代理间接启动的服务。它运行一个名为gnome-terminal-server
which的程序,该程序实际上提供了终端仿真器。它不是gnome-terminal
客户您直接运行的命令,它只是该服务器的控制程序。
- 如果您让每用户/会话 DBUS 代理直接生成服务器进程(这是旧的但不推荐的做法),您需要确保您的每用户/会话 DBUS 代理本身在 UTF-8 中运行8 语言环境。
由于调用 DBUS 代理的方式有很多种,因此具体如何执行此操作超出了本答案的范围。
- 如果您的 DBUS 代理只是将数据传递给适当的每用户服务管理器(这是现在推荐的新做法),您需要确保每用户服务的服务定义
org.gnome.Terminal
设置了 UTF-8 区域设置。如何执行此操作取决于您拥有的每用户服务管理器。对于 nosh 服务管理,仅举一个例子,只需
$HOME/.config/service-bundles/services/org.gnome.Terminal/service/env
使用以下命令调整其服务环境目录 ( )set-service-env
:系统控制 --user set-service-env org.gnome.Terminal LANG en_GB.UTF-8
另一个例子是,如果您使用 systemd 进行每用户服务管理,则需要使用“插入”机制
Environment=
注入一个设置,而 systemd 人员不会为每用户服务记录该机制。/lib/systemd/user/gnome-terminal-server.service
当然,您还要确保该区域设置实际上也作为区域设置定义存在于您的系统上。如果不存在这样的 UTF-8 区域设置定义,则调整 UTF-8 区域设置是没有好处的。
进一步阅读
- 乔纳森·德博因·波拉德 (2017)。 “故障排除”。 小吃指南。软件。
- 乔纳森·德博因·波拉德 (2017)。 “每用户的用户服务”。 小吃指南。软件。
- 乔纳森·德博因·波拉德 (2017)。 “要求启动每用户桌面总线用户服务”。 小吃指南。软件。
- 菲利克斯·C·斯蒂格曼 (2014-04-29)。gnome-terminal:不会以非 utf-8 语言环境启动。 Debian 错误 #746415。
- 尝试以 root 身份启动 gnome-terminal 时出现“构建代理错误...”
- 为什么Mate终端的多个实例具有相同的PID?
- 无法从 PID 中杀死 gedit 进程
- 为什么在桌面会话(例如 GNOME)中使用 systemd 用户管理器?
- ”退出状态8”。 GNOME 终端常见问题解答。侏儒。
答案2
这是对我有帮助的命令列表:
sudo apt install dconf-cli
dconf reset -f /org/gnome/terminal
sudo apt-get remove gnome-terminal
sudo apt-get install gnome-terminal
sudo locale-gen --purge
sudo dpkg-reconfigure locales
reboot