Class: LinuxAdmin::Yum
- Inherits:
-
Object
- Object
- LinuxAdmin::Yum
- Extended by:
- Common
- Defined in:
- lib/linux_admin/yum.rb,
lib/linux_admin/yum/repo_file.rb
Defined Under Namespace
Classes: RepoFile
Constant Summary
Constants included from Common
Class Method Summary collapse
- .create_repo(path, options = {}) ⇒ Object
- .download_packages(path, packages, options = {}) ⇒ Object
- .repo_list(scope = "enabled") ⇒ Object
- .repo_settings ⇒ Object
- .update(*packages) ⇒ Object
- .updates_available?(*packages) ⇒ Boolean
- .version_available(*packages) ⇒ Object
Methods included from Common
Class Method Details
.create_repo(path, options = {}) ⇒ Object
8 9 10 11 12 13 14 15 16 17 18 19 20 |
# File 'lib/linux_admin/yum.rb', line 8 def self.create_repo(path, = {}) raise ArgumentError, "path is required" unless path = .reverse_merge(:database => true, :unique_file_names => true) FileUtils.mkdir_p(path) cmd = "createrepo" params = {nil => path} params["--database"] = nil if [:database] params["--unique-md-filenames"] = nil if [:unique_file_names] run!(cmd, :params => params) end |
.download_packages(path, packages, options = {}) ⇒ Object
22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 |
# File 'lib/linux_admin/yum.rb', line 22 def self.download_packages(path, packages, = {}) raise ArgumentError, "path is required" unless path raise ArgumentError, "packages are required" unless packages = .reverse_merge(:mirror_type => :package) FileUtils.mkdir_p(path) cmd = case [:mirror_type] when :package; "repotrack" else; raise ArgumentError, "mirror_type unsupported" end params = {"-p" => path} params["-a"] = [:arch] if [:arch] params[nil] = packages run!(cmd, :params => params) end |
.repo_list(scope = "enabled") ⇒ Object
82 83 84 85 86 87 88 89 90 |
# File 'lib/linux_admin/yum.rb', line 82 def self.repo_list(scope = "enabled") # Scopes could be "enabled", "all" cmd = "yum repolist" params = {nil => scope} output = run!(cmd, :params => params).output parse_repo_list_output(output) end |
.repo_settings ⇒ Object
40 41 42 |
# File 'lib/linux_admin/yum.rb', line 40 def self.repo_settings self.parse_repo_dir("/etc/yum.repos.d") end |
.update(*packages) ⇒ Object
56 57 58 59 60 61 62 63 64 65 66 |
# File 'lib/linux_admin/yum.rb', line 56 def self.update(*packages) cmd = "yum -y update" params = {nil => packages} unless packages.blank? out = run!(cmd, :params => params) # Handle errors that exit 0 https://bugzilla.redhat.com/show_bug.cgi?id=1141318 raise AwesomeSpawn::CommandResultError.new(out.error, out) if out.error.include?("No Match for argument") out end |
.updates_available?(*packages) ⇒ Boolean
44 45 46 47 48 49 50 51 52 53 54 |
# File 'lib/linux_admin/yum.rb', line 44 def self.updates_available?(*packages) cmd = "yum check-update" params = {nil => packages} unless packages.blank? exitstatus = run(cmd, :params => params).exit_status case exitstatus when 0; false when 100; true else raise "Error: Exit Code #{exitstatus}" end end |
.version_available(*packages) ⇒ Object
68 69 70 71 72 73 74 75 76 77 78 79 80 |
# File 'lib/linux_admin/yum.rb', line 68 def self.version_available(*packages) raise ArgumentError, "packages requires at least one package name" if packages.blank? cmd = "repoquery --qf=\"%{name} %{version}\"" params = {nil => packages} out = run!(cmd, :params => params).output out.split("\n").each_with_object({}) do |i, versions| name, version = i.split(" ", 2) versions[name.strip] = version.strip end end |