写点什么

localedef 生成本地化文件遇到的问题

  • 2023-04-23
    山东
  • 本文字数:550 字

    阅读完需:约 2 分钟

localedef 生成本地化文件遇到的问题

问题描述

最近在做应用的信创国产化迁移适配,使用 OpenEuler 作为 docker 源镜像进行构建时,由于需要执行了 localedef -c -f UTF-8 -i zh_CN zh_CN.utf8 生成本地化文件,但报错 cannot read archive header。

Dockerfile 如下(精简后的 demo):

FROM openeuler/openeuler:22.03
RUN yum update -y && \ yum install -y glibc-locale-source && \ localedef -c -f UTF-8 -i zh_CN zh_CN.utf8
复制代码

错误分析

因为执行了 yum update 导致 glibc 升级了版本,然后默认生成了 /usr/lib/locale/locale-archive 文件,但生成的文件内容为空,导致格式不正确,localedef 命令执行时尝试去解析该文件,格式的问题导致报错。

经测试,发现 openeuler/openeuler:22.03 中默认是没有 /usr/lib/locale/locale-archive 文件的,但想 centos:centos7 中有默认的 locale-archive 文件,就不会存在此问题。

解决方式

在执行 localedef 命令之前删除掉空的文件 /usr/lib/locale/locale-archive 即可,新的 Dockerfile 文件如下:

FROM openeuler/openeuler:22.03
RUN yum update -y && \ yum install -y glibc-locale-source
# 先删除格式不正确的 locale-archive 文件,然后重新执行命令生成RUN rm -f /usr/lib/locale/locale-archive && \ localedef -c -f UTF-8 -i zh_CN zh_CN.utf8
复制代码


发布于: 刚刚阅读数: 5
用户头像

还未添加个人签名 2017-12-09 加入

还未添加个人简介

评论

发布
暂无评论
localedef 生成本地化文件遇到的问题_Linux_程序员与厨子_InfoQ写作社区