spec文件有什麼辦法來提取rpm包的規範文件(我只有RPM文件)提取rpm包
不
rpm --scripts -qp my-great-app-1.1.2.rpm
(這句法不能得到規範文件只有rpm的腳本)
spec文件有什麼辦法來提取rpm包的規範文件(我只有RPM文件)提取rpm包
不
rpm --scripts -qp my-great-app-1.1.2.rpm
(這句法不能得到規範文件只有rpm的腳本)
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 ([email protected])
有你有一個網站和一個電子郵件地址,分別爲,在那裏你可以問一個spec文件或SRPM文件。
你可以使用
yumdownloader --source < something.rpm
則:
rpm2cpio packagename | cpio -ivd
只能獲得將要安裝的文件,而不是spec文件。 – 2012-08-23 21:21:33
rpm -i pkg.src.rpm會將其解壓到rpmbuild目錄 – qrtt1 2012-11-17 08:44:21
安裝rpmrebuild並提取您的轉文件或者您已經安裝的軟件包的規範文件。
例子:
rpmrebuild --package --notest-install -e oracle-instantclient-basic-10.2.0.4-1.x86_64.rpm
rpmrebuild -s hercules.spec hercules
查看rpmrebuild的代碼,然後實際測試它,它不會「提取」spec文件;它會重新生成大部分spec文件(頭文件,日誌文件,前/後腳本)。但是,重建至關重要,它實際上並沒有得到%prep或%build部分;它只是將它們保留爲默認值(分別爲「make clean」和「make install」)。我懷疑這是因爲/那/信息沒有存儲在RPM中。因此,雖然這應該在最常見的情況下起作用,但它看起來並不普遍(尤其是對於包含複雜編譯步驟的軟件包)。 :/ – dannysauer 2015-07-22 20:16:47
dannysauer:肯定的,實際上它是沒有開採,因爲這是一個重建的規範文件(「提取物」是問題)。該規範不是RPM包的一部分,因此重建是獲得「規範模板」的唯一方法。但在許多情況下,這可能是一個很好的起點。過去它有時幫助我修復二進制rpm包。 – reichhart 2017-06-24 01:54:24
rpmrebuild是你的朋友。使用
rpmrebuild -e -p <rpm_file>
由於它在編輯器中打開了spec文件,您還可以對rpm spec進行更改。
rpmrebuild在2年前已經提到 – reichhart 2017-06-24 01:56:00
根據@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中嗎?在.src.rpm中,當然,但對於正常的RPM我根本不確定。 – Mat 2011-04-10 18:57:13
因此,如果我只有rpm文件,我可以獲取spec文件,請幫助 – jon 2011-04-10 18:59:27
查找源RPM或該軟件包的主頁。 – Mat 2011-04-10 19:00:27