我正在尝试运行一个密码管理器(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>
预防/修复建议:
在初始化期间,应在导入值之前检查配置文件的语法。如果发现格式错误,应向用户发出明确的消息。