我注意到 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/...
那么如何手动设置所有操作系统的目标文件夹?
回复自己,补充:
%define _rpmdir /outputdir
到 .spec 文件。
您可能想要使用命令参数--define
:例如,这会将 rpm 文件发送到当前目录。
rpmbuild anything.spec --bb --define "_rpmdir $(pwd)"
这将发送 rpmsto 输出目录
rpmbuild anything.spec --bb --define "_rpmdir /outputdir"
或者可能是更复杂的东西,例如rpmbuild 的自定义 gradle 任务。
对我来说,解决方案是将_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}
在 /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。
只是一个小小的评论.. AIX OS 中的 rpmbuild 也支持将“%define _rpmdir /outputdir”添加到规范文件