---
title: "LC_ALL: cannot change locale (en_US.UTF-8) 报错"
url: "https://yjyj.net/learn/7631.html"
author: "小 虾 (生猛大蝦编辑部)"
published_at: "2025-04-23T13:17:35+08:00"
updated_at: "2025-04-23T16:31:35+08:00"
categories: "招数学习"
tags: "locale, mysql, 报错, 服务器安全, 编译"
summary: "本文记录在宝塔部署 MySQL 时遇到的 locale 报错：/bin/sh 提示无法切换到 en_US.UTF-8，导致编译安装中断。作者给出可直接落地的修复命令 localedef，适合遇到本地化环境缺失、安装卡死的 Linux 运维场景快速排障。"
source: "生猛大蝦 (https://yjyj.net)"
---

# LC_ALL: cannot change locale (en_US.UTF-8) 报错

> 来源：[生猛大蝦 (yjyj.net)](https://yjyj.net/learn/7631.html) · 作者：小 虾 · 发布时间：2025-04-23

## 30 秒核心看点 (TL;DR)

- 宝塔装 MySQL 时卡在 locale 报错，根因通常是系统缺少 en_US.UTF-8 本地化定义。
- 直接执行 sudo localedef -i en_US -f UTF-8 en_US.UTF-8，可快速补齐 locale 并继续安装。
- 这类问题多见于精简系统或新机器初始化，先查 locale 再动手最省时间。

最近给公司的业务搭一个 Matomo, 顺手收了台 OVH GRA 的盲盒中奖款. 但是宝塔部署 Mysql 的时候本地 locale 报错无法安装.
提示:

```
/bin/sh: warning: setlocale: LC_ALL: cannot change locale (en_US.UTF-8) [ 0%] Built target gtest make: *** [Makefile:166: all] Error 2
```

搜了下得到有效的解决办法:

```
sudo localedef -i en_US -f UTF-8 en_US.UTF-8
```

记录一下, 仅供参考

相关参考:
https://www.cnblogs.com/Don/p/17560564.html
https://www.cnblogs.com/wn1m/p/10837609.html

## 生猛大蝦编辑部 · 背景与实操延伸

这类报错本质上不是 MySQL 本身坏了，而是系统语言环境没配齐。很多云服务器、精简镜像或刚初始化的机器，默认只带最小化 locale，编译安装时就容易踩坑。实操上先别急着重装，优先检查 locale、LANG 和 LC_ALL 的值，再用 localedef 补齐目标语言环境。修复后若仍报错，通常是当前会话未刷新环境，重新登录一次最稳。

## 延伸问答与排错指南 (FAQ)

### LC_ALL: cannot change locale 怎么修复？
先确认系统是否缺少对应 locale。本文给出的有效做法是执行 sudo localedef -i en_US -f UTF-8 en_US.UTF-8，生成 en_US.UTF-8 本地化环境后，再重新执行安装或编译流程，通常即可恢复。

### 安装 MySQL 时为什么会报 setlocale 警告？
这是系统本地化配置不完整引起的，常见于精简安装或新服务器。程序尝试切换到 en_US.UTF-8，但系统里没有对应 locale，就会出现 warning 并可能导致后续构建失败。

### 执行 localedef 前后还要检查什么？
建议先查看当前 locale 状态，确认是否已有 en_US.UTF-8；执行 localedef 后再重新登录或重新加载环境变量，避免终端仍沿用旧配置。若是脚本安装，最好把 locale 修复放在前置步骤。

---
更多 Linux 运维、WordPress 性能优化、前端工程化、Shopify 独立站与极客折腾指南：[生猛大蝦全站文章归档 (https://yjyj.net/archive)](https://yjyj.net/archive)
