apt_action(action, packages, with_status: false, assumeyes: false, valid_exit_statuses: [0])
click to toggle source
def apt_action(action, packages, with_status: false, assumeyes: false, valid_exit_statuses: [0])
apt_options = []
packages = [packages].flatten(1)
apt_options << '-y' if assumeyes
apt_options_s = apt_options.empty? ? '' : ' ' + apt_options.join(' ')
packages_s = packages.empty? ? '' : ' ' + packages.join(' ')
if with_status
sys.execute_with_status("apt-get#{apt_options_s} #{action}#{packages_s}",
:interactive => !assumeyes)
else
sys.execute!("apt-get#{apt_options_s} #{action}#{packages_s}",
:interactive => !assumeyes, :valid_exit_statuses => valid_exit_statuses)
end
end
check_update(packages: nil, with_status: false)
click to toggle source
def check_update(packages: nil, with_status: false)
apt_action('upgrade --dry-run', packages, :with_status => with_status)
end
clean_cache(assumeyes: false)
click to toggle source
def clean_cache(assumeyes: false)
apt_action('clean', :assumeyes => assumeyes)
end
find_installed_package(name, queryfm = '')
click to toggle source
def find_installed_package(name, queryfm = '')
return unless installed?(name)
dpkg_cmd = "dpkg-query --show #{name}"
unless queryfm.empty?
dpkg_cmd = "dpkg-query --showformat='#{queryfm}' --show #{name}"
end
_, result = sys.execute_with_status(dpkg_cmd)
result
end
install(packages, assumeyes: false)
click to toggle source
def install(packages, assumeyes: false)
apt_action('install', packages, :assumeyes => assumeyes)
end
installed?(packages)
click to toggle source
def installed?(packages)
packages_list = [packages].flatten(1).map { |pkg| "'#{pkg}'" }.join(' ')
status, output = sys.execute_with_status(%Q(dpkg --status #{packages_list}))
return false if status != 0
status_of_pkg = output.split("\n").grep(/^Status:/).first
status_of_pkg.include?('installed')
end
list_installed_packages(queryfm = '${binary:Package}-${VERSION}\n')
click to toggle source
def list_installed_packages(queryfm = '${binary:Package}-${VERSION}\n')
sys.execute!("dpkg-query --showformat='#{queryfm}' -W").split("\n")
end
remove(packages, assumeyes: false)
click to toggle source
def remove(packages, assumeyes: false)
apt_action('remove', packages, :assumeyes => assumeyes)
end
update(packages = [], assumeyes: false)
click to toggle source
def update(packages = [], assumeyes: false)
action = packages.any? ? '--only-upgrade install' : 'upgrade'
apt_action(action, packages, :assumeyes => assumeyes)
end
version_locking_supported?()
click to toggle source
def version_locking_supported?
false
end