马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
×
银河麒麟高级服务器版 V10 自带的是欧拉系软件源,包版本与 CentOS 系不同,装 MySQL 时经常要绕一下。网上流传的做法是“把自带 repo 备份掉,换成阿里云的 CentOS 8 源,再 yum clean all 重建缓存”。本文按这个思路把完整步骤记下来,并补上这种改法在实际生产里会带来什么风险,以及更稳妥的替代做法,避免照抄后踩坑。
为什么有人要换源
- 自带源的包版本偏旧或不做更新,业务需要的版本(如 MySQL 8.0 某小版本)在自带源里没有。
- 内网环境连不上公网源,只能从内部镜像站取包。
- 已有脚本按 CentOS 的习惯写,换源可以让同一套流程在麒麟上跑通。
但要认清一点:把系统自带源直接顶掉,等于放弃vendor 提供的更新通道,后面文章会展开。
第一步:备份麒麟自带的源配置
动手前先把现有 repo 挪走,改坏了随时能还原。
mv kylin_x86_64.repo /tmp/
注意这条命令是在 /etc/yum.repos.d/ 目录下执行的(也就是 repo 文件所在位置)。更稳妥的写法是写全路径:mv /etc/yum.repos.d/kylin_x86_64.repo /tmp/,并建议把备份文件改个名,避免 *repo 后缀被 yum 再次读取。备份完可以先 ls /etc/yum.repos.d/ 确认目录里已经没有生效的自带源。
第二步:下载 CentOS 8 的 repo 文件
从开源镜像站取 CentOS 8 的 base repo(常用 Centos-vault-8.5.2111.repo 这类归档版本),写到 /etc/yum.repos.d/ 下:
wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-vault-8.5.2111.repo
两条细节:
-O 指定输出文件名,覆盖写进去,避免多一个 repo 文件同时生效导致源冲突。
- 下载后建议用
head -20 /etc/yum.repos.d/CentOS-Base.repo 看一眼 $releasever 与 baseurl 是否指向预期路径;如果文件里是 $releasever 变量,而系统实际是 kylin,可能被解析成空或错误版本,这时要手动改成 8。
第三步:清缓存并重建元数据
yum clean all && yum makecache
这两步缺一不可:先清掉旧的缓存文件,再拉取新源的 repodata 建立本地缓存。执行时若看到“上次元数据过期检查”之类的提示,说明缓存确实被重建了。输出里若报 GPG 校验失败,通常是 gpgkey 路径指向的位置在这套源里不存在,需要对应调整或先在测试机处理。
第四步:实测安装,看依赖怎么处理
用安装服务来验证源是否真的能装东西:
yum -y install mysql --allowerasing
-y 自动确认,--allowerasing 允许 yum 为了解依赖而移除冲突的旧包。典型输出会显示:
- 安装项:mysql、mysql-common(版本跟源走,如 8.0.26 系列)。
- 移除项:原来的 mariadb、mariadb-server(麒麟自带版本,如 10.3.9 的 ky10 包)。
- 启用模块流:mysql 8.0。
这里有个必须注意的点:mariadb 被替换掉是依赖解析的结果,不是脚本写死的。如果业务原来在用系统自带的 mariadb(很多内部工具依赖它的客户端命令),这一换会影响那些脚本,要提前评估。
跑完用 mysql --version 确认命令可用,用 rpm -qa | grep -E "mysql|mariadb" 复核本机上到底留了哪些相关包。
这种改法的风险,得讲清楚
- 更新通道被切断:vendor 后续的 CVE 修复、内核与工具链更新不会再推到这里,而 yum 还认为系统是健康的,容易形成“看着正常其实没有安全更新”的状态。
- 依赖链不一致:麒麟上的包是按欧拉系构建、带自家补丁的,换成 CentOS 8 的源后,同一套库与系统库可能版本打架,典型表现是 postfix、openssl、python 相关组件报错。
- 合规要求:政企项目通常要求使用信创目录内的软件与系统源,把系统源整体换成第三方社区源,在等保或信创验收时是会被挑出来的。
- 回滚成本:已经装过一层包之后,想回退要同时处理源和已装包两件事。
更稳妥的替代做法
- 优先用麒麟自带源,配套的软件市场/更新服务通常更匹配,先查自带源里有没有需要的版本。
- 只想装特定软件(如 MySQL)就用独立仓库:不要动系统源,另建一个
/etc/yum.repos.d/mysql.repo,只对这一个包来源生效,装完保留或停用即可,系统更新通道不受影响。
- 内网环境搭内部镜像:把需要的基础包同步到内部源,客户端指向内网地址,既解决连通性也便于审计。
- 需要非自带版本时用容器:MySQL、Nginx 这类服务跑在容器里,跟宿主系统源解耦,是最省心的路径。
无论走哪条路,改之前先给 /etc/yum.repos.d/ 整体打包一份(tar czf /tmp/repos-bak.tgz /etc/yum.repos.d/),出问题一行命令就能还原。
qidao123.com企服评测-应用市场 编辑提示
本文基于社区原帖《银河麒麟(Kylin Linux Advanced Server V10)配置centos8的yum源》整理扩写,还原了命令中被吞掉的空格并按“备份—换源—重建缓存—验证—风险评估—替代方案”重排,补充了依赖替换与更新通道方面的注意事项,未改动原作者的操作结论。文中镜像地址仅作格式示例,实际请以镜像站当前可用路径为准;操作前建议先在测试机验证并完整备份源配置。 |