class RPMdb

Public Class Methods

new(root='') click to toggle source
# File lib/rpm.rb, line 162
def initialize(root='')
  @db = RPM::DB.new false, root
end
open(root='') click to toggle source
# File lib/rpm.rb, line 79
def RPMdb.open(root='')
  RPMdb.new root
end

Public Instance Methods

close() click to toggle source
# File lib/rpm.rb, line 83
def close
  @db = nil
  GC.start
end
each() { |name, version.v, version.r| ... } click to toggle source
# File lib/rpm.rb, line 155
def each
  raise RuntimeError, 'closed DB' if @db.nil?
  @db.each do |pkg|
    yield pkg.name, pkg.version.v, pkg.version.r
  end
end
file(filespec) click to toggle source
# File lib/rpm.rb, line 88
def file(filespec)
  raise RuntimeError, 'closed DB' if @db.nil?
  pkgs = []
  @db.each_match(RPM::TAG_BASENAMES, filespec) do |pkg|
    [pkg.name, pkg.version.v, pkg.version.r]
  end
  pkgs
end
group(groupname) click to toggle source
# File lib/rpm.rb, line 97
def group(groupname)
  raise RuntimeError, 'closed DB' if @db.nil?
  pkgs = []
  @db.each_match(RPM::TAG_GROUP, groupname) do |pkg|
    pkgs << [pkg.name, pkg.version.v, pkg.version.r]
  end
  pkgs
end
package(packagename) click to toggle source
# File lib/rpm.rb, line 106
def package(packagename)
  raise RuntimeError, 'closed DB' if @db.nil?
  pkgs = []
  @db.each_match(RPM::DBI_LABEL, packagename) do |pkg|
    pkgs << [pkg.name, pkg.version.v, pkg.version.r]
  end
  pkgs
end
provides(name) click to toggle source
# File lib/rpm.rb, line 133
def provides(name)
  raise RuntimeError, 'closed DB' if @db.nil?
  pkg = nil
  @db.each_match(RPM::DBI_LABEL, name) {|p| pkg = p}
  if pkg then
    pkg.provides.collect {|prov| prov.name }
  else
    []
  end
end
requires(name) click to toggle source
# File lib/rpm.rb, line 144
def requires(name)
  raise RuntimeError, 'closed DB' if @db.nil?
  pkg = nil
  @db.each_match(RPM::DBI_LABEL, name) {|p| pkg = p; break}
  if pkg then
    pkg.requires.collect {|req| [req.name, req.version.v, req.version.r] }
  else
    []
  end
end
whatprovides(caps) click to toggle source
# File lib/rpm.rb, line 115
def whatprovides(caps)
  raise RuntimeError, 'closed DB' if @db.nil?
  pkgs = []
  @db.each_match(RPM::TAG_PROVIDENAME, caps) do |pkg|
    pkgs << [pkg.name, pkg.version.v, pkg.version.r]
  end
  pkgs
end
whatrequires(caps) click to toggle source
# File lib/rpm.rb, line 124
def whatrequires(caps)
  raise RuntimeError, 'closed DB' if @db.nil?
  pkgs = []
  @db.each_match(RPM::TAG_REQUIRENAME, caps) do |pkg|
    pkgs << [pkg.name, pkg.version.v, pkg.version.r]
  end
  pkgs
end