0

这是 cfengine2 和 3 的问题。如果安装了软件包并且可以升级它,我正在尝试获取警报以触发。有没有办法做到这一点?

就像在下面的 cfengine3 中一样。

classes:

    "pkginstalled"
         expression => fileexists("/pkgname");


reports:

     Hr05|Hr16.ubuntu.debian.redhat.pkginstalled::
         "Package needs to be upgraded."

像这样的东西,但如果包不能升级,不要报告任何东西。以上只是报告了一切。

4

2 回答 2

0

CFEngine 文档说:

“特定软件的版本以完全不同的方式描述,造成很多混乱。例如,常见的模型是使用主要版本号、次要版本号和补丁版本号,例如 3.1.5。但是,许多维护人员自行添加,例如 3.1.5-2 或 3.1.5-2.el5。因为这些模型是特定于操作系统、软件和版本的,所以您必须知道操作系统上使用的版本号并参考正确的。CFEngine 无法可靠地为您猜测这些事情。https://auth.cfengine.com/archive/manuals/st-packages#How-CFEngine-compares-package-versions

话虽如此,您可以查询 apt 和 yum 以获取可更新的软件包,如下所示:

  • apt-get -s 升级
  • 百胜列表更新

当然,这仅在您使用包管理器时才有用。这意味着您应该能够将结果放入 slist 并在报告中输出。如果您以另一种方式部署软件包,事情就会变得更加困难。

编辑:如果您想对特定软件包执行此操作,您可以通过将软件包名称放在 apt 命令中的“升级”之后来执行此操作,但我不知道如何使用 yum 执行此操作。我能想到的最好的方法是将cfengines 的returnszero 函数与“yum list updates | grep $packagename”或类似的一起使用。虽然感觉有点笨拙

于 2015-02-12T12:35:56.650 回答
0

在 3.6 中,标准库中定义了一个 «package_latest» 承诺。它的作用是尝试将软件包升级到最大可用版本。请注意,对于基于 Debian(或者更确切地说,基于 dpkg)的系统,存在需要修补的错误

于 2015-03-18T16:06:25.127 回答