2015-01-06 69 views
1

我想创建一个rpm规范,并在用户尝试将其安装在64位操作系统上时添加错误。 我想明确地禁止这个动作,因为我希望应用程序在其本地平台上运行,而不需要安装compat_libs。Rpm spec选项,不允许在64位操作系统上安装32位rpm

我曾尝试在%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 

我想知道如果我失去了一些东西,或者如果是执行bash的代码需要步骤前,让我自定义输出信息给用户一个特殊的转速指令。

+0

您是否试过'需要:pciutils.x86_64'?像Etan Reisner的回答一样,我不确定你要去哪里。 –

回答

2

做这些错误不是“禁止在64位操作系统上安装[你的] 32位rpm”吗?或者是您想要更友好的错误消息的问题?

RPM将自动提取库需求/等。自动和这些将被检查之前,你的%pre被称为。 (如果交易保证不符合要求,没有任何理由去运行%pre。)我不相信你可以避免这种情况。

只有那么多的保护,你可以提供给没有关注的用户。据推测,您的RPM本身具有文件名中的体系结构标记(按照标准)。您可以尝试使下载网站更清楚不同的RPM是什么。

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

+0

没错,我想向我的用户展示更友好的消息。由于性能原因,我总是希望禁止在非本地平台上安装。我知道“Autoreqprov no”选项,但只能禁用自动依赖检查。需求列表中的那些仍然被检查。 – user852689

+0

对Requires行的依赖关系不应该(我不认为)将架构附加到它们上(但我必须检查/测试以确保它们)。 –

相关问题