【发布时间】:2012-03-04 16:36:18
【问题描述】:
我正在使用 rpmbuild 自动构建 RPM 包。这些文件最终位于 RPMS 下的架构子目录中。
问题 - 我如何从 shell 脚本中检索 RPM 正在使用的主机的架构名称?和arch 命令不一样。
【问题讨论】:
我正在使用 rpmbuild 自动构建 RPM 包。这些文件最终位于 RPMS 下的架构子目录中。
问题 - 我如何从 shell 脚本中检索 RPM 正在使用的主机的架构名称?和arch 命令不一样。
【问题讨论】:
看起来像
rpm --eval '%{_arch}'
成功了:
$ rpm --eval '%{_arch}'
x86_64
$ rpm --target 'SPARC64' --eval '%{_arch}'
sparc64
【讨论】:
/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.
【讨论】:
你做错了。在 ~/.rpmmacros 中重新定义 %_build_name_fmt。
【讨论】: