2012-09-25 46 views

回答

1

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

如果您在基于Intel的计算机上使用RPM,你通常希望找到I386那里。如果您使用x86_64位计算机,您将在RPM文件名中看到x86_64。正常的rpm文件只有二进制文件,根本没有源代码。

以下链接帮助我关于源代码对二进制RPM

编辑:

  • 检查的RPM签名包

转--checksig文件

  • 显示包装信息

转-qi文件

我认为这是在工具用于这一目的没有内置。使用RPM相关的命令,或者你可以创建一个shell脚本作为一个工具来检查任何时间(它可以节省你的时间)。

+0

我一直在寻找一种方式来提取RPM文件信息,比如'转'工具或类似的东西。 – sorin

+1

@sorin我已经编辑了我的答案作为您的评论。我认为没有内置的工具来达到这个目的。使用RPM相关的命令,或者你可以创建一个shell脚本作为一个工具来检查任何时间(它可以节省你的时间)。 –

0

我不相信有任何明确方式做你想做的,虽然你可能能够应用一些启发式来做出合理的猜测。

  1. 使用rpm -qi -prpmfilename并看看是否有一个 “源RPM:” 值。

  2. 使用来自rpmdevtools包的rpmls。仅基于检查输出,SRPMS似乎包含.tar.gz或.tar.bz2和.spec文件。

我认为这将让你关闭一个答案,但它不能明确。这是否足够取决于在您的情况下完全正确的重要程度。

0

rpm -qlp rpmfilename | grep -c /usr/src/redhat将给予它多少源文件包括(通常是源存档,一个规范文件,补丁极少数)的计数。如果您以编程方式执行此操作,则grep -q将返回匹配或不匹配。

3

代码RPM通过在报头中的SOURCERPM标签的存在来定义。如果一个rpm有一个SOURCERPM标签,这意味着rpm是一个二进制rpm(SOURCERPM标签说明了用什么srpm构建二进制rpm)。如果没有SOURCERPM标签,那么rpm就是srpm。

我不确定这是否是srpm的“官方”定义,但它是rpmbuild和其他实用程序当前用于确定给定rpm是否为参考rpm中srpm或不是的逻辑实施(见headerIsSource() in lib/headerutil.c)。所以它看起来很合理。

这里是检查是否使用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