中文乱码与yum安装失败问题

如下图所示,往文件里输入内容:测试中文乱码问题,结果发现乱码。

docker centos7容器中文乱码问题解决_centos


甚至如果文件名带有中文也会乱码。

执行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 目录

cd /etc/yum.repos.d/

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、然后,生成缓存更新(第一次更新,速度稍微有点慢,耐心等待两分钟左右)

yum makecache

4、最后,运行 yum update 并重新安装 vim

yum update -y
yum -y install vim

到这里,yum安装失败的问题已经解决了,vi编码器中文乱码的问题也解决了,如下图所示。

docker centos7容器中文乱码问题解决_运维_02


docker centos7容器中文乱码问题解决_linux_03