22

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

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

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

4

5 回答 5

21

回复自己,补充:

%define _rpmdir /outputdir

到 .spec 文件。

于 2010-05-06T10:44:28.920 回答
10

您可能想要使用命令参数--define:例如,这会将 rpm 文件发送到当前目录。

rpmbuild anything.spec --bb --define "_rpmdir $(pwd)"

这将发送 rpmsto 输出目录

rpmbuild anything.spec --bb --define "_rpmdir /outputdir"

或者可能是更复杂的东西,例如rpmbuild 的自定义 gradle 任务

于 2016-06-17T08:44:54.317 回答
2

对我来说,解决方案是将_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}
于 2019-06-22T11:30:26.260 回答
1

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

实际上不推荐使用 /usr/src/**。即通过使用 /home/[name]/rpms/ 您可以作为非特权用户工作。构建软件包不需要 su 或 sudo。


于 2016-06-19T13:17:21.397 回答
1

只是一个小小的评论.. AIX OS 中的 rpmbuild 也支持将“%define _rpmdir /outputdir”添加到规范文件

于 2018-02-13T14:58:54.027 回答