CFEngine如何检查包的升级是否可用

时间:2014-10-14 21:22:37

标签: cfengine

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

就像下面的cfengine3一样。

classes:

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


reports:

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

这样的东西,但如果无法升级包,请不报告任何内容。以上只是报道了一切。

2 个答案:

答案 0 :(得分: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 upgrade
  • yum list updates

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

编辑:如果你想为特定的软件包执行此操作,可以通过在apt命令中的“upgrade”之后放置软件包名称来实现,但我不知道如何使用yum执行此操作。我能想到的最好是使用cfengines returnszero函数和“yum list updates | grep $ packagename”或similair。

虽然感觉有点笨拙

答案 1 :(得分:0)

在3.6中,标准库中定义了«package_latest»承诺。它做了什么,它试图将包升级到最大可用版本。请注意,对于基于Debian(或更确切地说,基于dpkg)的系统,有bug需要patched