Linux rpmbuild使用.spec文件删除生成目录
我正在使用.spec文件尝试rpmbuild(4.11.3),但它会删除builddirectory,我希望rpmbuild不要删除我的build目录中的任何文件,因为在构建RPM之后,我需要它们来执行其他操作。我尝试使用-bi选项,但它不起作用,它删除了构建目录 以下是规范文件:Linux rpmbuild使用.spec文件删除生成目录,linux,rpm,rpmbuild,Linux,Rpm,Rpmbuild,我正在使用.spec文件尝试rpmbuild(4.11.3),但它会删除builddirectory,我希望rpmbuild不要删除我的build目录中的任何文件,因为在构建RPM之后,我需要它们来执行其他操作。我尝试使用-bi选项,但它不起作用,它删除了构建目录 以下是规范文件: Name: newfile Version: 1.0 Release: 1%{?dist} AutoReqProv: no Prereq: /bin/chmod Prereq: /bin/chown S
Name: newfile
Version: 1.0
Release: 1%{?dist}
AutoReqProv: no
Prereq: /bin/chmod
Prereq: /bin/chown
Summary: Testing
%description
TBD
%install
mkdir -p $RPM_BUILD_ROOT/test/opb
%files -f testingfiles.files
%defattr(-,root,root,755)
%dir /test/opb
%dir /test/opb
%dir /test/opb/new
%dir /test/opb/new1
%dir /test/opb/new2
%dir /test/opb/new2
命令:
/usr/bin/rpmbuild --define '_tmppath /var/tmp/rpmgen24431.d' --define '_topdir pkg/tst' -bi --buildroot /testing/new/dest pkg/tst/newfile.spec
它删除/testing/new/dest中的所有文件。如何在不删除生成文件的情况下创建rpm文件。您可以添加:
%define __spec_install_pre /bin/true
在你的等级库文件上
但我真的很惭愧提供这个答案,因为你的规范已经充满了黑客,这只是增加了另一层肮脏的黑客。与其问这个问题,不如问一下如何通过定期清理buildroot实现您想要实现的目标
编辑:
__spec_install_pre定义为:
__spec_install_pre %{___build_pre}
[ "$RPM_BUILD_ROOT" != "/" ] && rm -rf "${RPM_BUILD_ROOT}"
mkdir -p `dirname "$RPM_BUILD_ROOT"`
mkdir "$RPM_BUILD_ROOT"
%{nil}
因此,如果您将其定义为:
%{___build_pre}
mkdir -p `dirname "$RPM_BUILD_ROOT"`
mkdir "$RPM_BUILD_ROOT"
%{nil}
它的行为将完全相同,只是不删除buildroot。
多行%define可以通过两种方式定义,这取决于rpm的版本。我将把它留给您:)是否有理由不在spec文件中使用一个或多个
Source
指令?