文章目录
一、问题背景
Docker拉取了CentOS镜像,在运行该镜像的容器,执行yum命令时,遇到了如下报错:
[root@a006ee87c1af /]# yum install mariadb-server
Failed to set locale, defaulting to C.UTF-8
CentOS Linux 8 - AppStream 40 B/s | 38 B 00:00
Error: Failed to download metadata for repo 'appstream': Cannot prepare internal mirrorlist: No URLs in mirrorlist
二、解决方法
1. yum镜像源问题
其中 Error: Failed to download metadata for repo ‘appstream’: Cannot prepare internal mirrorlist: No URLs in mirrorlist 是yum镜像源的问题。
查看CentOS镜像具体版本
[root@a006ee87c1af /]# cat /etc/redhat-release
CentOS Linux release 8.4.2105
1.1 CentOS 8 版本解决方法
以 CentOS 8.4.2105 为例
运行以下命令,将minorver
变量设置为8.4.2105。这个变量用于后续命令中的替换操作
sed
是一个流编辑器,用于对文本进行替换、删除、插入等操作
这两个命令的目的是将CentOS操作系统的YUM仓库配置文件中的默认镜像源更改为阿里云的镜像源,以配置镜像源或者提高软件包下载速度和稳定性。
minorver=8.4.2105
sed -e "s|^mirrorlist=|#mirrorlist=|g" \
-e "s|^#baseurl=http://mirror.centos.org/\$contentdir/\$releasever|baseurl=https://mirrors.aliyun.com/centos-vault/$minorver|g" \
-i.bak \
/etc/yum.repos.d/CentOS-*.repo
1.2 Centos 8 之前版本解决方法
以 CentOS 7.9.2009 为例
minorver=7.9.2009
sed -e "s|^mirrorlist=|#mirrorlist=|g" \
-e "s|^#baseurl=http://mirror.centos.org/centos/\$releasever|baseurl=https://mirrors.aliyun.com/centos-vault/$minorver|g" \
-i.bak \
/etc/yum.repos.d/CentOS-*.repo
2. 语言环境问题
其中Failed to set locale, defaulting to C.UTF-8是系统语言环境问题
下面是解决方案:
2.1 查看本地安装的语言包
[root@a006ee87c1af /]# locale -a
C
C.utf8
POSIX
2.2 安装语言包
安装中文语言包:yum install glibc-langpack-zh
安装英文语言包:yum install glibc-langpack-en
(可选)
本教程只安装了中文语言包,如下:
[root@a006ee87c1af /]# locale -a
C
C.utf8
POSIX
zh_CN
zh_CN.gb18030
zh_CN.gbk
zh_CN.utf8
zh_HK
zh_HK.utf8
zh_SG
zh_SG.gbk
zh_SG.utf8
zh_TW
zh_TW.euctw
zh_TW.utf8
2.3 设置语言环境
从你已安装的语言中,选择你想要设置的语言,这里选择的是zh_CN.utf8
,并执行source
命令使更改生效
echo "export LC_ALL=zh_CN.utf8" >> /etc/profile
source /etc/profile