【问题标题】:Retrieving current architecture for RPM检索 RPM 的当前架构
【发布时间】:2012-03-04 16:36:18
【问题描述】:

我正在使用 rpmbuild 自动构建 RPM 包。这些文件最终位于 RPMS 下的架构子目录中。

问题 - 我如何从 shell 脚本中检索 RPM 正在使用的主机的架构名称?和arch 命令不一样。

【问题讨论】:

    标签: linux rpm rpmbuild


    【解决方案1】:

    看起来像

    rpm --eval '%{_arch}'
    

    成功了:

    $ rpm --eval '%{_arch}'
    x86_64
    
    $ rpm --target 'SPARC64' --eval '%{_arch}'
    sparc64
    

    【讨论】:

      【解决方案2】:

      /usr/lib/rpm/rpmrc 将已知的操作系统级架构名称转换为规范的 RPM 架构名称。以下 shell 脚本为我完成了这项工作:

      ARCH=`arch`
      # OS-level architecture name, like 'i686'
      
      ARCH=`cat /usr/lib/rpm/rpmrc | grep "buildarchtranslate: $ARCH" | cut -c21-`
      # returns the translate line as "arch-from: arch-to"
      
      ARCH=${ARCH/#*: /}
      # strips the prefix up to colon and following space, returns arch-to.
      # Assumes just one space after colon. If not, more regex magic is needed. 
      

      【讨论】:

        【解决方案3】:

        你做错了。在 ~/.rpmmacros 中重新定义 %_build_name_fmt。

        【讨论】:

        • 按照惯例,架构也是生成文件名的一部分。我想要那样。所以我宁愿检索架构而不是更改文件名格式。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-07-30
        • 2011-11-11
        • 1970-01-01
        • 1970-01-01
        • 2014-10-19
        相关资源
        最近更新 更多