运行 keepass2 时出现“X 不支持您的语言环境”错误

运行 keepass2 时出现“X 不支持您的语言环境”错误

我正在尝试运行一个密码管理器(Keepass2),曾是昨天运行正常,直到我开始尝试调整它以使用系统范围的快捷键进行自动输入。我正在使用 Debian 10。

问题:

当从 bash 运行 keepass 时我收到错误,然后必须按 ctrl+C 退出。

~$ keepass2
X does not support your locale
^C

我的实际 keepass 可执行文件是这样的:

$ cat $(which keepass2)
#!/bin/sh
exec /usr/bin/cli /usr/lib/keepass2/KeePass.exe "$@"

KeePass.exe 使用以下应用程序运行(我已链接符号链接以节省空间):

/usr/bin/cli -> /etc/alternatives/cli -> /usr/bin/mono -> /usr/bin/mono-sgen

系统详细信息:

$ lsb_release -a
No LSB modules are available.
Distributor ID: Debian
Description:    Debian GNU/Linux 10 (buster)
Release:    10
Codename:   buster

$ uname -a
Linux ux410uq 4.19.0-6-amd64 #1 SMP Debian 4.19.67-2+deb10u2 (2019-11-11) x86_64 GNU/Linux

$ locale
LANG=en_IL
LANGUAGE=
LC_CTYPE="en_IL"
LC_NUMERIC=en_IL
LC_TIME=en_IL
LC_COLLATE="en_IL"
LC_MONETARY=en_IL
LC_MESSAGES="en_IL"
LC_PAPER=en_IL
LC_NAME=en_IL
LC_ADDRESS=en_IL
LC_TELEPHONE=en_IL
LC_MEASUREMENT=en_IL
LC_IDENTIFICATION=en_IL
LC_ALL=

$ locale -a
C
C.UTF-8
en_IL
en_IL.utf8
en_US.utf8
POSIX

我的尝试:

问题似乎是在我尝试设置键盘快捷键与操作系统的集成时,在安装以下软件包时发生的。然而,删除它们没有恢复问题...

sudo apt install \
  xsel \
  xdotool \
  mono-complete \
  libcanberra-gtk-module \
  libcanberra-gtk3-module \

在故障排除期间(基于网上的其他搜索结果),我尝试按以下方式调整 $LANG 的值,但无济于事(KeePass 的 GUI 从未出现...):

$ echo $LANG
en_IL
$ export LANG=en_US
$ keepass2 

(process:18003): Gtk-WARNING **: 14:40:07.107: Locale not supported by C library.
    Using the fallback 'C' locale.

^C
$ export LANG=en_US.UTF-8
$ keepass2 

^C

请帮助我恢复 KeePass 的稳定性。

答案1

我已经自己解决了这个问题!(:

解决方法:

我以详细模式运行了 keepass,希望看到它在哪一步挂起/失败了:

mono --verbose /usr/lib/keepass2/KeePass.exe

冻结的步骤与我从配置文件中识别出的一行有关(~/.config/KeePass/KeePass.config.xml),因此我检查了一下。

原因:

配置文件~/.config/KeePass/KeePass.config.xml中的一个 XML 标记包含语法错误:<TrayIcon>>

解决方案:

修正了语法错误:<TrayIcon>

预防/修复建议:

在初始化期间,应在导入值之前检查配置文件的语法。如果发现格式错误,应向用户发出明确的消息。

相关内容