首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何检测RPM是源rpm还是二进制rpm?

如何检测RPM是源rpm还是二进制rpm?
EN

Stack Overflow用户
提问于 2012-09-25 23:11:47
回答 4查看 2.4K关注 0票数 4

如何检测RPM是源rpm还是二进制rpm?

显然,我不想依赖于文件名。

EN

回答 4

Stack Overflow用户

发布于 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标记的方法:

代码语言:javascript
复制
$ 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
票数 3
EN

Stack Overflow用户

发布于 2012-09-25 23:14:51

源代码rpm包含Linux应用程序的实际源代码和补丁文件。所有源rpm文件都具有src.rpm扩展名

如果您在基于英特尔的计算机上使用RPM,您通常会在那里找到i386。如果您使用RPM位计算机,您将在x86_64文件名中看到x86_64。普通的rpm文件只有二进制文件,根本没有源代码。

下面的链接帮助我了解了源代码与二进制RPM

  • http://nixcraft.com/linux-software/3067-source-src-rpm-vs-binary-rpm-files.html

编辑:

  • 检查

的RPM签名包

checksig rpm --

文件

  • Display软件包信息

rpm -qi文件

我认为没有用于此目的的内置工具。使用与RPM相关的命令,或者您可以创建一个shell脚本作为工具随时进行检查(它可以节省您的时间)。

票数 1
EN

Stack Overflow用户

发布于 2012-09-26 00:02:38

我不相信有任何确定的方法来做你想做的事情,尽管你可以应用一些启发式方法来做出合理的猜测。

  1. 使用rpm -qi -p rpmfilename并查看是否有"Source RPM:“值。
  2. 使用rpmdevtools包中的rpmls。仅根据检查输出,SRPMS似乎包含一个.tar.gz或.tar.bz2和一个.spec文件。

我认为这会让你接近答案,但它不会是决定性的。这是否足够,将取决于在您的情况下,准确的正确性有多重要。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12585927

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档