class Knife::Pkg::AptPackageController
Public Class Methods
new(node, session, opts = {})
click to toggle source
Calls superclass method
# File lib/knife-pkg/controllers/apt.rb, line 23 def initialize(node, session, opts = {}) super(node, session, opts) @installed_packages = Array.new end
Public Instance Methods
available_updates()
click to toggle source
# File lib/knife-pkg/controllers/apt.rb, line 63 def available_updates parse_upgrade(exec("#{sudo} apt-get dist-upgrade -V -s | egrep -v \"^(Conf|Inst)\"").stdout) end
dry_run_supported?()
click to toggle source
# File lib/knife-pkg/controllers/apt.rb, line 28 def dry_run_supported? true end
installed_version(package)
click to toggle source
# File lib/knife-pkg/controllers/apt.rb, line 48 def installed_version(package) package = @installed_packages.select { |p| p.name == package.name }.first || Package.new("") if !package.name.empty? version = package.version else # fallback version = exec("dpkg -p #{package.name} | grep -i Version: | awk '{print $2}' | head -1").stdout.chomp end version end
last_pkg_cache_update()
click to toggle source
# File lib/knife-pkg/controllers/apt.rb, line 36 def last_pkg_cache_update result = nil begin result = exec("#{sudo} stat -c %y /var/lib/apt/lists") Time.parse(result.stdout.chomp) rescue RuntimeError => e e.backtrace.each { |l| Chef::Log.debug(l) } Chef::Log.warn(e.message) Time.now - (max_pkg_cache_age + 100) end end
parse_upgrade(upgrade_line)
click to toggle source
# File lib/knife-pkg/controllers/apt.rb, line 67 def parse_upgrade(upgrade_line) result = Array.new rx = Regexp.new(/\s+(?<name>\S+)\s\((?<installed>.+)\s=>\s(?<new>.+)\)/) found = false upgrade_line.split("\n").each do |line| unless found found = true if line.match(/will be upgraded/) next end match = rx.match(line) unless match.nil? result << Package.new(match[:name], match[:new]) @installed_packages << Package.new(match[:name], match[:installed]) end end result end
update_package!(package)
click to toggle source
# File lib/knife-pkg/controllers/apt.rb, line 85 def update_package!(package) cmd_string = "#{sudo} DEBIAN_FRONTEND=noninteractive apt-get install #{package.name} -y -o Dpkg::Options::='--force-confold'" cmd_string += " -s" if @options[:dry_run] exec(cmd_string) end
update_pkg_cache()
click to toggle source
# File lib/knife-pkg/controllers/apt.rb, line 32 def update_pkg_cache exec("#{sudo}apt-get update") end
update_version(package)
click to toggle source
# File lib/knife-pkg/controllers/apt.rb, line 59 def update_version(package) exec("#{sudo} apt-cache policy #{package.name} | grep Candidate | awk '{print $2}'").stdout.chomp end