CentOS仓库文件中自动获取完整版本号的方法咨询
CentOS仓库文件中自动获取完整版本号的方法咨询
我来帮你搞定这个自动获取CentOS完整版本号的问题~
你遇到的核心问题是CentOS 7里的$releasever变量默认只会返回主版本号(比如7),但vault仓库需要像7.9.2009这样的完整版本号,所以得换个方式来获取系统的完整发行版本。
这里有几个实用的方案:
方案1:用命令提取完整版本号,自动替换repo文件
首先,你可以通过系统自带的rpm包信息直接提取完整版本号,执行这条命令就能拿到:
rpm -q --qf "%{VERSION}" centos-release
它会直接输出类似7.9.2009的完整版本字符串。
接下来可以写个简单的脚本自动替换repo文件里的硬编码版本:
# 获取完整版本号 FULL_CENTOS_VER=$(rpm -q --qf "%{VERSION}" centos-release) # 替换repo文件中的版本号 sed -i "s/7.9.2009/$FULL_CENTOS_VER/g" /etc/yum.repos.d/CentOS-Base.repo
以后每次需要更新repo配置时,运行这个脚本就能自动同步当前系统的完整版本号了。
方案2:自定义yum变量,让repo文件自动引用
yum支持自定义变量,你可以把完整版本号写入到yum的变量目录里:
# 将完整版本号写入yum自定义变量文件 echo $(rpm -q --qf "%{VERSION}" centos-release) > /etc/yum/vars/centos_fullver
然后修改你的CentOS-Base.repo文件中的baseurl为:
baseurl=http://vault.centos.org/$centos_fullver/os/$basearch/
这样yum在解析repo文件时,会自动读取/etc/yum/vars/centos_fullver里的内容作为变量值,不用再手动硬编码版本号了。
补充说明
为什么$releasever只返回7?因为在CentOS 7中,yum的这个变量是从centos-release包的release字段提取的主版本号,而完整的版本信息需要从包的VERSION字段或者/etc/centos-release文件中获取(你也可以用cat /etc/centos-release | awk '{print $4}'来提取完整版本号)。
备注:内容来源于stack exchange,提问作者Planetoid Hsu
相关产品推荐
相关产品推荐

