【问题标题】:How to get spec file path from within a spec file not located in %_topdir/SPECS如何从不在 %_topdir/SPECS 中的规范文件中获取规范文件路径
【发布时间】:2017-08-09 04:53:11
【问题描述】:

一点系统信息:

  • CentOS 6.5
  • rpmdevtools 7.5.2
  • redhat-rpm-config 9.0.3
  • rpm 4.8.0

过去,我创建了大量的 RPM,方法是将我需要的所有内容移动到 %{_topdir} 子结构,对我来说是 /home/user/rpmbuild/SPECS,SOURCES,BUILD,etc,可以手动进行,也可以编写脚本为我完成繁重的工作。

我一直在尝试实施一种“仅规范文件”的方式来构建这些 RPM。换句话说,我只想运行rpmbuild -bb <path_to_mySpec.spec>。我的问题是,“我怎样才能从 mySpec.spec 中获取 mySpec.spec 的位置?”我知道我个人会知道该文件在我的系统上的位置,但我需要在规范文件创建一些绝对路径来压缩我的 src 文件夹并将其移动到 %{_topdir}/SOURCES 文件夹。我知道我可以在调用 rpmbuild 命令之前进入带有 spec 文件的目录,然后在 spec 文件中使用 %(pwd) 但我想让它尽可能可扩展。

提前感谢您的帮助!

【问题讨论】:

    标签: linux rpm packaging rpmbuild rpm-spec


    【解决方案1】:

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

    $ rpm --showrc | grep specdir
    

    -14: _specdir %{_topdir}/SPECS

    【讨论】:

    • 我不希望将我的规范文件放在 %_topdir/SPECS 中。我从 /home/user// 运行它。我没有事先将它从那个位置复制到 %_topdir/SPECS。我需要从 中找出它的位置(即 /home/user/
    • 最好的办法是在调用 rpmbuild 之前将 envvar 设置为 specfile 的绝对路径。或者,您可以(在 linux 上)挖掘 /proc/$PID 文件并尝试重建调用参数。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-28
    • 2010-09-22
    相关资源
    最近更新 更多