class LinuxAdmin::Rpm

Public Class Methods

import_key(file) click to toggle source

Import a GPG file for use with RPM

Rpm.import_key("/etc/pki/my-gpg-key")
# File lib/linux_admin/rpm.rb, line 20
def self.import_key(file)
  logger.info("#{self.class.name}##{__method__} Importing RPM-GPG-KEY: #{file}")
  Common.run!("rpm", :params => {"--import" => file})
end
info(pkg) click to toggle source
# File lib/linux_admin/rpm.rb, line 25
def self.info(pkg)
  params = { "-qi" => pkg}
  in_description = false
  out = Common.run!(rpm_cmd, :params => params).output
  # older versions of rpm may have multiple fields per line,
  # split up lines with multiple tags/values:
  out.gsub!(/(^.*:.*)\s\s+(.*:.*)$/, "\\1\n\\2")
  out.split("\n").each.with_object({}) do |line, rpm|
    next if !line || line.empty?
    tag,value = line.split(':')
    tag = tag.strip
    if tag == 'Description'
      in_description = true
    elsif in_description
      rpm['description'] ||= ""
      rpm['description'] << line + " "
    else
      tag = tag.downcase.gsub(/\s/, '_')
      rpm[tag] = value.strip
    end
  end
end
list_installed() click to toggle source
# File lib/linux_admin/rpm.rb, line 9
def self.list_installed
  out = Common.run!("#{rpm_cmd} -qa --qf \"%{NAME} %{VERSION}-%{RELEASE}\n\"").output
  out.split("\n").each_with_object({}) do |line, pkg_hash|
    name, ver = line.split(" ")
    pkg_hash[name] = ver
  end
end
rpm_cmd() click to toggle source
# File lib/linux_admin/rpm.rb, line 5
def self.rpm_cmd
  Common.cmd(:rpm)
end
upgrade(pkg) click to toggle source
# File lib/linux_admin/rpm.rb, line 48
def self.upgrade(pkg)
  cmd     = "rpm -U"
  params  = { nil => pkg }

  Common.run(cmd, :params => params).exit_status == 0
end