1 apt_package_updates = nil
4 # Executes the upgrading of packages
6 # upgrade_option Type of upgrade passed into apt-get command arguments i.e. 'upgrade' or 'dist-upgrade'
7 def get_updates(upgrade_option)
9 if File.executable?('/usr/bin/apt-get')
10 apt_get_result = Facter::Util::Resolution.exec("/usr/bin/apt-get -s -o Debug::NoLocking=true #{upgrade_option} 2>&1")
11 unless apt_get_result.nil?
12 apt_updates = [[], []]
13 apt_get_result.each_line do |line|
14 next unless line =~ %r{^Inst\s}
15 package = line.gsub(%r{^Inst\s([^\s]+)\s.*}, '\1').strip
16 apt_updates[0].push(package)
18 %r{ Debian-Security:},
19 %r{ Ubuntu[^\s]+-security[, ]},
20 %r{ gNewSense[^\s]+-security[, ]},
22 re = Regexp.union(security_matches)
24 apt_updates[1].push(package)
32 Facter.add('apt_has_updates') do
33 confine osfamily: 'Debian'
35 apt_package_updates = get_updates('upgrade')
36 if !apt_package_updates.nil? && apt_package_updates.length == 2
37 apt_package_updates != [[], []]
42 Facter.add('apt_has_dist_updates') do
43 confine osfamily: 'Debian'
45 apt_dist_updates = get_updates('dist-upgrade')
46 if !apt_dist_updates.nil? && apt_dist_updates.length == 2
47 apt_dist_updates != [[], []]
52 Facter.add('apt_package_updates') do
53 confine apt_has_updates: true
55 apt_package_updates[0]
59 Facter.add('apt_package_dist_updates') do
60 confine apt_has_dist_updates: true
66 Facter.add('apt_package_security_updates') do
67 confine apt_has_updates: true
69 apt_package_updates[1]
73 Facter.add('apt_package_security_dist_updates') do
74 confine apt_has_dist_updates: true
80 Facter.add('apt_updates') do
81 confine apt_has_updates: true
83 Integer(apt_package_updates[0].length)
87 Facter.add('apt_dist_updates') do
88 confine apt_has_dist_updates: true
90 Integer(apt_dist_updates[0].length)
94 Facter.add('apt_security_updates') do
95 confine apt_has_updates: true
97 Integer(apt_package_updates[1].length)
101 Facter.add('apt_security_dist_updates') do
102 confine apt_has_dist_updates: true
104 Integer(apt_dist_updates[1].length)