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 アップグレード
  • yum リストの更新

もちろん、これはパッケージマネージャーを使用している場合にのみ役立ちます。これは、結果を slist に入れてレポートに出力できることを意味します。別の方法でパッケージを展開している場合、事態はさらに困難になります。

編集: 特定のパッケージに対してこれを行いたい場合は、apt コマンドの「アップグレード」の後にパッケージ名を入力することで実行できますが、yum でこれを行う方法がわかりません。私が考えることができる最善の方法は、「yum list updates | grep $packagename」またはsimilairでcfenginesのreturnszero関数を使用することです。ちょっと窮屈な感じですが

于 2015-02-12T12:35:56.650 に答える
0

3.6 では、標準ライブラリで定義された «package_latest» promise があります。何をするかというと、パッケージを利用可能な最大バージョンにアップグレードしようとします。Debian ベース (または dpkg ベース) のシステムには、パッチを適用する必要があるバグがあることに注意してください。

于 2015-03-18T16:06:25.127 に答える