You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@vcl.apache.org by ar...@apache.org on 2011/10/03 19:23:19 UTC
svn commit: r1178467 -
/incubator/vcl/trunk/managementnode/bin/install_perl_libs.pl
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);
}