如何设置rpmbuild目标文件夹

时间:2010-05-06 00:52:44

标签: redhat rpm rpmbuild

我注意到rpmbuild(-bb和--buildroot options)根据你使用的操作系统在不同的位置创建.rpm:

  • GNU / Linux Ubuntu< = 9.04:/ usr / src / rpm /...
  • GNU / Linux Ubuntu> = 9.10:/ home / rpmbuild /...
  • GNU / Linux Fedora:/ usr / src / redhat /...

那么如何手动设置所有操作系统的目标文件夹?

5 个答案:

答案 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)

在/ home / http://www.linuxquestions.org/questions/linux-software-2/need-rpm-package-for-php-version-5-2-7-and-up-on-redhat-5-1-a-766486/#13

中设置rpmbuild环境

实际上不建议使用/ 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}