Method: Unix::Pkg#solaris_install_local_package

Defined in:
lib/beaker/host/unix/pkg.rb

#solaris_install_local_package(package_path, noask_directory = nil) ⇒ Beaker::Result

Installs a local package file on a solaris host

Parameters:

  • package_path (String)

    Path to the package file on the host

  • noask_directory (String) (defaults to: nil)

    Path to the directory for the noask file (only needed for solaris 10).

Returns:

Raises:

  • (ArgumentError)


492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
# File 'lib/beaker/host/unix/pkg.rb', line 492

def solaris_install_local_package(package_path, noask_directory = nil)
  variant, version, arch, codename = self['platform'].to_array

  version = version.split('.')[0] # packages are only published for major versions

  error_message = nil
  unless variant == 'solaris'
    error_message = "Can not call solaris_install_local_package for the "
    error_message << "non-solaris platform '#{variant}'"
  end
  if version != '10' && version != '11'
    error_message = "Solaris #{version} is not supported by the method "
    error_message << 'solaris_install_local_package'
  end
  raise ArgumentError, error_message if error_message

  if version == '10'
    noask_text = self.noask_file_text
    create_remote_file self, File.join(noask_directory, 'noask'), noask_text

    install_cmd = "gunzip -c #{package_path} | pkgadd -d /dev/stdin -a noask -n all"
  elsif version == '11'
    install_cmd = "pkg install -g #{package_path} puppet-agent"
  end
  self.exec(Beaker::Command.new(install_cmd))
end