Project

General

Profile

« Previous | Next » 

Revision a15d0e0b

Added by Alexis Mousset over 7 years ago

Fixes #9761: Allow to only install a specific version in apt and rpm techniques.

View differences:

techniques/applications/aptPackageInstallation/4.0/aptPackageInstallation.st
"${apt_package[${index_aptpkg}]}"
package_policy => "${apt_action[${index_aptpkg}]}",
package_method => apt_nobulk("30", "${apt_allow_untrusted[${index_aptpkg}]}"),
package_method => apt_nobulk_version("30", "${apt_allow_untrusted[${index_aptpkg}]}"),
package_select => "${apt_version_criterion[${index_aptpkg}]}",
package_version => "${apt_version[${index_aptpkg}]}",
classes => kept_if_else("debian_install_kept_${apt_package[${index_aptpkg}]}", "debian_installed_${apt_package[${index_aptpkg}]}", "debian_install_failed_${apt_package[${index_aptpkg}]}"),
......
package_noverify_returncode => "1";
}
body package_method apt_nobulk_version(apt_pkg_timeout, allow_untrusted)
{
any::
# make correct version comparisons
package_version_less_command => "${rudder_debian_knowledge.dpkg_compare_less}";
package_version_equal_command => "${rudder_debian_knowledge.dpkg_compare_equal}";
debian::
package_changes => "individual";
package_list_update_ifelapsed => "${apt_pkg_timeout}";
package_list_command => "/usr/bin/dpkg -l";
package_list_name_regex => ".i\s+([^\s:]+).*";
package_list_version_regex => ".i\s+[^\s]+\s+([^\s]+).*";
package_installed_regex => ".i.*"; # packages that have been uninstalled may be listed
package_name_convention => "${name}=${version}";
package_add_command => "/usr/bin/env DEBIAN_FRONTEND=noninteractive LC_ALL=C /usr/bin/apt-get -o Dpkg::Options::=--force-confold -o Dpkg::Options::=--force-confdef -o APT::Get::AutomaticRemove=false -o Apt::Get::AllowUnauthenticated=${allow_untrusted} --yes install";
package_list_update_command => "/usr/bin/apt-get update";
package_delete_command => "/usr/bin/env DEBIAN_FRONTEND=noninteractive LC_ALL=C /usr/bin/apt-get -o Dpkg::Options::=--force-confold -o Dpkg::Options::=--force-confdef -o APT::Get::AutomaticRemove=false --yes -q remove";
package_update_command => "/usr/bin/env DEBIAN_FRONTEND=noninteractive LC_ALL=C /usr/bin/apt-get -o Dpkg::Options::=--force-confold -o Dpkg::Options::=--force-confdef -o APT::Get::AutomaticRemove=false -o Apt::Get::AllowUnauthenticated=${allow_untrusted} --yes install";
package_verify_command => "/usr/bin/dpkg -s";
package_noverify_returncode => "1";
}
techniques/applications/rpmPackageInstallation/7.0/rpmPackageInstallation.st
# Case 3: We do have a version defined
"${rpm_package[${index_rpmpkg}]}"
package_policy => "${rpm_data[${index_rpmpkg}][0]}",
package_method => generic_nobulk("30"),
package_method => generic_nobulk_version("30"),
package_select => "${rpm_data[${index_rpmpkg}][2]}",
package_version => "${rpm_version[${index_rpmpkg}]}",
classes => rudder_common_classes_persist("rpm_package_installation_${index_rpmpkg}", "${rpm_package_check_interval}"),
......
package_update_command => "/usr/bin/rug update -y";
package_verify_command => "/usr/bin/rug verify -y$"; # $ means no args
}
body package_method generic_nobulk_version(rpm_pkg_timeout) {
package_version_less_command => "${rudder_rpm_knowledge.rpm_compare_less}";
package_version_equal_command => "${rudder_rpm_knowledge.rpm_compare_equal}";
package_changes => "individual";
redhat::
package_list_command => "/bin/rpm -qa --qf '%{name} %{version}-%{release} %{arch}\n'";
package_list_name_regex => "^(\S+?)\s\S+?\s\S+$";
package_list_version_regex => "^\S+?\s(\S+?)\s\S+$";
package_list_arch_regex => "^\S+?\s\S+?\s(\S+)$";
package_installed_regex => ".*";
package_name_convention => "${name}-${version}";
package_list_update_ifelapsed => "${rpm_pkg_timeout}";
package_add_command => "/usr/bin/yum ${redhat_knowledge.yum_options} -y install";
package_delete_command => "/bin/rpm -e";
package_update_command => "/usr/bin/yum ${redhat_knowledge.yum_options} -y update";
package_verify_command => "/bin/rpm -V";
zypper_version_ok::
package_list_command => "/bin/rpm -qa --queryformat \"i | repos | %{name} | %{version}-%{release} | %{arch}\n\"";
package_list_update_ifelapsed => "${rpm_pkg_timeout}";
package_installed_regex => "i.*";
package_list_name_regex => "[^|]+\|[^|]+\|\s+([^\s]+).*";
package_list_version_regex => "[^|]+\|[^|]+\|[^|]+\|\s+([^\s]+).*";
package_list_arch_regex => "[^|]+\|[^|]+\|[^|]+\|[^|]+\|\s+([^\s]+).*";
package_name_convention => "${name}=${version}";
package_add_command => "/usr/bin/zypper --non-interactive install";
package_delete_command => "/usr/bin/zypper --non-interactive remove --force-resolution";
package_update_command => "/usr/bin/zypper --non-interactive update";
package_verify_command => "/usr/bin/zypper --non-interactive verify$";
SuSE_10.!zypper_version_ok::
package_list_command => "/bin/rpm -qa --queryformat \"i | repos | %{name} | %{version}-%{release} | %{arch}\n\"";
package_list_update_ifelapsed => "${rpm_pkg_timeout}";
package_installed_regex => "i.*";
package_list_name_regex => "[^|]+\|[^|]+\|\s+([^\s]+).*";
package_list_version_regex => "[^|]+\|[^|]+\|[^|]+\|\s+([^\s]+).*";
package_list_arch_regex => "[^|]+\|[^|]+\|[^|]+\|[^|]+\|\s+([^\s]+).*";
package_name_convention => "${name}";
package_add_command => "/usr/bin/rug install -y";
package_delete_command => "/usr/bin/rug remove -y";
package_update_command => "/usr/bin/rug update -y";
package_verify_command => "/usr/bin/rug verify -y$"; # $ means no args
}

Also available in: Unified diff