Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 如何从不位于%\u topdir/SPECS中的等级库文件中获取等级库文件路径_Linux_Rpm_Packaging_Rpmbuild_Rpm Spec - Fatal编程技术网

Linux 如何从不位于%\u topdir/SPECS中的等级库文件中获取等级库文件路径

Linux 如何从不位于%\u topdir/SPECS中的等级库文件中获取等级库文件路径,linux,rpm,packaging,rpmbuild,rpm-spec,Linux,Rpm,Packaging,Rpmbuild,Rpm Spec,一些系统信息: CentOS 6.5 rpmdevtools 7.5.2 redhat rpm配置9.0.3 rpm 4.8.0 在过去,我已经创建了大量RPM,将我需要的所有东西都移动到%{u topdir}子结构中,对我来说,子结构是/home/user/rpmbuild/SPECS、SOURCES、BUILD等,或者手动编写脚本为我完成繁重的工作 我一直在尝试实现一种“仅限规范文件”的方式来构建这些RPM。换句话说,我只想运行rpmbuild-bb。我的问题是,“我如何从mySpec.

一些系统信息:

  • CentOS 6.5
  • rpmdevtools 7.5.2
  • redhat rpm配置9.0.3
  • rpm 4.8.0
在过去,我已经创建了大量RPM,将我需要的所有东西都移动到
%{u topdir}
子结构中,对我来说,子结构是
/home/user/rpmbuild/SPECS、SOURCES、BUILD等
,或者手动编写脚本为我完成繁重的工作

我一直在尝试实现一种“仅限规范文件”的方式来构建这些RPM。换句话说,我只想运行
rpmbuild-bb
。我的问题是,“我如何从mySpec.spec中获取mySpec.spec的位置?”我知道我个人会知道该文件在我的系统中的位置,但我需要在spec文件中创建一些绝对路径,以将我的src文件夹添加到
%{u topdir}/SOURCES
文件夹中。我知道在调用rpmbuild命令之前,我可以移动到带有spec文件的目录中,然后在spec文件中使用%(pwd),但我希望使其尽可能可扩展


提前感谢您的帮助

如果安装了SRPM,*.spec存储在该宏定义的目录中:

$ rpm --showrc | grep specdir

-14:_specdir%{u topdir}/SPECS

我不希望将我的规范文件放在%\u topdir/SPECS中。我正在从/home/user/运行它。我不会事先将其从该位置复制到%\u topdir/SPECS。我需要从内部找出它的位置(即/home/user/您最好的选择是在调用rpmbuild之前将envvar设置为specfile的绝对路径。或者,您可以(在linux上)深入研究/proc/$PID文件并尝试重新构造调用参数。