docker centos7容器中文乱码问题解决
原创
©著作权归作者所有:来自51CTO博客作者wx5df643be5259a的原创作品,请联系作者获取转载授权,否则将追究法律责任
中文乱码与yum安装失败问题
如下图所示,往文件里输入内容:测试中文乱码问题,结果发现乱码。
甚至如果文件名带有中文也会乱码。
执行locale命令,如下所示。
LANG=en_US.UTF-8
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_PAPER="en_US.UTF-8"
LC_NAME="en_US.UTF-8"
LC_ADDRESS="en_US.UTF-8"
LC_TELEPHONE="en_US.UTF-8"
LC_MEASUREMENT="en_US.UTF-8"
LC_IDENTIFICATION="en_US.UTF-8"
LC_ALL=
执行locale -a(查看系统支持的编码)命令,如下所示。
locale: Cannot set LC_CTYPE to default locale: No such file or directory
locale: Cannot set LC_MESSAGES to default locale: No such file or directory
locale: Cannot set LC_COLLATE to default locale: No such file or directory
C
C.utf8
POSIX
这说明当前环境不支持en_US.UTF-8编码。
另外,centos基础镜像里是没有像net-tools这样的工具的,yum install也会报错:
- Error: Failed to download metadata for repo ‘appstream’: Cannot prepare internal mirrorlist: No URLs
上面的报错信息意思是,从仓库 ‘appstream’ 下载元数据失败:由于镜像列表中没有 URL,不能准备内部镜像列表。
出现该问题的原因是,CentOS 已经停止维护的问题。2020 年 12 月 8 号,CentOS 官方宣布了停止维护 CentOS Linux 的计划,并推出了 CentOS Stream 项目,CentOS Linux 8 作为 RHEL 8 的复刻版本,生命周期缩短,于 2021 年 12 月 31 日停止更新并停止维护(EOL),更多的信息可以查看 CentOS 官方公告。如果需要更新 CentOS,需要将镜像从 mirror.centos.org 更改为 vault.centos.org。
解决方案
针对上述问题,请按如下步骤进行解决:
1、首先,进入到 yum 的 repos 目录
2、其次,修改 centos 文件内容
sed -i 's/mirrorlist/#mirrorlist/g' /etc/yum.repos.d/CentOS-*
sed -i 's|#baseurl=http://mirror.centos.org|baseurl=http://vault.centos.org|g' /etc/yum.repos.d/CentOS-*
3、然后,生成缓存更新(第一次更新,速度稍微有点慢,耐心等待两分钟左右)
4、最后,运行 yum update 并重新安装 vim
yum update -y
yum -y install vim
到这里,yum安装失败的问题已经解决了,vi编码器中文乱码的问题也解决了,如下图所示。