Forum: Cfengine Help
Subject: package_select and updates/reinstall
Author: kholloway
Link to topic: https://cfengine.com/forum/read.php?3,17726,17726#msg-17726
I can't seem to figure out how to get a package to properly update to a new
version on Solaris with CFEngine 3.0.5p1.
My special sauce is below and works great for an add when the package is
missing (am I missing how package_select works?).
After that was all working I switched the add to update but that causes the
packages to get installed every run of cf-agent which is not what I wanted or
expected.
The version numbers can be lower or match and aways get selected for
reinstallation/update.
I have changed package_select various times trying less-than, greater-than,
equal to and a few other combinations, the packages still get marked for
reinstall every time.
I'm using the Solaris package settings from CFEngine SVN in tests I think.
This was dead simple in CF2 but seems to be broken in CF3 (or I clearly don't
understand something I should).
--TEST1 (ADD) / this works to install a package ONLY if one doesn't already
exist regardless of version number--
packages:
solaris|solarisx86::
"$(package_names)"
package_policy => "add",
package_select => ">=",
package_version =>
"$(solaris_versions[$(package_names)])",
package_method => solaris("$(package_names)",
"${instloc}/$(solaris_packages[$(package_names)])", "$(admin_file)");
--TEST2 (UPDATE) / this reinstalls a package on every run regardless of version
number, I have also tried package_select > instead--
packages:
solaris|solarisx86::
"$(package_names)"
package_policy => "update",
package_select => ">=",
package_version =>
"$(solaris_versions[$(package_names)])",
package_method => solaris("$(package_names)",
"${instloc}/$(solaris_packages[$(package_names)])", "$(admin_file)");
--TEST3 (REINSTALL) / this reinstalls a package on every run regardless of
version number--
packages:
solaris|solarisx86::
"$(package_names)"
package_policy => "reinstall",
package_select => ">=",
package_version =>
"$(solaris_versions[$(package_names)])",
package_method => solaris("$(package_names)",
"${instloc}/$(solaris_packages[$(package_names)])", "$(admin_file)");
---package_method bits---
body package_method solaris (pkgname, spoolfile, adminfile)
{
package_changes => "individual";
package_list_command => "/usr/bin/pkginfo -l";
package_multiline_start => "\s*PKGINST:\s+[^\s]+";
package_list_name_regex => "\s*PKGINST:\s+([^\s]+)";
package_list_version_regex => "\s*VERSION:\s+([^\s]+)";
package_list_arch_regex => "\s*ARCH:\s+([^\s]+)";
package_installed_regex => "\s*STATUS:\s*(completely|partially)\s+installed.*";
package_name_convention => "$(name)";
package_add_command => "/usr/sbin/pkgadd -n -a /tmp/$(adminfile) -d
$(spoolfile)";
package_update_command => "/usr/sbin/pkgadd -n -a /tmp/$(adminfile) -d
$(spoolfile)";
package_delete_command => "/usr/sbin/pkgrm -n -a /tmp/$(adminfile)";
}
_______________________________________________
Help-cfengine mailing list
[email protected]
https://cfengine.org/mailman/listinfo/help-cfengine