如何将rpmbuild默认目录从/ root / rpmbuild目录更改为其他

问题描述 投票:1回答:4

我必须为某些驱动程序构建一个rpm软件包。我需要从.tar.gz存档中构建rpm。 tar球还包含.spec文件。我已经按照以下说明设置了rpmbuild环境:http://wiki.centos.org/HowTos/SetupRpmBuildEnvironment

因此,我的目录结构是:

/home/rpmbuild
/home/rpmbuild/BUILD
/home/rpmbuild/RPMS
/home/rpmbuild/SOURCES
/home/rpmbuild/SPECS
/home/rpmbuild/SRPMS

。tar.gz文件包含规格文件,位于/ home / rpmbuild / SOURCES

[如果然后我导航到该目录并运行以下命令,则说明rpm软件包已正确构建,但位于/ root / rpmbuild / RPMS中,而不是/ home / rpmbuild / RPMS中(我希望在其中)。

sudo rpmbuild -ta driver.tar.gz

我认为这是因为我使用sudo运行rpmbuild。我是否正确地考虑了这一点?有没有办法直接将其构建在/ home / rpmbuild中?

我知道以rpmbuild作为root用户是不好的做法,但是如果我没有以root用户身份运行它,则会遇到很多错误(没有权限访问root拥有的目录-如/ tmp / orbit-root)。似乎更改每个目录的权限然后再将其更改回要困难得多。

这是解决此问题的正确方法吗?我非常感谢您的帮助。

linux centos rpm rhel rpmbuild
4个回答
0
投票

如果您需要系统目录的非root用户写权限,则您的%install脚本无法安装到%{buildroot}中。

您将需要修补构建以安装到%{buildroot}。

对于自动配置生成的Makefile,这通常像“ make DESTDIR =%{buildroot}…”]一样完成


0
投票

非特权用户应有权访问BUILDROOT。我将检查$ HOME / rpmbuild中的.rpmmacros文件,它定义了您的顶级目录。

我已经这样设置了我的.rpmmacros:


0
投票

不要使用以下命令为rpm创建安装树:


-1
投票

为了使构建文件不在默认位置,我使用--rootrpmbuild选项指定了另一个构建根目录:

© www.soinside.com 2019 - 2024. All rights reserved.