class Wright::Provider::Package::Apt
Apt
package provider. Used as a provider for {Resource::Package} on Debian-based systems.
Public Instance Methods
installed_versions()
click to toggle source
@return [Array<String>] the installed package versions
# File lib/wright/provider/package/apt.rb, line 13 def installed_versions package = "package '#{package_name}'" err = "Cannot determine installed versions for #{package}" apt_policy = exec_or_fail('apt-cache', ['policy', package_name], err) version_re = /(?!\(none\)).*/ installed_re = /^ Installed: (?<version>#{version_re})$/ match = installed_re.match(apt_policy) match ? [match['version']] : virtual_package_versions end
Private Instance Methods
apt_get(action, options, package, version = nil)
click to toggle source
# File lib/wright/provider/package/apt.rb, line 34 def apt_get(action, options, package, version = nil) package_version = version.nil? ? '' : "=#{version}" cmd = 'apt-get' args = ['-qy', *options, action.to_s, package + package_version] exec_or_fail(cmd, args, "cannot #{action} package '#{package}'") end
env()
click to toggle source
# File lib/wright/provider/package/apt.rb, line 63 def env { 'DEBIAN_FRONTEND' => 'noninteractive' } end
install_package()
click to toggle source
# File lib/wright/provider/package/apt.rb, line 26 def install_package apt_get(:install, package_options, package_name, package_version) end
remove_package()
click to toggle source
# File lib/wright/provider/package/apt.rb, line 30 def remove_package apt_get(:remove, package_options, package_name) end
reverse_provides()
click to toggle source
# File lib/wright/provider/package/apt.rb, line 56 def reverse_provides err = 'Error executing apt-cache' showpkg = exec_or_fail('apt-cache', ['showpkg', package_name], err) packages = showpkg.partition("Reverse Provides: \n").last.split("\n") Hash[packages.map { |p| p.split(' ', 2) }] end
virtual_package_installed?()
click to toggle source
@todo replace the OpenStruct hack below by a direct
instantiation of {Wright::Resource::Package} as soon as the resource-provider mapping can be changed more easily
# File lib/wright/provider/package/apt.rb, line 48 def virtual_package_installed? reverse_provides.any? do |name, version| resource = OpenStruct.new(name: name, version: version) package = Wright::Provider::Package::Apt.new(resource) package.installed? end end
virtual_package_versions()
click to toggle source
# File lib/wright/provider/package/apt.rb, line 41 def virtual_package_versions virtual_package_installed? ? ['virtual'] : [] end