我正在编写一个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脚本命令“陷阱”在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] 举报,一经查实,本站将立刻删除。