RPM 构建总是从 ~/rpmbuild 中获取文件吗?
Does RPM build always take the files from ~/rpmbuild?
我在互联网上看到的所有地方,rpmbuild 的默认位置都是用户的主目录,~/rpmbuild
。如果我想在另一个文件夹位置构建它,比如 ~/foo/bar/rpmbuild
?
怎么办?
这是为什么?如果我的构建位置是其他位置,会有什么不同?
编辑:这意味着即使 ~/rpmmacros
文件也可以在任何地方。
您可以像这样在 .rpmmacros
配置文件(在您的主目录中)中设置 %_topdir
变量:
echo "%_topdir ~/foo/bar/rpmbuild" >> ~/.rpmmacros
它不会(不应该)真的有很大的不同;因为来源将被 rpmbuild
复制到那里;然后它们被构建、安装和打包...因为所有路径都应该是相对的,所以结果应该是相同的。
PS:有关 rpm build area 的更多信息
PPS:很久以前默认的 build area
在 /usr/src/packages 中;但是你遇到了权限问题等等
您可以通过在 rpmbuild 命令行中指定 _topdir 来构建 rpm,而无需修改或维护 .rpmmacros 文件。例如,
rpmbuild --define '_topdir $(RPMBUILD_DIR)' \
--define 'version $(VERSION)' \
--define 'release $(RELEASE)' \
-bb $(PKGNAME).spec
在我的一个 rpm 项目的 Makefile 中,用于在 ${RPMBUILD_DIR} 下构建我的 rpm,并使用变量中的指定版本和发布号。我经常使用它,这样我就可以拥有多个 rpm 构建项目,这些项目在尝试构建同一目录时不会相互冲突。
我在互联网上看到的所有地方,rpmbuild 的默认位置都是用户的主目录,~/rpmbuild
。如果我想在另一个文件夹位置构建它,比如 ~/foo/bar/rpmbuild
?
这是为什么?如果我的构建位置是其他位置,会有什么不同?
编辑:这意味着即使 ~/rpmmacros
文件也可以在任何地方。
您可以像这样在 .rpmmacros
配置文件(在您的主目录中)中设置 %_topdir
变量:
echo "%_topdir ~/foo/bar/rpmbuild" >> ~/.rpmmacros
它不会(不应该)真的有很大的不同;因为来源将被 rpmbuild
复制到那里;然后它们被构建、安装和打包...因为所有路径都应该是相对的,所以结果应该是相同的。
PS:有关 rpm build area 的更多信息
PPS:很久以前默认的 build area
在 /usr/src/packages 中;但是你遇到了权限问题等等
您可以通过在 rpmbuild 命令行中指定 _topdir 来构建 rpm,而无需修改或维护 .rpmmacros 文件。例如,
rpmbuild --define '_topdir $(RPMBUILD_DIR)' \
--define 'version $(VERSION)' \
--define 'release $(RELEASE)' \
-bb $(PKGNAME).spec
在我的一个 rpm 项目的 Makefile 中,用于在 ${RPMBUILD_DIR} 下构建我的 rpm,并使用变量中的指定版本和发布号。我经常使用它,这样我就可以拥有多个 rpm 构建项目,这些项目在尝试构建同一目录时不会相互冲突。