rpmbuild 使用 .spec 文件删除构建目录
rpmbuild using .spec file deletes build directory
我正在使用 .spec 文件尝试 rpmbuild(4.11.3),但它删除了构建目录,我希望 rpmbuild 不要删除我的构建目录中的任何文件,因为在 RPM 完成后我需要它们做其他事情建成。我尝试使用 -bi 选项但它没有用,它删除了构建目录。
这里是 SPEC 文件:
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
在您的规范文件之上。
但是提供这个答案我感到非常羞耻,因为您的 SPEC 已经充满了黑客攻击,而这又增加了另一层肮脏的黑客攻击。而不是这个问题,你应该问如何通过定期清理 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 文件尝试 rpmbuild(4.11.3),但它删除了构建目录,我希望 rpmbuild 不要删除我的构建目录中的任何文件,因为在 RPM 完成后我需要它们做其他事情建成。我尝试使用 -bi 选项但它没有用,它删除了构建目录。
这里是 SPEC 文件:
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
在您的规范文件之上。
但是提供这个答案我感到非常羞耻,因为您的 SPEC 已经充满了黑客攻击,而这又增加了另一层肮脏的黑客攻击。而不是这个问题,你应该问如何通过定期清理 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 版本。我会留给你:)