在 systemd-nspawn 容器中设置区域设置 (debian jessie)

在 systemd-nspawn 容器中设置区域设置 (debian jessie)

sudo systemd-nspawn -D ~/debian-tree/尝试在 Fedora 主机上创建的 Debian 容器中运行的 vim 中显示电力线/航空公司符号。

现在它只显示菱形问号(��)我很确定我需要设置语言环境,但我找不到如何正确执行此操作的直接答案。

输出locale

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

的输出locale -a

C
C.UTF-8
POSIX

答案1

设置语言环境记录在 Debian 安装指南中 - 有一个附录提供了一些有关直接使用 debootstrap 安装和自行配置系统的提示。

要将区域设置配置为使用英语以外的语言,请安装区域设置支持包并进行配置。目前建议使用 UTF-8 语言环境。

# aptitude install locales
# dpkg-reconfigure locales

整个附录有一个免责声明,它并不全面,但它是官方文档,而且这个具体方法是完全正确的。还有其他可能更适合脚本编写的替代方法 - 此方法提示用户选择哪个区域设置。

还有第二个问题,附录中也顺便提到了。我不确定它是否会影响您的特定字符问题,但它可能会导致类似复杂输出的问题。您需要确保 TERM 设置正确。跑到echo $TERM容器外面。在容器内,运行 例如export TERM=xterm-256color设置此会话的终端类型。

我认为也无法machinectl login为您处理这个问题,考虑到它如何与容器内的 systemd 进行通信,这很令人遗憾。

如果您在容器内运行 SSH 服务器,则只需使用它,SSH 将正确转发 TERM,并且您无需执行任何操作。

相关内容