Rpm spec选项,禁止在64位操作系统上安装32位rpm

时间:2015-01-06 12:43:50

标签: fedora rpm rpmbuild rpm-spec

我想创建一个rpm规范,并在用户尝试在64位操作系统上安装时添加错误。 我想明确禁止此操作,因为我希望应用程序在其本机平台上运行,而无需安装compat_libs。

我已尝试在%pre部分添加版本检查,但似乎需要在此之前执行,并且它会导致依赖性错误。 我的代码似乎永远不会被执行。

Provides: MyRpm
Requires: pciutils, binutils, coreutils, perl

%pre 

uname -p | grep -q "x86_64"
if [ "$?" -eq "0" ]  ; then
   echo "You are trying to install a 32 bit rpm on a 64 bit distro"
   exit
fi

我想知道我是否遗漏了某些东西,或者是否有一个特殊的rpm指令在Requires步骤之前执行bash代码,并允许我自定义输出消息给用户。

1 个答案:

答案 0 :(得分:2)

这些错误不是"不允许在64位操作系统上安装[你的] 32位rpm"?或者是您想要更友好的错误消息的问题?

RPM将自动获取库要求/等。自动并在调用%pre之前检查这些内容。 (如果保证交易无法满足要求,则没有任何理由可以运行%pre。)我不相信你可以避免这种情况。

您可以为那些没有注意的用户提供如此多的保护。大概你的RPM本身在文件名中有架构标签(标准)。您可以尝试使下载站点更清晰,以及不同的RPM。

如果您的应用程序将在具有正确32位库的64位操作系统上运行,那么除非您知道这样做有问题(因为在应用程序中无法正常工作或运行速度明显较慢)出于某种原因),我不建议限制用户在他们碰巧可用的操作系统上运行它的能力。