大多数发行版使用 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=$(rpm -q --qf "%{arch}" -f /etc/$distro)
上面的新代码将尝试获取与文件关联的包/etc/$distro
。一些 Linux 添加/etc/redhat-release
到他们的软件包发布。
如果你得到file not owned by any package
然后使用/etc/*-release
您的发行版附带的文件。大概是/etc/centos-release
.
您可以检查相应的/etc/*-release
通过检查 centos 打包的文件是否适合此代码。
rpm -qf /etc/*-release
然后使用该文件代替上面的第一行。
distro=/etc/centos-release
这是来自 OEL 的示例,其中/etc/redhat-release
被包装为enterprise-release
.
rpm -q --qf "%{name}" -f /etc/redhat-release
Output:
enterprise-release