diff options
author | Lamont Granquist <lamont@scriptkiddie.org> | 2018-11-20 10:40:44 -0800 |
---|---|---|
committer | Lamont Granquist <lamont@scriptkiddie.org> | 2018-11-20 10:55:20 -0800 |
commit | 9ee9facd4c0d51bc3b042edf644c450a9eaaa086 (patch) | |
tree | 7e8f82fe133a935080b4ae382665eb9583f69221 /lib/chef/provider/package/apt.rb | |
parent | 403bf5a725cac444656606942de95920db7242eb (diff) | |
download | chef-9ee9facd4c0d51bc3b042edf644c450a9eaaa086.tar.gz |
add --allow-downgrades to apt-get
Signed-off-by: Lamont Granquist <lamont@scriptkiddie.org>
Diffstat (limited to 'lib/chef/provider/package/apt.rb')
-rw-r--r-- | lib/chef/provider/package/apt.rb | 16 |
1 files changed, 14 insertions, 2 deletions
diff --git a/lib/chef/provider/package/apt.rb b/lib/chef/provider/package/apt.rb index bfb24e502d..de1b106d45 100644 --- a/lib/chef/provider/package/apt.rb +++ b/lib/chef/provider/package/apt.rb @@ -1,6 +1,6 @@ # # Author:: Adam Jacob (<adam@chef.io>) -# Copyright:: Copyright 2008-2017, Chef Software Inc. +# Copyright:: Copyright 2008-2018, Chef Software Inc. # License:: Apache License, Version 2.0 # # Licensed under the Apache License, Version 2.0 (the "License"); @@ -92,7 +92,8 @@ class Chef package_name = name.zip(version).map do |n, v| package_data[n][:virtual] ? n : "#{n}=#{v}" end - run_noninteractive("apt-get", "-q", "-y", config_file_options, default_release_options, options, "install", package_name) + dgrade = "--allow-downgrades" if supports_allow_downgrade? && allow_downgrade + run_noninteractive("apt-get", "-q", "-y", dgrade, config_file_options, default_release_options, options, "install", package_name) end def upgrade_package(name, version) @@ -133,6 +134,17 @@ class Chef private + # @return [String] version of apt-get which is installed + def apt_version + @apt_version ||= shell_out("apt-get --version").stdout.match(/^apt (\S+)/)[1] + end + + # @return [Boolean] if apt-get supports --allow-downgrades + def supports_allow_downgrade? + return @supports_allow_downgrade unless @supports_allow_downgrade.nil? + @supports_allow_downgrade = ( version_compare(apt_version, "1.1.0") >= 0 ) + end + # compare 2 versions to each other to see which is newer. # this differs from the standard package method because we # need to be able to parse debian version strings which contain |