/usr/share/perl5/Rex/Pkg/SunOS.pm is in rex 1.4.1-1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 | #
# (c) Jan Gehring <jan.gehring@gmail.com>
#
# vim: set ts=2 sw=2 tw=0:
# vim: set expandtab:
package Rex::Pkg::SunOS;
use strict;
use warnings;
our $VERSION = '1.4.1'; # VERSION
use Rex::Commands::Run;
use Rex::Helper::Run;
use Rex::Commands::File;
use Rex::Pkg::Base;
use base qw(Rex::Pkg::Base);
sub new {
my $that = shift;
my $proto = ref($that) || $that;
my $self = $proto->SUPER::new(@_);
bless( $self, $proto );
$self->{commands} = {};
return $self;
}
sub update {
my ( $self, $pkg, $option ) = @_;
my $version = $option->{'version'} || '';
Rex::Logger::debug("Version option not supported.");
Rex::Logger::debug("Installing $pkg / $version");
my $cmd = "pkgadd ";
if ( !exists $option->{"source"} ) {
die("You have to specify the source.");
}
$cmd .= " -a " . $option->{"adminfile"} if ( $option->{"adminfile"} );
$cmd .= " -r " . $option->{"responsefile"} if ( $option->{"responsefile"} );
$cmd .= " -d " . $option->{"source"};
$cmd .= " -n " . $pkg;
my $f = i_run($cmd);
unless ( $? == 0 ) {
Rex::Logger::info( "Error installing $pkg.", "warn" );
Rex::Logger::debug($f);
die("Error installing $pkg");
}
Rex::Logger::debug("$pkg successfully installed.");
return 1;
}
sub remove {
my ( $self, $pkg, $option ) = @_;
Rex::Logger::debug("Removing $pkg");
my $cmd = "pkgrm -n ";
$cmd .= " -a " . $option->{"adminfile"} if ( $option->{"adminfile"} );
my $f = i_run( $cmd . " $pkg" );
unless ( $? == 0 ) {
Rex::Logger::info( "Error removing $pkg.", "warn" );
Rex::Logger::debug($f);
die("Error removing $pkg");
}
Rex::Logger::debug("$pkg successfully removed.");
return 1;
}
sub get_installed {
my ($self) = @_;
my @lines = i_run "pkginfo -l";
my ( @pkg, %current );
for my $line (@lines) {
if ( $line =~ m/^$/ ) {
push( @pkg, {%current} );
next;
}
if ( $line =~ m/PKGINST:\s+([^\s]+)/ ) {
$current{"name"} = $1;
next;
}
if ( $line =~ m/VERSION:\s+([^\s]+)/ ) {
my ( $version, $rev ) = split( /,/, $1 );
$current{"version"} = $version;
$rev =~ s/^REV=// if ($rev);
$current{"revision"} = $rev;
next;
}
if ( $line =~ m/STATUS:\s+(.*?)$/ ) {
$current{"status"} = ( $1 eq "completely installed" ? "installed" : $1 );
next;
}
}
return @pkg;
}
1;
|