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

raeburn raeburn at source.lon-capa.org
Sun Mar 28 23:49:58 EDT 2021


raeburn		Mon Mar 29 03:49:58 2021 EDT

  Modified files:              
    /doc/install/linux	install.pl 
  Log:
  - loncapa-X.Y.Z-tar.gz files are downloaded into installation directory.
  - loncapa-X.Y.Z directory in tarball will be extracted into parent directory
    of installation directory, if distro is Ubuntu, and into /root otherwise.
  
  
-------------- next part --------------
Index: doc/install/linux/install.pl
diff -u doc/install/linux/install.pl:1.76 doc/install/linux/install.pl:1.77
--- doc/install/linux/install.pl:1.76	Sun Mar 28 21:51:22 2021
+++ doc/install/linux/install.pl	Mon Mar 29 03:49:58 2021
@@ -78,7 +78,7 @@
           &mt('Stopping execution.')."\n";
     exit;
 } else {
-    print LOG '$Id: install.pl,v 1.76 2021/03/28 21:51:22 raeburn Exp $'."\n";
+    print LOG '$Id: install.pl,v 1.77 2021/03/29 03:49:58 raeburn Exp $'."\n";
 }
 
 #
@@ -585,7 +585,7 @@
      $nochgstd,$nochgint) = &chkapachessl($distro,$instdir,$hostname,$hostip);
     $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,
@@ -1440,12 +1440,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$/) {
@@ -1455,14 +1455,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;
@@ -1476,7 +1476,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) {
@@ -1509,21 +1509,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);
 }
@@ -2003,26 +2003,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 '') {
@@ -2170,7 +2185,7 @@
         if (keys(%added) > 0) {
             print &mt('Firewall configured to allow access for: [_1].',
                       join(', ',sort(keys(%added))))."\n";
-            system('firewall-cmd --reload'); 
+            system('firewall-cmd --reload');
         }
         if ($current{'http'} || $current{'https'}) {
             print &mt('Firewall already configured to allow access for:[_1].',
@@ -2238,10 +2253,11 @@
     print &mt('LON-CAPA is available for download from: [_1]',
               'http://install.loncapa.org/')."\n";
     if (!-e '/etc/loncapa-release') {
-        &print_and_log(&mt('LON-CAPA is not yet installed on your system.'). 
-                       "\n\n". 
-                       &mt('You may retrieve the source for LON-CAPA by executing:')."\n".
-                       "wget http://install.loncapa.org/versions/$lctarball\n");
+        &print_and_log(&mt('LON-CAPA is not yet installed on your system.')."\n\n"; 
+        unless ($filetouse) {
+            &print_and_log(&mt('You may retrieve the source for LON-CAPA by executing:')."\n".
+                           "wget http://install.loncapa.org/versions/$lctarball\n");
+        }
     } else {
         my $currentversion;
         if (open(my $fh,"</etc/loncapa-release")) {
@@ -2270,6 +2286,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)) {
@@ -2314,12 +2333,22 @@
             $apachestop = 'sudo '.$apachestop;
         }
         print &mt('If you are now ready to update LON-CAPA, enter the following commands:').
-              "\n\n$lcstop\n$apachestop\n";   
+              "\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) {
@@ -3633,31 +3662,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