#!/usr/bin/python2 # Check Java versions against the newest one installed # # This assumes that there's OpenJDK installed and kept up to date. from __future__ import division, print_function from distutils.version import LooseVersion from subprocess import check_output import re def is_java(package): filelist = check_output(['rpm', '-ql', package]) return re.search(r'bin/java$', filelist, re.MULTILINE) def package_version(package): version_query = ['rpm', '--queryformat', '%{VERSION}', '-q'] version_query.append(package) version = check_output(version_query) version = re.sub('_', '.', version) return version def java_packages(): all_packages = check_output(['rpm', '-qa']).split('\n') packages = [package for package in all_packages if re.search(r'jdk|jre', package)] return [package for package in packages if is_java(package)] versions = [LooseVersion(package_version(package)) for package in java_packages()] wanted_version = max(versions) old_versions = [version for version in versions if version < wanted_version] print('Wanted:', str(wanted_version)) print('Too old:', [str(version) for version in old_versions])