Как CFEngine может проверить, доступно ли обновление для пакета
Это вопрос cfengine2 и 3. Я пытаюсь получить предупреждение, если пакет установлен и его можно обновить. Есть ли способ сделать это?
Как в cfengine3 ниже.
classes:
"pkginstalled"
expression => fileexists("/pkgname");
reports:
Hr05|Hr16.ubuntu.debian.redhat.pkginstalled::
"Package needs to be upgraded."
Примерно так, но если пакет не может быть обновлен, не сообщайте ничего. Выше просто сообщает обо всем.
2 ответа
Документация CFEngine гласит:
"Версии определенного программного обеспечения описываются совершенно по-разному, вызывая много путаницы. Например, распространенной моделью является использование основного номера версии, дополнительного номера версии и номера выпуска исправления, например, 3.1.5. Однако многие сопровождающие берут свои собственные дополнения, такие как 3.1.5-2 или 3.1.5-2.el5. Поскольку эти модели зависят от операционной системы, программного обеспечения и выпуска, вы должны знать номера версий, используемые в ваших операционных системах, и обращаться к их правильно. CFEngine не может надежно угадать эти вещи для вас. " https://auth.cfengine.com/archive/manuals/st-packages
При этом вы можете запросить у apt и yum обновляемые пакеты, например:
- apt-get -s upgrade
- обновления списка ням
Это полезно только если вы используете менеджер пакетов, конечно. Это означает, что вы должны иметь возможность поместить результаты в слайд и вывести их в отчет. Если вы развертываете пакеты другим способом, все становится сложнее.
РЕДАКТИРОВАТЬ: Если вы хотите сделать это для определенных пакетов, вы можете сделать это, указав имя пакета после "upgrade" в команде apt, но я не знаю, как это сделать с помощью yum. Лучшее, что я могу придумать, - это использовать функцию cfengines returnzero с "обновлениями списка yum | grep $packagename" или similair. Это чувствует себя немного неуклюжим, хотя