我正在编写一个bash脚本,使用reposync从远程存储库中拉包,这样我就可以将节点指向本地拉包。因此,我试图使本地存储库配置尽可能与usptream存储库配置相似,如下所示:
# 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值进行正则化。有点混乱,并寻找更优雅的方法。
2条答案
按热度按时间ruoxqz4g1#
大多数发行版使用distroverpkg版本来获取releasever和basesearch。
如果查看/etc/yum.conf,您将看到distrover被设置为redhat-release(对于RHEL)、enterpriselinux-release(对于OEL)以及其他版本。
要获取软件包名称,请执行以下操作:
要获取释放器,请执行以下操作:
要获取基本搜索:
上面的新代码将尝试获取与文件
/etc/$distro
关联的包。一些Linux将/etc/redhat-release
添加到其包发行版中。如果你得到了
file not owned by any package
,那么使用你的发行版附带的/etc/*-release
文件。它可能是/etc/centos-release
。您可以通过检查哪个文件与centos一起打包来检查适合此代码的
/etc/*-release
。然后使用此文件代替上面的第一行。
下面是OEL中的一个示例,其中
/etc/redhat-release
被打包为enterprise-release
。输出量:
bnl4lu3b2#
或者,您可以使用python打印所有conf。
参考@Mark_McKinstry的帖子:
https://unix.stackexchange.com/questions/19701/yum-how-can-i-view-variables-like-releasever-basearch-yum0