使用某些对其他用户非常好的spec文件构buildRPM失败后,我发现它由于某种原因将当前目录更改为rpmbuild / BUILD:
+ umask 022 + cd /home/dev1/rpmbuild/BUILD + LANG=C + export LANG + unset DISPLAY
对于同一台机器上的其他用户,它保持在启动的目录中,并能够find所需的文件,所以它工作正常。
我再次检查了我的.rpmmacros,唯一的条目是指向rpmbuild目录的topdir。
SPEC文件是:
Summary: core package Name: core Version: 2 Release: 1 Group: Applications License: Commercial BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) %description Core package %prep %build %install rm -rf $RPM_BUILD_ROOT mkdir -p $RPM_BUILD_ROOT/Core mkdir -p $RPM_BUILD_ROOT/Core/etc install -m 755 dist/Core.jar $RPM_BUILD_ROOT/Core/ install -m 755 dist/launch.sh $RPM_BUILD_ROOT/Core/ install -m 755 dist/etc/configuration.conf $RPM_BUILD_ROOT/Core/etc/ %clean rm -rf $RPM_BUILD_ROOT %files %defattr(-,root,root) /Core/Core.jar /Core/launch.sh %config(noreplace) /Core/etc/configuration.conf %preun mv /Core/etc/configuration.conf /Core/etc/configuration.conf.bak %postun rm -f /Core/Core.jar rm -f /Core/launch.sh
任何想法,什么可以导致rpmbuild切换当前目录?
谢谢!
.rpmmacros topdir表示你的软件应该在哪里构build,rpmbuildbuild议在一个单独的目录中构build你的程序,以避免与活动文件交叉stream,这通常是一个好的行为。
如果你想删除这种行为,只需从.rpmmacros删除topdir,但我不build议这样做。
SPEC文件很容易取决于某些未在用户中设置的环境variables,而是在其他环境variables上设置,您应该比较并查看是否属于这种情况,如果是这样,则将此envvariables添加到SPEC文件中。
所以一言以蔽之,我认为SPEC应该归咎于不知何故,如果你把SPEC粘贴在这里,我可以看一看,然后试着为你find问题