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 Help-cfengine@cfengine.org https://cfengine.org/mailman/listinfo/help-cfengine