【发布时间】:2011-02-16 04:34:27
【问题描述】:
我注意到 rpmbuild(-bb 和 --buildroot 选项)根据您使用的操作系统在不同的位置创建 .rpm:
- GNU/Linux Ubuntu
- GNU/Linux Ubuntu >= 9.10:/home/rpmbuild/...
- GNU/Linux Fedora:/usr/src/redhat/...
那么如何手动设置所有操作系统的目标文件夹?
【问题讨论】:
我注意到 rpmbuild(-bb 和 --buildroot 选项)根据您使用的操作系统在不同的位置创建 .rpm:
那么如何手动设置所有操作系统的目标文件夹?
【问题讨论】:
回复我自己,补充:
%define _rpmdir /outputdir
到 .spec 文件。
【讨论】:
您可能希望使用命令参数--define:例如,这会将 rpm 文件发送到当前目录。
rpmbuild anything.spec --bb --define "_rpmdir $(pwd)"
这将发送 rpmsto 输出目录
rpmbuild anything.spec --bb --define "_rpmdir /outputdir"
或者可能是更复杂的东西,例如Custom gradle task for rpmbuild。
【讨论】:
在 /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/**。 IE。通过使用 /home/[name]/rpms/ 您可以作为非特权用户工作。构建包不需要 su 或 sudo。
【讨论】:
只是一个小小的评论.. AIX OS 中的 rpmbuild 也支持向 spec 文件添加“%define _rpmdir /outputdir”
【讨论】:
对我来说,解决方案是将 _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}
【讨论】:
--build-in-place。