酷徒LOGO

如何提取rpm前导码


问题:

我正在使用非基于redhat的机器,我需要提取版本: x.y. z 和 : A.B. c来自某些人的信息。通过机器的rpms。

通常会执行以下操作:


rpm -qip./Foo.x.y.z.rpm | grep Version | awk.. .



但这不是一台基于redhat的机器,所以我没有rpm,我也不想安装第二个包管理器。

我想如果我这么做了:


rpm2cpio./Foo.x.y.z.rpm | cpio -idmv



然后,当提取cpio时,我会找到一个名为.preamble的文件或其中包含数据的文件。 但没有运气。谁知道另一种方式?


回答 1:

rpm2cpio用例是提取没有元数据的文件,与你想要的相反。 它就像其他工具需要链接 librpm 。 甚至Midnight Commander探索rpm文件也使用rpm二进制文件。

在带有yum的系统上,使用createrepo从这些rpm创建一个存储库。 XML和SQLite将使用元数据生成。 虽然比rpm二进制格式更容易解析,但是如果你不使用 yum,你必须自己编写查询。 保留 repodata,这样你就有了一个功能良好的yum repo 。

另外,系统生命周期工具包括了内容管理。 即,Katello或红帽卫星。 与shell脚本相比有点重量级,但您可以使用API获取主机及其订阅的包。


回答 2:

请继续安装 rpm 。 这是最简单的事情。您的发行版几乎可以肯定它可供您使用。

现在,您可以使用RPM查询格式来提取所需的信息。

例如:


file=/path/to/filename.rpm



name=$(rpm --queryformat"%{name}" -qp $file)


version=$(rpm --queryformat"%{version}" -qp $file)


release=$(rpm --queryformat"%{release}" -qp $file)



echo"This RPM named $name has version $version release $release"








Copyright © 2011 HelpLib All rights reserved.    知识分享协议 京ICP备17041772号-2  |  如果智培  |  酷兔英语  |  帮酷