2012-09-25 91 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