Class: RPMdb

Inherits:
Object
  • Object
show all
Defined in:
lib/rpm.rb

Overview

module RPM

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(root = '') ⇒ RPMdb

def each



139
140
141
# File 'lib/rpm.rb', line 139

def initialize(root='')
  @db = RPM::DB.new false, root
end

Class Method Details

.open(root = '') ⇒ Object



56
57
58
# File 'lib/rpm.rb', line 56

def RPMdb.open(root='')
  RPMdb.new root
end

Instance Method Details

#closeObject

def RPMdb.open(root=”)



60
61
62
63
# File 'lib/rpm.rb', line 60

def close
  @db = nil
  GC.start
end

#eachObject

def requires(name)

Raises:

  • (RuntimeError)


132
133
134
135
136
137
# File 'lib/rpm.rb', line 132

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) ⇒ Object

def close

Raises:

  • (RuntimeError)


65
66
67
68
69
70
71
72
# File 'lib/rpm.rb', line 65

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) ⇒ Object

def file(filespec)

Raises:

  • (RuntimeError)


74
75
76
77
78
79
80
81
# File 'lib/rpm.rb', line 74

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) ⇒ Object

def group(groupname)

Raises:

  • (RuntimeError)


83
84
85
86
87
88
89
90
# File 'lib/rpm.rb', line 83

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) ⇒ Object

def whatrequires(caps)

Raises:

  • (RuntimeError)


110
111
112
113
114
115
116
117
118
119
# File 'lib/rpm.rb', line 110

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) ⇒ Object

def provides(name)

Raises:

  • (RuntimeError)


121
122
123
124
125
126
127
128
129
130
# File 'lib/rpm.rb', line 121

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) ⇒ Object

def package(packagename)

Raises:

  • (RuntimeError)


92
93
94
95
96
97
98
99
# File 'lib/rpm.rb', line 92

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) ⇒ Object

def whatprovides(caps)

Raises:

  • (RuntimeError)


101
102
103
104
105
106
107
108
# File 'lib/rpm.rb', line 101

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