![](/img/trans.png)
[英]Error while creating rpm package using rpmbuild from spec file
[英]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.