我必须为一些驱动程序构建一个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文件包含specfile,放在/home/rpmbuild/SOURCES中
如果我随后导航到该目录并运行以下命令,则可以正确构建rpm包,但它被放置在/root/rpmbuild/rpm中,而不是/home/rpmbuild/rpm中(我期望它位于该位置)。
sudo rpmbuild -ta driver.tar.gz我认为这是因为我使用sudo运行了rpmbuild。我的想法是正确的吗?有没有办法将它定向到/home/rpmbuild中呢?
我知道以root身份使用rpmbuild是一种不好的做法,但是如果我不以root身份运行它,我会遇到许多错误(没有权限访问root所拥有的目录,如/tmp/orbit-root)。似乎更改每个目录的权限比改回它们要困难得多。
这是正确的方法吗?我非常感谢你的帮助。
发布于 2020-03-05 12:53:52
不要使用以下命令为rpm创建安装树:
rpmdev-setuptree使用下面给出的命令在要构建rpm的位置创建rpm树:
mkdir -p rpmbuild/{BUILD,BUILDROOT,RPMS,SOURCES,SPECS,SRPMS}现在,将相应的文件复制到specs和tar.gz文件夹中,并在rpmbuild目录中运行以下命令:
rpmbuild --define "_topdir `pwd`" -v -ba SPECS/{*spec_file.specs*}发布于 2015-03-04 00:14:12
非特权用户应具有访问BUILDROOT的权限。我会检查$HOME/rpmbuild中的.rpmmacros文件,它定义了你的顶层目录在哪里。
我已经这样设置了我的.rpmmacros:
%packager YourName
%_topdir /home/build/rpmbuild
%_tmppath /home/build/rpmbuild/tmp发布于 2015-01-10 01:33:47
如果您需要系统目录的非根用户写入权限,那么您的%install scriptlet将不会安装到%{buildroot}中。
您需要修补您的构建才能安装到%{buildroot}中。
对于autoconf生成的Makefiles,这通常是这样做的
make DESTDIR=%{buildroot} ...https://stackoverflow.com/questions/23965958
复制相似问题