【问题标题】:How to pass variables into spec files?如何将变量传递到规范文件中?
【发布时间】:2014-05-02 04:01:35
【问题描述】:

我正在编写我的第一个规范文件,但我不明白如何使其动态化。 我正在使用其他规范文件作为参考,并注意到许多具有动态加载的名称/版本。我想知道如何做到这一点?这是一个例子:

http://svn.apache.org/repos/asf/hbase/branches/0.94/src/packages/rpm/spec/hbase.spec

主要是我想知道这些部分的含义:

%define _source      @package.name@
%define _final_name  @final.name@ 
%define _prefix      @package.prefix@
%define _bin_dir     %{_prefix}/bin 
%define _conf_dir    @package.conf.dir@
%define _include_dir %{_prefix}/include
....

我还想知道 {_prefix} 到底是什么?

对于新手问题,我们深表歉意。我很难找到这方面的信息。

【问题讨论】:

    标签: fedora redhat rpm specifications


    【解决方案1】:

    %{_prefix}(以及许多其他宏)在/usr/lib/rpm/macros 中定义。这些由rpmbuild 读取并在解析规范文件时替换。 %{_prefix} 专门表示将东西安装到根文件系统时使用的安装前缀。这通常是/usr/usr/lib/rpm/macros* 中的宏根据文件系统布局和构建包的发行版的打包约定定义路径等。例如,某个发行版可能出于某种原因希望将所有二进制文件都安装在 /foo/bin 中,在这种情况下,它会发送一个带有相应设置的 %{_bindir} 宏的宏文件。

    @ 之间的所有键(例如 @package.name@通常 表示 autoconf 变量的占位符,这些在运行 autoconf 时被替换,参见 [1]。这些通常用于在配置源包时从模板(包括上述@ 分隔的占位符)自动生成适当的文件(在本例中为规范文件)。

    就传递其他变量而言,这里有一些选项 [2]。当用户希望能够动态控制包的某些方面时,可以使用这些。

    [1]http://www.gnu.org/savannah-checkouts/gnu/autoconf/manual/autoconf-2.69/html_node/Setting-Output-Variables.html

    [2]How to pass user defined parameters to rpmbuild to fill variables

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-08-29
      • 2019-11-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多