簡體   English   中英

從rpm包中提取spec文件

[英]extract the spec file from rpm package

有沒有辦法從rpm包中提取spec文件(我只有RPM文件)

不是

   rpm --scripts -qp my-great-app-1.1.2.rpm 

(這種語法只能從rpm獲取spec腳本中的腳本)

安裝rpmrebuild並解壓縮rpm 文件或已安裝的軟件包的spec文件。

例子:

rpmrebuild --package --notest-install -e oracle-instantclient-basic-10.2.0.4-1.x86_64.rpm
rpmrebuild -s hercules.spec hercules

spec文件不存儲在二進制rpms中,除非打包器由於某種原因特別包含它(並且沒有理由這樣做)。 您可以從二進制rpm獲得的唯一信息是rpm -qi <package>返回的信息,以及rpm -ql <package>列出的文件。 如果您需要更多,則必須找到源包。 如果Google /供應商的網站未能為您提供,則應在Packager字段中提供聯系信息,以供任何主管人員打包。 例如,這是RHEL附帶的軟件包和第三方供應商提供的軟件包:

$ rpm --qf '%{Packager}\n' -q redhat-release
Red Hat, Inc. <http://bugzilla.redhat.com/bugzilla>
$ rpm --qf '%{Packager}\n' -q cfengine-community
CFEngine AS (packager@cfengine.com)

你有一個網站和一個電子郵件地址,你可以在那里詢問spec文件或srpm文件。

你可以用

yumdownloader --source < something.rpm

然后:

rpm2cpio packagename | cpio -ivd

根據@ RumpleStiltskin的回答,原始的spec文件可以在源rpms中找到,可以提取。 要獲取源rpms,請運行以下命令:

yum install yum-utils # Only required if yumdownloader is not installed
yumdownloader --source <package name, like 'emacs-nox'>

這會將程序包安裝到當前目錄。 提取它運行:

rpm2cpio <package name>.src.rpm | cpio -civ '*.spec'

.spec文件將位於當前目錄中。

如果由於某種原因無法安裝yum-utils,請查看/etc/yum.repos.d/中的文件,並查找引用源rpm存儲庫的部分。 您可以在瀏覽器中鍵入baseurl的值,然后手動搜索源包。 提取.spec仍然需要rpm2cpio

spec文件通常不是rpm。 它們處於源rpm。

rpmrebuild是你的朋友。 使用

rpmrebuild -e -p <rpm_file>

當它在編輯器中打開spec文件時,您也可以更改rpm規范。

我可以通過這個簡單的命令得到我所有的.spec,source,Patches

$ rpmbuild --recompile --noclean ./SRPMS/somerpm.src.rpm

現在可以更改規范,src並重建RPM或SRPM。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM