时间:2026-10-17 作者:JackS·Zhao 分类: Linux
这是在 Debian 上没生成对应的 locale 导致的警告,解决方法就是安装/生成缺失的 en_US.UTF-8 locale。按下面步骤来。
方法一:生成缺失的 locale(最推荐、一次性解决)
# 1. 安装 locales 工具(一般都有,没有就装)
sudo apt update
sudo apt install -y locales
# 2. 确保 en_US.UTF-8 在配置里启用
sudo sed -i 's/# en_US.UTF-8 UTF-8/en_US.UTF-8 UTF-8/' /etc/locale.gen
# 3. 重新生成 locale
sudo locale-gen
# 4. 设置系统默认 locale(可选,建议)
sudo update-locale LANG=en_US.UTF-8 LC_ALL=en_US.UTF-8
然后退出重新登录(或 source /etc/default/locale),警告就消失了。
方法二:只针对当前会话消除警告(临时)
如果暂时不想生成 locale,就在执行命令前设置环境变量:
export LC_ALL=C
或改成 export LC_ALL=en_US.UTF-8(前提是已生成)。这样当前终端不再报 setlocale 警告。
排查:看你系统当前支持哪些 locale
locale -a
如果列表里没有 en_US.utf8 → 就是没生成,用方法一。
如果有但还报错,可能是路径/变量引用问题,可以 echo $LC_ALL $LANG 看看。
更省事的备选
如果你不需要 en_US,直接用系统已带的 locale(比如 C 或 zh_CN),把 /etc/default/locale 改成对应值即可,不必强求 en_US.UTF-8。
提醒:如果是通过 SSH 远程登录出现的这个警告,最干净的是方法一(真正生成 locale),因为 SSH 登录会话会自动读 en_US.UTF-8。先跑 locale -a 看下你系统里有没有 en_US.utf8,把那个输出发我,我能立即判断是"没生成"还是"变量没对",给你精确到不走弯路。你现在是 SSH 登录报的,还是脚本/程序里报的?