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)
31 if !apt_updates.nil? && apt_updates.length == 2
32 apt_updates != [[], []]
38 Facter.add('apt_has_updates') do
39 confine osfamily: 'Debian'
40 apt_package_updates = get_updates('upgrade')
43 Facter.add('apt_has_dist_updates') do
44 confine osfamily: 'Debian'
45 apt_dist_updates = get_updates('dist-upgrade')
48 Facter.add('apt_package_updates') do
49 confine apt_has_updates: true
51 if Facter.version < '2.0.0'
52 apt_package_updates[0].join(',')
54 apt_package_updates[0]
59 Facter.add('apt_package_dist_updates') do
60 confine apt_has_dist_updates: true
62 if Facter.version < '2.0.0'
63 apt_dist_updates[0].join(',')
70 Facter.add('apt_package_security_updates') do
71 confine apt_has_updates: true
73 if Facter.version < '2.0.0'
74 apt_package_updates[1].join(',')
76 apt_package_updates[1]
81 Facter.add('apt_package_security_dist_updates') do
82 confine apt_has_dist_updates: true
84 if Facter.version < '2.0.0'
85 apt_dist_updates[1].join(',')
92 Facter.add('apt_updates') do
93 confine apt_has_updates: true
95 Integer(apt_package_updates[0].length)
99 Facter.add('apt_dist_updates') do
100 confine apt_has_dist_updates: true
102 Integer(apt_dist_updates[0].length)
106 Facter.add('apt_security_updates') do
107 confine apt_has_updates: true
109 Integer(apt_package_updates[1].length)
113 Facter.add('apt_security_dist_updates') do
114 confine apt_has_dist_updates: true
116 Integer(apt_dist_updates[1].length)