Author: arkurth
Date: Mon Oct 3 17:23:19 2011
New Revision: 1178467
URL: http://svn.apache.org/viewvc?rev=1178467&view=rev
Log:
VCL-410
Updated install_perl_libs.pl to determine the correct EPEL RPM path. This was
not working for RHEL/CentOS 6.x. It now runs wget to retrieve the list of files
and extracts the correct epel-release*.rpm file name from the output.
Modified:
incubator/vcl/trunk/managementnode/bin/install_perl_libs.pl
Modified: incubator/vcl/trunk/managementnode/bin/install_perl_libs.pl
URL:
http://svn.apache.org/viewvc/incubator/vcl/trunk/managementnode/bin/install_perl_libs.pl?rev=1178467&r1=1178466&r2=1178467&view=diff
==============================================================================
--- incubator/vcl/trunk/managementnode/bin/install_perl_libs.pl (original)
+++ incubator/vcl/trunk/managementnode/bin/install_perl_libs.pl Mon Oct 3
17:23:19 2011
@@ -107,20 +107,40 @@ sub install_linux_packages {
$rhel_version = $1;
}
+
if ($rhel_version) {
- my $epel_url =
"http://download.fedora.redhat.com/pub/epel/$rhel_version/$arch/epel-release-5-4.noarch.rpm";
- print "constructed EPEL URL:\n$epel_url\n\n";
+ print "Attempting to install 'Extra Packages for Enterprise
Linux (EPEL)'\n";
+ my $epel_url =
"http://download.fedora.redhat.com/pub/epel/$rhel_version/$arch";
- my $rpm_command = "rpm -Uvh $epel_url";
- my $rpm_output = `$rpm_command 2>&1`;
- my $rpm_exit_status = $? >> 8;
- if ($rpm_exit_status ne '0' && $rpm_output !~ /already
installed/i) {
- print "WARNING: failed to install EPEL, some Perl
modules may not install correctly\nrpm command: $rpm_command\nrpm exit status:
$rpm_exit_status\nrpm output:\n$rpm_output\n";
- push @ERRORS, 'EPEL';
+ # Run wget to retrieve the list of files available in the
repository
+ # Do this to determine the EPEL RPM file name
+ my $wget_command = "wget --output-document=- $epel_url";
+ my ($wget_exit_status, $wget_output) =
run_command($wget_command);
+ if ($wget_exit_status eq '0' && $wget_output =~
/(epel-release-[\d-]+\.noarch\.rpm)/) {
+ my $rpm_file_name = $1;
+ $epel_url .= "/$rpm_file_name";
+ print "constructed EPEL URL: '$epel_url'\n\n";
+
+ # Download the EPEL RPM file
+ my $rpm_command = "rpm -Uvh $epel_url";
+ my ($rpm_exit_status, $rpm_output) =
run_command($rpm_command);
+ if ($rpm_exit_status ne '0' && $rpm_output !~ /already
installed/i) {
+ print "WARNING: failed to install EPEL, some
Perl modules may not install correctly\nrpm command: $rpm_command\nrpm exit
status: $rpm_exit_status\nrpm output:\n$rpm_output\n";
+ push @ERRORS, 'EPEL';
+ }
+ elsif ($rpm_output =~ /already installed/i) {
+ print "SUCCESS: EPEL is already installed\n";
+ }
+ else {
+ print "SUCCESS: installed EPEL\n";
+ }
}
else {
- print "SUCCESS: installed EPEL\n";
+ print "WARNING: failed to determine name of EPEL RPM,
did not locate 'epel-relase' line in wget output, some Perl modules may not
install correctly\nwget command: '$wget_command'\nexit status:
$wget_exit_status\noutput:\n$wget_output\n";
+ push @ERRORS, 'EPEL';
}
+
+
}
else {
print "OS version does not appear to be RHEL: $version,
skipping EPEL installation\n";
@@ -152,7 +172,7 @@ sub install_linux_packages {
for my $linux_package (@linux_packages) {
print_break('*');
- print "attempting to install Linux package using yum:
$linux_package\n";
+ print "Attempting to install Linux package using yum:
'$linux_package'\n";
my $yum_command = "yum install $linux_package -y";
print "yum command: $yum_command\n";
@@ -164,17 +184,17 @@ sub install_linux_packages {
print "$yum_output\n\n";
if ($yum_exit_status ne '0') {
- print "WARNING: failed to install Linux package:
$linux_package, exit status: $yum_exit_status\n";
+ print "WARNING: failed to install Linux package:
'$linux_package', exit status: $yum_exit_status\n";
#push @ERRORS, "Linux package: $linux_package";
}
elsif ($yum_output =~ /$linux_package[^\n]*already installed/i)
{
- print "SUCCESS: Linux package is already installed:
$linux_package\n";
+ print "SUCCESS: Linux package is already installed:
'$linux_package'\n";
}
elsif ($yum_output =~ /Complete\!/i) {
- print "SUCCESS: installed Linux package:
$linux_package\n";
+ print "SUCCESS: installed Linux package:
'$linux_package'\n";
}
else {
- print "WARNING: unexpected output returned while
installing Linux package: $linux_package\n";
+ print "WARNING: unexpected output returned while
installing Linux package: '$linux_package'\n";
#push @ERRORS, "Linux package: $linux_package";
}
@@ -267,7 +287,6 @@ sub install_perl_modules {
eval { CPAN::Config->commit($config_file_path) };
if ($EVAL_ERROR) {
- print "CPAN configuration:\n";
print Dumper($CPAN::Config) . "\n";
print "\nERROR: failed to create CPAN configuration file:
$config_file_path\n";
@@ -277,7 +296,7 @@ sub install_perl_modules {
print "created CPAN configuration file: $config_file_path\n";
}
- print_cpan_configuration();
+ #print_cpan_configuration();
my @perl_modules = (
'DBI',
@@ -290,12 +309,12 @@ sub install_perl_modules {
for my $perl_module (@perl_modules) {
print_break('-');
- print "attempting to install Perl module using CPAN:
$perl_module\n";
+ print "Attempting to install Perl module using CPAN:
'$perl_module'\n";
eval { CPAN::Shell->install($perl_module) };
if (!is_perl_module_installed($perl_module)) {
- print "ERROR: failed to install Perl module:
$perl_module\n";
+ print "ERROR: failed to install Perl module:
'$perl_module'\n";
push @ERRORS, "Perl module: $perl_module";
}
}
@@ -338,10 +357,10 @@ sub is_perl_module_installed {
sub run_command {
my $command = shift;
- print "attempting to run command: $command\n";
+ print "attempting to execute command: '$command'\n";
my $output = `$command 2>&1`;
my $exit_status = $? >> 8;
- print "ran command: $command, exit status: $exit_status\n";
+ print "executed command: '$command', exit status: $exit_status\n";
return ($exit_status, $output);
}