首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将rpmbuild缺省目录从/root/rpmbuild目录更改为其他目录

如何将rpmbuild缺省目录从/root/rpmbuild目录更改为其他目录
EN

Stack Overflow用户
提问于 2014-05-31 10:58:00
回答 4查看 6.4K关注 0票数 1

我必须为一些驱动程序构建一个rpm包。我需要从.tar.gz归档文件构建rpm。tar文件还包含.spec文件。我已经设置了我的rpmbuild环境,如下所述:http://wiki.centos.org/HowTos/SetupRpmBuildEnvironment

我的目录结构是这样的:

代码语言:javascript
复制
/home/rpmbuild
/home/rpmbuild/BUILD
/home/rpmbuild/RPMS
/home/rpmbuild/SOURCES
/home/rpmbuild/SPECS
/home/rpmbuild/SRPMS

.tar.gz文件包含specfile,放在/home/rpmbuild/SOURCES中

如果我随后导航到该目录并运行以下命令,则可以正确构建rpm包,但它被放置在/root/rpmbuild/rpm中,而不是/home/rpmbuild/rpm中(我期望它位于该位置)。

代码语言:javascript
复制
sudo rpmbuild -ta driver.tar.gz

我认为这是因为我使用sudo运行了rpmbuild。我的想法是正确的吗?有没有办法将它定向到/home/rpmbuild中呢?

我知道以root身份使用rpmbuild是一种不好的做法,但是如果我不以root身份运行它,我会遇到许多错误(没有权限访问root所拥有的目录,如/tmp/orbit-root)。似乎更改每个目录的权限比改回它们要困难得多。

这是正确的方法吗?我非常感谢你的帮助。

EN

回答 4

Stack Overflow用户

发布于 2020-03-05 12:53:52

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

代码语言:javascript
复制
rpmdev-setuptree

使用下面给出的命令在要构建rpm的位置创建rpm树:

代码语言:javascript
复制
mkdir -p rpmbuild/{BUILD,BUILDROOT,RPMS,SOURCES,SPECS,SRPMS}

现在,将相应的文件复制到specstar.gz文件夹中,并在rpmbuild目录中运行以下命令:

代码语言:javascript
复制
rpmbuild --define "_topdir `pwd`" -v -ba SPECS/{*spec_file.specs*}
票数 5
EN

Stack Overflow用户

发布于 2015-03-04 00:14:12

非特权用户应具有访问BUILDROOT的权限。我会检查$HOME/rpmbuild中的.rpmmacros文件,它定义了你的顶层目录在哪里。

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

代码语言:javascript
复制
%packager YourName
%_topdir /home/build/rpmbuild 
%_tmppath /home/build/rpmbuild/tmp
票数 1
EN

Stack Overflow用户

发布于 2015-01-10 01:33:47

如果您需要系统目录的非根用户写入权限,那么您的%install scriptlet将不会安装到%{buildroot}中。

您需要修补您的构建才能安装到%{buildroot}中。

对于autoconf生成的Makefiles,这通常是这样做的

代码语言:javascript
复制
make DESTDIR=%{buildroot} ...
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23965958

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档