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);
 }