如何检测RPM是源rpm还是二进制rpm?
显然,我不想依赖于文件名。
发布于 2014-12-14 14:03:23
源rpms由报头中存在的SOURCERPM标签定义。如果一个rpm有一个SOURCERPM标签,这意味着这个rpm是一个二进制rpm ( SOURCERPM标签说明了用来构建这个二进制rpm的srpm )。如果没有SOURCERPM标记,则rpm是srpm。
我不确定这是否是srpm的某种“官方”定义,但在参考rpm实现(请参阅headerIsSource() in lib/headerutil.c)中,这是rpmbuild和其他实用程序当前用来确定给定rpm是否为srpm的逻辑。所以这看起来很合理。
下面是使用rpm命令行实用程序检查rpm中是否存在SOURCERPM标记的方法:
$ rpm --query --package foo-1.2.3-1.src.rpm \
--queryformat "%|SOURCERPM?{binary-rpm}:{source-rpm}|\n"
source-rpm
$ rpm --query --package foo-1.2.3-1.el7.x86_64.rpm \
--queryformat "%|SOURCERPM?{binary-rpm}:{source-rpm}|\n"
binary-rpm发布于 2012-09-25 23:14:51
源代码rpm包含Linux应用程序的实际源代码和补丁文件。所有源rpm文件都具有src.rpm扩展名
如果您在基于英特尔的计算机上使用RPM,您通常会在那里找到i386。如果您使用RPM位计算机,您将在x86_64文件名中看到x86_64。普通的rpm文件只有二进制文件,根本没有源代码。
下面的链接帮助我了解了源代码与二进制RPM
编辑:
的RPM签名包
checksig rpm --
文件
rpm -qi文件
我认为没有用于此目的的内置工具。使用与RPM相关的命令,或者您可以创建一个shell脚本作为工具随时进行检查(它可以节省您的时间)。
发布于 2012-09-26 00:02:38
我不相信有任何确定的方法来做你想做的事情,尽管你可以应用一些启发式方法来做出合理的猜测。
rpm -qi -p rpmfilename并查看是否有"Source RPM:“值。rpmdevtools包中的rpmls。仅根据检查输出,SRPMS似乎包含一个.tar.gz或.tar.bz2和一个.spec文件。我认为这会让你接近答案,但它不会是决定性的。这是否足够,将取决于在您的情况下,准确的正确性有多重要。
https://stackoverflow.com/questions/12585927
复制相似问题