我注意到rpmbuild(-bb和--buildroot options)根据你使用的操作系统在不同的位置创建.rpm:
那么如何手动设置所有操作系统的目标文件夹?
答案 0 :(得分:15)
回复自己,补充道:
%define _rpmdir /outputdir
到.spec文件。
答案 1 :(得分:3)
您可能希望使用命令参数--define
:例如,这会将rpm文件发送到当前目录。
rpmbuild anything.spec --bb --define "_rpmdir $(pwd)"
这将发送rpmsto输出目录
rpmbuild anything.spec --bb --define "_rpmdir /outputdir"
或者更复杂的事情,例如Custom gradle task for rpmbuild。
答案 2 :(得分:0)
实际上不建议使用/ usr / src / **。即通过使用/ home / [name] / rpms /,您可以作为非特权用户。构建软件包不需要su或sudo。
答案 3 :(得分:0)
只是一个小小的评论.. 在AIX OS中,rpmbuild也支持在spec文件中添加“%define _rpmdir / outputdir”
答案 4 :(得分:0)
对我来说,解决方案是将 _topdir 设置到项目内名为 rpmbuild 的子目录中。我还设置了一些宏来控制 .rpm 路径:
rpm:
rpmbuild -bb package.spec -D "_topdir $(shell pwd)/rpmbuild" -D "SRC $(shell pwd)" -D "NAME $(NAME)" -D "ARCH $(ARCH)" -D "VERSION $(VERSION)" -D "RELEASE $(RELEASE)"
mv rpmbuild/RPMS/$(ARCH)/$(NAME)-$(VERSION)-$(RELEASE).$(ARCH).rpm ./
rm -rf rpmbuild
然后,我使用 make 生成 .rpm 文件并将其移动。我更喜欢 rpmbuild 在其目录中进行操作。
make rpm
package.spec正在使用这些宏,例如
Name: %{NAME_PACKAGE}