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