【问题标题】:Rpm spec option that disallows installation of 32 bit rpm on 64 bit OS不允许在 64 位操作系统上安装 32 位 rpm 的 Rpm 规范选项
【发布时间】:2015-01-06 12:43:50
【问题描述】:

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

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

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 代码并允许我自定义输出给用户的消息。

【问题讨论】:

  • 你试过Requires: pciutils.x86_64吗?就像 Etan Reisner 的回答一样,我不确定你打算怎么做。

标签: fedora rpm rpmbuild rpm-spec


【解决方案1】:

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

RPM 将自动获取库需求/等。自动,并且在调用您的 %pre 之前会检查这些内容。 (如果保证事务满足要求,则没有任何理由运行%pre。)我认为您无法避免这种情况。

对于没有注意的用户,您只能提供这么多的保护。大概您的 RPM 本身在文件名中有架构标签(作为标准)。您也可以尝试让下载站点更清楚不同 RPM 的用途。

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

【讨论】:

  • 没错,我想向我的用户显示更友好的消息。由于性能原因,我总是想禁止在非本地平台上安装。我知道“Autoreqprov no”选项,但这只会禁用自动依赖性检查。 Requires 列表中的那些仍然处于选中状态。
  • Requires 行上的依赖项不应该(我不认为)附加架构(但我必须检查/测试才能确定)。
猜你喜欢
  • 1970-01-01
  • 2013-11-07
  • 1970-01-01
  • 1970-01-01
  • 2011-12-18
  • 2012-06-23
  • 2013-08-29
  • 2012-07-26
  • 1970-01-01
相关资源
最近更新 更多