[LON-CAPA-cvs] cvs: doc(version_2_11_X) /install/linux install.pl

raeburn raeburn at source.lon-capa.org
Sun Mar 28 23:50:33 EDT 2021


raeburn		Mon Mar 29 03:50:33 2021 EDT

  Modified files:              (Branch: version_2_11_X)
    /doc/install/linux	install.pl 
  Log:
  - For 2.11
    Backport 1.77
  
  
-------------- next part --------------
Index: doc/install/linux/install.pl
diff -u doc/install/linux/install.pl:1.45.2.15 doc/install/linux/install.pl:1.45.2.16
--- doc/install/linux/install.pl:1.45.2.15	Sun Mar 28 22:10:35 2021
+++ doc/install/linux/install.pl	Mon Mar 29 03:50:33 2021
@@ -76,7 +76,7 @@
           &mt('Stopping execution.')."\n";
     exit;
 } else {
-    print LOG '$Id: install.pl,v 1.45.2.15 2021/03/28 22:10:35 raeburn Exp $'."\n";
+    print LOG '$Id: install.pl,v 1.45.2.16 2021/03/29 03:50:33 raeburn Exp $'."\n";
 }
 
 #
@@ -499,7 +499,7 @@
     $recommended{'apache'} = &chkapache($distro,$instdir);
     $recommended{'stopsrvcs'} = &chksrvcs($distro,$tostop);
     ($recommended{'download'},$downloadstatus,$filetouse,$production,$testing) 
-        = &need_download();
+        = &need_download($distro,$instdir);
     return ($distro,$gotprereqs,$localecmd,$packagecmd,$updatecmd,$installnow,
             $mysqlrestart,\%recommended,$dbh,$has_pass,$mysql_unix_socket,
             $has_lcdb,$downloadstatus,$filetouse,$production,$testing,$apachefw,
@@ -1065,12 +1065,12 @@
 }
 
 sub need_download {
+    my ($distro,$instdir) = @_;
     my $needs_download = 1;
     my ($production,$testing,$stdsizes) = &download_versionslist();
-    my ($rootdir,$localcurrent,$localtesting,%tarball,%localsize,%bymodtime,
+    my ($localcurrent,$localtesting,%tarball,%localsize,%bymodtime,
         %bysize,$filetouse,$downloadstatus);
-    $rootdir = '/root';
-    if (opendir(my $dir,"$rootdir")) {
+    if (opendir(my $dir,$instdir)) {
         my (@lcdownloads,$version);
         foreach my $file (readdir($dir)) {
             if ($file =~ /^loncapa\-([\w\-.]+)\.tar\.gz$/) {
@@ -1080,14 +1080,14 @@
             }
             if (ref($stdsizes) eq 'HASH') {
                 if ($version eq 'current') {
-                    my @stats = stat("$rootdir/$file");
+                    my @stats = stat("$instdir/$file");
                     $localcurrent = $stats[7];
                     if ($localcurrent == $stdsizes->{$production}) {
                         $needs_download = 0;
                         $filetouse = $file;
                     }
                 } elsif ($version eq 'testing') {
-                    my @stats = stat("$rootdir/$file");
+                    my @stats = stat("$instdir/$file");
                     $localtesting = $stats[7];
                     if ($localtesting == $stdsizes->{$testing}) {
                         $needs_download = 0;
@@ -1101,7 +1101,7 @@
         if ($needs_download) {
             if (@lcdownloads > 0) {
                 foreach my $version (@lcdownloads) {
-                    my @stats = stat("$rootdir/$tarball{$version}");
+                    my @stats = stat("$instdir/$tarball{$version}");
                     my $mtime = $stats[9];
                     $localsize{$version} = $stats[7];
                     if ($mtime) {
@@ -1134,21 +1134,21 @@
                     my $newest = $sorted[0];
                     if (ref($bymodtime{$newest}) eq 'ARRAY') {
                         $downloadstatus = 
-                              "Latest LON-CAPA source download in $rootdir is: ".
+                              "Latest LON-CAPA source download in $instdir is: ".
                               join(',',@{$bymodtime{$newest}})." (downloaded ".
                               localtime($newest).")\n";
                     }
                 } else {
                     $downloadstatus = 
-                        "The $rootdir directory already contains the latest LON-CAPA version:".
+                        "The $instdir directory already contains the latest LON-CAPA version:".
                         "\n".$filetouse."\n"."which can be used for installation.\n";
                 }
             } else {
-                $downloadstatus = "The $rootdir directory does not appear to contain any downloaded LON-CAPA source code files which can be used for installation.\n";
+                $downloadstatus = "The $instdir directory does not appear to contain any downloaded LON-CAPA source code files which can be used for installation.\n";
             }
         }
     } else {
-        $downloadstatus = "Could not open $rootdir directory to look for existing downloads of LON-CAPA source code.\n";
+        $downloadstatus = "Could not open $instdir directory to look for existing downloads of LON-CAPA source code.\n";
     }
     return ($needs_download,$downloadstatus,$filetouse,$production,$testing);
 }
@@ -1216,7 +1216,7 @@
                 $has_pass = 1;
             } else {
                 $mysqlsetup = 'needsrestart';
-                $mysql_has_wwwuser = &check_mysql_wwwuser(); 
+                $mysql_has_wwwuser = &check_mysql_wwwuser();
                 return ($mysqlsetup,$has_pass,$dbh,$mysql_has_wwwuser);
             }
         }
@@ -1245,14 +1245,14 @@
                     if ($DBI::err =~ /1045/) {
                         print_and_log(&mt('Incorrect password.')."\n");
                     }
-                    $mysql_has_wwwuser = &check_mysql_wwwuser(); 
+                    $mysql_has_wwwuser = &check_mysql_wwwuser();
                 }
             }
         }
     } elsif ($mysqlsetup ne 'noroot') {
         print_and_log(&mt('Problem accessing MySQL.')."\n");
         $mysqlsetup = 'rootfail';
-        $mysql_has_wwwuser = &check_mysql_wwwuser(); 
+        $mysql_has_wwwuser = &check_mysql_wwwuser();
     }
     return ($mysqlsetup,$has_pass,$dbh,$mysql_has_wwwuser);
 }
@@ -1624,26 +1624,41 @@
 my $sourcetarball = $lctarball;
 if ($callsub{'download'}) {
     my ($production,$testing,$sizes) = &download_versionslist();
+    my $homedir = '/root';
+    if ($distro =~ /^ubuntu/) {
+        if ($instdir ne $homedir) {
+            ($homedir) = ($instdir =~ m{^(.*)/[^/]+$});
+        }
+    }
     if ($production && $testing) {
         if ($production ne $testing) {
             print &mt('Two recent LON-CAPA releases are available: ')."\n".
                   &mt('1.').' '.&mt('A production release - version: [_1].',$production)."\n".
                   &mt('2.').' '.&mt('A testing release - version: [_1].',$testing)."\n\n".
-                  &mt('Download the production release? ~[Y/n~]');
+                  &mt("After download, the tar.gz file will be extracted into $homedir")."\n\n".
+                  &mt("Download the production release into $instdir? ~[Y/n~]");
             if (&get_user_selection(1)) {
                 $sourcetarball = 'loncapa-'.$production.'.tar.gz';
+                print "$sourcetarball will be downloaded into $instdir\n";
             } else {
                 print "\n".&mt('Download the testing release? ~[Y/n~]');
                 if (&get_user_selection(1)) {
                     $sourcetarball = 'loncapa-'.$testing.'.tar.gz';
+                    print "$sourcetarball will be downloaded into $instdir\n";
+                } else {
+                    $callsub{'download'} = 0;
                 }
             }
         }
     } elsif ($production) {
         print &mt('The most recent LON-CAPA release is version: [_1].',$production)."\n".
-              &mt('Download the production release? ~[Y/n~]');
+              &mt("After download, the tar.gz file will be extracted into $homedir")."\n\n".
+              &mt("Download the production release into $instdir? ~[Y/n~]");
         if (&get_user_selection(1)) {
             $sourcetarball = 'loncapa-'.$production.'.tar.gz';
+            print "$sourcetarball will be downloaded into $instdir\n";
+        } else {
+            $callsub{'download'} = 0;
         }
     }
 } elsif ($filetouse ne '') {
@@ -1855,6 +1870,9 @@
 print "\n".&mt('Requested configuration complete.')."\n\n";
 if ($have_tarball && !$updateshown) {
     my ($lcdir) = ($sourcetarball =~ /^([\w.\-]+)\.tar.gz$/);
+    if ($lcdir eq 'loncapa-current') {
+        $lcdir = "loncapa-X.Y.Z (X.Y.Z should correspond to a version number like '2.11.3')";
+    }
     my ($apachename,$lc_uses_systemctl,$uses_sudo);
     if ($distro =~ /^(suse|sles|debian|ubuntu)([\d.]+)/) {
         if (($1 eq 'suse') && ($2 < 10)) {
@@ -1895,16 +1913,26 @@
             $apachestop = "systemctl stop $apachename";
         }
         if ($uses_sudo) {
-            $lcstop = 'sudo '.$lcstop;	 
+            $lcstop = 'sudo '.$lcstop;
             $apachestop = 'sudo '.$apachestop;
         }
         print &mt('If you are now ready to update LON-CAPA, enter the following commands:').
               "\n\n$lcstop\n$apachestop\n";
     }
-    print "cd /root\n".
-          "tar zxf $sourcetarball\n".
-          "cd $lcdir\n".
-          "./UPDATE\n";
+    my ($extract,$update);
+    my $homedir = '/root';
+    if ($uses_sudo) {
+        $extract = 'sudo ';
+        $update = 'sudo ';
+        if ($instdir ne $homedir) {
+            ($homedir) = ($instdir =~ m{^(.*)/[^/]+$});
+        }
+    }
+    $extract .= "tar zxf $sourcetarball --directory $homedir";
+    $update .= './UPDATE';
+    print "$extract\n".
+          "cd $homedir/$lcdir\n".
+          "$update\n";
     if (-e '/etc/loncapa-release') {
         my $lcstart = '/etc/init.d/loncontrol start';     
         if ($lc_uses_systemctl) {
@@ -2741,31 +2769,47 @@
 	print_and_log("
 ------------------------------------------------------------------------
 
-".&mt('You seem to have a version of loncapa-current.tar.gz in [_1]',$instdir)."\n".
+".&mt('You seem to have a version of [_1] in [_2]',$lctarball,$instdir)."\n".
 &mt('This copy will be used and a new version will NOT be downloaded.')."\n".
 &mt('If you wish, you may download a new version by executing:')."
 
-wget http://install.loncapa.org/versions/loncapa-current.tar.gz
+wget http://install.loncapa.org/versions/$lctarball
 
 ------------------------------------------------------------------------
 ");
     }
 
     ##
-    ## untar loncapa.tar.gz
+    ## untar loncapa-X.Y.Z.tar.gz
     ##
     if ($have_tarball) {
+        my $homedir = '/root';
+        my ($targetdir,$chdircmd,$updatecmd);
+        if (($distro =~ /^ubuntu/) && ($instdir ne $homedir)) {
+            ($homedir) = ($instdir =~ m{^(.*)/[^/]+$});
+            $updatecmd = 'sudo ./UPDATE';
+        } else {
+            $updatecmd = './UPDATE';
+        }
         print_and_log(&mt('Extracting LON-CAPA source files')."\n");
-        writelog(`cd ~root; tar zxf $instdir/$lctarball`);
+        if (-e $homedir) {
+            writelog(`tar zxf $instdir/$lctarball --directory $homedir`);
+            $targetdir = $homedir;
+        } else {
+            writelog(`tar zxf $instdir/$lctarball`);
+            $targetdir = $instdir;
+        }
+        if ($lctarball =~ /^loncapa\-(\d+\.\d+\.\d+(?:|[^.]+))\.tar\.gz$/) {
+            $chdircmd = "cd $targetdir/loncapa-".$1;
+        } else {
+            $chdircmd = "cd $targetdir/loncapa-X.Y.Z  (X.Y.Z should correspond to a version number like '2.11.3')";
+        }
         print_and_log("\n");
         print &mt('LON-CAPA source files extracted.')."\n".
-              &mt('It remains for you to execute the following commands:')."
-
-cd /root/loncapa-X.Y.Z     (X.Y.Z should correspond to a version number like '2.11.3')
-./UPDATE
-
-".&mt('If you have any trouble, please see [_1] and [_2]',
-      'http://install.loncapa.org/','http://help.loncapa.org/')."\n";
+              &mt('It remains for you to execute the following commands:').
+              "\n$chdircmd\n$updatecmd\n".
+              &mt('If you have any trouble, please see [_1] and [_2]',
+                  'http://install.loncapa.org/','http://help.loncapa.org/')."\n";
         $updateshown = 1;
     }
     return ($have_tarball,$updateshown);


More information about the LON-CAPA-cvs mailing list