From e1aa064cb24c18597ccd38f817a656daa5f6b5a6 Mon Sep 17 00:00:00 2001 From: Lars Haugan Date: Wed, 13 Nov 2024 20:58:11 +0100 Subject: [PATCH] Add fix for package running dnf5 on fedora Fedora 41 introduced dnf5 which has deprecated the use of the flags '-d' and '-e'. As a workaround, this change will exlude the flags when running on fedora >= 41. Signed-off-by: Lars Haugan --- lib/puppet/provider/package/yum.rb | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/lib/puppet/provider/package/yum.rb b/lib/puppet/provider/package/yum.rb index 15bc372c6b3..59c9ca337a7 100644 --- a/lib/puppet/provider/package/yum.rb +++ b/lib/puppet/provider/package/yum.rb @@ -245,9 +245,15 @@ def install wanted = @resource[:name] error_level = self.class.error_level update_command = self.class.update_command + + # dnf5 on fedora 41 or later does not support -d or -e flags + no_debug = (Puppet.runtime[:facter].value('os.release.major').to_i > 5) ? ["-d", "0"] : [] + no_debug = [] if Facter.value('os.name') == 'Fedora' && Facter.value('os.release.major').to_i > 40 + no_error = (Facter.value('os.name') == 'Fedora' && Facter.value('os.release.major').to_i > 40) ? [] : ["-e", error_level] + # If not allowing virtual packages, do a query to ensure a real package exists unless @resource.allow_virtual? - execute([command(:cmd), '-d', '0', '-e', error_level, '-y', install_options, :list, wanted].compact) + execute([command(:cmd)] + no_debug + no_error +['-y', install_options, :list, wanted].compact) end should = @resource.should(:ensure) @@ -309,8 +315,11 @@ def install # Yum on el-4 and el-5 returns exit status 0 when trying to install a package it doesn't recognize; # ensure we capture output to check for errors. - no_debug = Puppet.runtime[:facter].value('os.release.major').to_i > 5 ? ["-d", "0"] : [] - command = [command(:cmd)] + no_debug + ["-e", error_level, "-y", install_options, operation, wanted].compact + no_debug = (Puppet.runtime[:facter].value('os.release.major').to_i > 5) ? ["-d", "0"] : [] + # dnf5 on fedora 41 or later does not support -d or -e flags + no_debug = [] if Facter.value('os.name') == 'Fedora' && Facter.value('os.release.major').to_i > 40 + no_error = (Facter.value('os.name') == 'Fedora' && Facter.value('os.release.major').to_i > 40) ? [] : ["-e", error_level] + command = [command(:cmd)] + no_debug + no_error + ["-y", install_options, operation, wanted].compact output = execute(command) if output.to_s =~ /^No package #{wanted} available\.$/