如何将硬件依赖项放在 .deb 包上?

如何将硬件依赖项放在 .deb 包上?

构建针对任意 CPU 指令优化的 deb 包,如何将 CPU 指令作为 deb 包的依赖项?该软件包不适合大规模分发,但我不想让人们对崩溃感到困惑,因为他们的 CPU 对于我的构建来说太旧了。

答案1

我不确定dpkg格式本身是否可以满足您的要求。

然而你利用预安装脚本。在此您可以测试 CPU 是否处于正确的级别,如果不够好则中止。这样你的包就不会安装。

该脚本是pkg 部分的preinst一部分;control你可以在以下位置阅读相关内容:https://www.debian.org/doc/manuals/debian-faq/ch-pkg_basics.en.html

这些有时被称为预安装健全脚本。如果它们以非零退出代码结束,则包安装失败。

你的preinst脚本可以很简单

#!/bin/sh
set -e

flags=`grep ^flags /proc/cpuinfo | head -1`

if [ -z "`echo $flags | grep sse4`" ]
then
  echo Can only run on machines with SSE4 instructions.  Install failed
  exit 1
fi

exit 0

相关内容