微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

我正在编写一个bash脚本来使用reposync从远程仓库中提取软件包,所以我可以将我的节点指向本地。 因此,我试图保持本地repoconfiguration尽可能类似于usptream回购configuration,如下所示:

# upstream baseurl=http://mirror.freedomvoice.com/centos/$releasever/os/$basearch/ # local baseurl=http://user:[email protected]/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值。 有点凌乱,寻找一个更优雅的方法

每秒钟显示运行一个bash脚本的经过时间

bash脚本命令“陷阱”在docker容器中不起作用

使用“ps”来查找时间范围内的进程

Linux脚本来检查进程是否正在运行并对结果进行操作

在命令行启动后捕获进程的STDIN / STDERR / STDOUT?

我如何强制退出Git Bash?

如何在terminal上编写和运行一个shell程序而不保存它

如何使pipe道顺序运行

从pipe道中读取数据,并在两者之间延迟写入标准。 也必须处理二进制文件

在Cygwin中运行的Shell脚本

大多数发行版都使用distroverpkg版本来获取发行版和基础版。

如果你看看/etc/yum.conf,你会发现distrover被设置为redhat-release(对于RHEL),enterpriselinux-release(对于OEL)等等。

获取名称

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

要获得发行者:

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

为了得到basearch:

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

上面的新代码将尝试获取文件/etc/$distro关联的包。 有些Linux将/etc/redhat-release到他们的软件包版本中。

如果您得到的file not owned by any package则使用发行版附带的/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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐