gpt4 book ai didi

Linux - Bash - 获取 $releasever 和 $basearch 值?

转载 作者:IT王子 更新时间:2023-10-29 00:17:24 25 4
gpt4 key购买 nike

我正在编写一个 bash 脚本以使用 reposync 从远程存储库中提取包,因此我可以将我的节点指向本地提取。因此,我试图使本地 repo 配置尽可能类似于 usptream repo 配置,如下所示:

# upstream
baseurl=http://mirror.freedomvoice.com/centos/$releasever/os/$basearch/

# local
baseurl=http://user:password@repo.example.com/centos/stable/$releasever/os/$basearch/

在 bash 脚本中,是否有更简洁的方法来获取 $releasever 和 $basearch 值?我正在考虑执行以下操作:

yum_metadata=$(yum version nogroups)

哪个返回:

Loaded plugins: versionlock Installed: 6/x86_64 360:6167019baac7e76f94c26320424dc41a7f046a70 version

然后对 6/x86_64 值进行正则表达式。有点乱,正在寻找更优雅的方法。

最佳答案

大多数发行版使用 distroverpkg 版本来获取 releasever 和 basearch。

如果您查看/etc/yum.conf,您会看到 distrover 设置为 redhat-release(对于 RHEL)、enterpriselinux-release(对于 OEL)等。

获取包名:

distro=$(sed -n 's/^distroverpkg=//p' /etc/yum.conf)

获取releasever:

releasever=$(rpm -q --qf "%{version}" -f /etc/$distro)

获取基本搜索:

basearch=$(rpm -q --qf "%{arch}" -f /etc/$distro)

上面的新代码将尝试获取与文件 /etc/$distro 关联的包。一些 Linux 将 /etc/redhat-release 添加到他们的包发布中。

如果你得到 文件不属于任何包 然后使用你的发行版附带的 /etc/*-release 文件。大概是/etc/centos-release

你可以通过检查用centos打包的文件来检查适合这段代码的/etc/*-release

rpm -qf /etc/*-release

然后使用这个文件代替上面的第一行。

distro=/etc/centos-release

这是来自 OEL 的示例,其中 /etc/redhat-release 被打包为 enterprise-release

rpm -q --qf "%{name}" -f /etc/redhat-release

输出:

enterprise-release

关于Linux - Bash - 获取 $releasever 和 $basearch 值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20988371/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com