Ubuntu 22.04中/var/lib/locales目录缺失导致Docker镜像升级时locale配置命令失败的问题咨询
Ubuntu 22.04中/var/lib/locales目录缺失导致Docker镜像升级时locale配置命令失败的问题咨询
嘿,我刚好碰到过类似的问题,Ubuntu 22.04在locale配置这块确实和14.04有不小的变化,给你梳理下:
首先,你不用纠结要不要创建/var/lib/locales目录——这个目录是*旧版本Ubuntu(比如14.04)*里locale配置机制的产物,在22.04里已经被废弃了,就算你手动创建出来,系统也不会再读取这个目录下的配置,所以完全没必要做这个操作。
你已经发现要安装locales包才能拿到/usr/share/i18n/SUPPORTED,这步是对的。接下来替换原来的命令流程就好:
原来的ln -s /usr/share/i18n/SUPPORTED /var/lib/locales/supported.d/all + locale-gen,在22.04里可以直接换成:
locale-gen --all
这个命令会自动读取/usr/share/i18n/SUPPORTED里的所有locale配置并生成对应的文件,和你原来想达到的效果完全一致。
如果你的需求只是生成特定的locale(比如你最后设置的en_US.UTF-8),那更简单,直接运行:
locale-gen en_US.UTF-8
就够了,不用管什么软链接。
另外,在Dockerfile里设置环境变量的话,用ENV指令比export更持久,推荐写成:
ENV LANG=en_US.UTF-8
总结下你需要调整的Dockerfile步骤:
- 先安装locales包:
apt-get update && apt-get install -y locales - 生成locale:用
locale-gen --all或者指定具体locale - 设置环境变量:用
ENV LANG=en_US.UTF-8
这样就能完美替代原来的旧流程,适配Ubuntu 22.04的新机制啦。
备注:内容来源于stack exchange,提问作者SoonGuy
相关产品推荐
相关产品推荐

