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

raeburn raeburn at source.lon-capa.org
Sun Jun 30 16:10:29 EDT 2024


raeburn		Sun Jun 30 20:10:29 2024 EDT

  Modified files:              (Branch: version_2_11_X)
    /doc/install/linux	install.pl 
  Log:
  - For 2.11
    Backport part of 1.77 omitted in earlier backport (1.45.2.16) and backport
    1.83, 1.84, 1.85, 1.86, 1.87, 1.88, 1.89, 1.90.
  
  
-------------- next part --------------
Index: doc/install/linux/install.pl
diff -u doc/install/linux/install.pl:1.45.2.18 doc/install/linux/install.pl:1.45.2.19
--- doc/install/linux/install.pl:1.45.2.18	Tue Dec 21 16:07:53 2021
+++ doc/install/linux/install.pl	Sun Jun 30 20:10:29 2024
@@ -76,7 +76,7 @@
           &mt('Stopping execution.')."\n";
     exit;
 } else {
-    print LOG '$Id: install.pl,v 1.45.2.18 2021/12/21 16:07:53 raeburn Exp $'."\n";
+    print LOG '$Id: install.pl,v 1.45.2.19 2024/06/30 20:10:29 raeburn Exp $'."\n";
 }
 
 #
@@ -489,7 +489,7 @@
         if ($mysqlsetup eq 'needsrestart') {
             $mysqlrestart = '';
             if ($distro eq 'ubuntu') {
-                $mysqlrestart = 'sudo '; 
+                $mysqlrestart = 'sudo ';
             }
             $mysqlrestart .= 'service mysql restart';
             return ($distro,$gotprereqs,$localecmd,$packagecmd,$updatecmd,$installnow,$mysqlrestart);
@@ -535,6 +535,14 @@
             $process = 'mysqld';
             $proc_owner = 'mysql';
         }
+    } elsif ($distro =~ /^debian(\w+)/) {
+        if ($1 >= 10) {
+            $process = 'mysql';
+            $proc_owner = 'mysql';
+        }
+        if ($1 >= 11) {
+            $mysqldaemon = 'mariadb';
+        }
     } elsif ($distro =~ /^fedora(\d+)/) {
         if ($1 >= 16) {
             $process = 'mysqld';
@@ -554,6 +562,9 @@
             $proc_owner = 'mysql';
             $use_systemctl = 1;
         }
+        if ($1 >= 9) {
+            $process = 'mariadb';
+        }
     } elsif ($distro =~ /^sles(\d+)/) {
         if ($1 >= 12) {
             $use_systemctl = 1;
@@ -674,9 +685,13 @@
         if (($distro =~ /^ubuntu/) && ($version <= 8)) {
             $daemon{'cups'} = 'cupsys';
         }
-        if (($distro =~ /^ubuntu/) && ($version >= 18)) {
+        if ((($distro =~ /^ubuntu/) && ($version >= 18)) ||
+            (($distro  =~ /^debian/) && ($version >= 10))) {
             $daemon{'ntp'}    = 'chrony';
         }
+        if (($distro  =~ /^debian/) && ($version >= 11)) {
+            $daemon{'mysql'} = 'mariadb';
+        }
     } elsif ($distro =~ /^fedora(\d+)/) {
         my $version = $1;
         if ($version >= 15) {
@@ -902,7 +917,8 @@
         my $distname = $1;
         my $version = $2;
         my ($stdconf,$stdsite);
-        if (($distname eq 'ubuntu') && ($version > 12)) {
+        if ((($distname eq 'ubuntu') && ($version > 12)) ||
+            (($distname eq 'debian') && ($version >= 10))) {
             $stdconf = "$instdir/debian-ubuntu/ubuntu14/loncapa_conf";
             $stdsite = "$instdir/debian-ubuntu/ubuntu14/loncapa_sites";
         } else {
@@ -913,7 +929,8 @@
             print &mt('Warning: No LON-CAPA Apache configuration file found for installation check.')."\n"; 
         } else {
             my ($configfile,$sitefile);
-            if (($distname eq 'ubuntu') && ($version > 12)) {
+            if ((($distname eq 'ubuntu') && ($version > 12)) ||
+                (($distname eq 'debian') && ($version >= 10))) {
                 $sitefile = '/etc/apache2/sites-available/loncapa.conf';
                 $configfile = '/etc/apache2/conf-available/loncapa.conf';
             } else {
@@ -929,7 +946,8 @@
                     }
                 }
             }
-            if ((!$fixapache) && ($distname eq 'ubuntu') && ($version > 12)) {
+            if ((!$fixapache) && ((($distname eq 'ubuntu') && ($version > 12)) ||
+                                  (($distname eq 'debian') && ($version >= 10))))  {
                 if (($sitefile ne '') && (-e $sitefile) && (-e $stdsite)) {
                     if (open(PIPE, "diff --brief $stdsite $sitefile |")) {
                         my $diffres = <PIPE>;
@@ -949,7 +967,7 @@
                 }
             }
         }
-        if ((!$fixapache) && ($distname eq 'ubuntu')) {
+        if ((!$fixapache) && (($distname eq 'ubuntu') || ($distname eq 'debian'))) {
             my $sitestatus = "/etc/apache2/mods-available/status.conf";
             my $stdstatus = "$instdir/debian-ubuntu/status.conf";
             if ((-e $stdstatus) && (-e $sitestatus)) {
@@ -1175,8 +1193,8 @@
     my ($instdir,$dsn,$distro) = @_;
     my ($mysqlsetup,$has_pass,$mysql_unix_socket,$mysql_has_wwwuser);
     my $dbh = DBI->connect($dsn,'root','',{'PrintError'=>0});
-    my ($mysqlversion,$mysqlsubver,$mysqlname) = &get_mysql_version();
-    if (($mysqlname =~ /^MariaDB/i) && ($mysqlversion >= 10.4)) {
+    my ($mysqlversion,$mysqlminorversion,$mysqlsubver,$mysqlname) = &get_mysql_version();
+    if (($mysqlname =~ /^MariaDB/i) && (($mysqlversion == 10 && $mysqlminorversion >= 4) || ($mysqlversion >= 11))) {
         if ($dbh) {
             my $sth = $dbh->prepare("SELECT Priv FROM mysql.global_priv WHERE (User = 'root' AND Host ='localhost')");
             $sth->execute();
@@ -1197,7 +1215,7 @@
     }
     if ($dbh) {
         $mysqlsetup = 'noroot';
-        if (($mysqlname !~ /^MariaDB/i) && ($mysqlversion >= 5.7)) {
+        if (($mysqlname !~ /^MariaDB/i) && (($mysqlversion == 5 && $mysqlminorversion >= 7) || ($mysqlversion >= 6))) {
             my $sth = $dbh->prepare("SELECT plugin from mysql.user where User='root'");
             $sth->execute();
             while (my $priv = $sth->fetchrow_array) {
@@ -1322,14 +1340,30 @@
 
 sub firewall_is_active {
     if (-e '/proc/net/ip_tables_names') {
+        my $status;
         if (open(PIPE,'cat /proc/net/ip_tables_names |grep filter |')) {
-            my $status = <PIPE>;
+            $status = <PIPE>;
             close(PIPE);
             chomp($status);
             if ($status eq 'filter') {
                 return 1;
             }
         }
+        unless ($status) {
+            if (open(PIPE,'nft list tables |')) {
+                while(<PIPE>) {
+                    chomp();
+                    if (/filter$/) {
+                        $status = 1;
+                        last;
+                    }
+                }
+                close(PIPE);
+                if ($status) {
+                    return 1;
+                }
+            }
+        }
     }
     return 0;
 }
@@ -1856,10 +1890,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")) {
@@ -1914,6 +1949,10 @@
             $lc_uses_systemctl = 1;
         }
         $uses_sudo = 1;
+    } elsif ($distro =~ /^debian(\d+)$/) {
+        if ($1 >= 10) {
+            $lc_uses_systemctl = 1;
+        }
     } elsif ($distro =~ /^sles(\d+)$/) {
         if ($1 > 12) {
             $lc_uses_systemctl = 1;
@@ -1952,7 +1991,7 @@
           "cd $homedir/$lcdir\n".
           "$update\n";
     if (-e '/etc/loncapa-release') {
-        my $lcstart = '/etc/init.d/loncontrol start';     
+        my $lcstart = '/etc/init.d/loncontrol start';
         if ($lc_uses_systemctl) {
             $lcstart = '/home/httpd/perl/loncontrol start';
         }
@@ -2034,6 +2073,29 @@
 > #define SERVER_UIDS $num		/* user "www" */
 ENDPATCH
 
+    my $patch_code = <<"ENDPATCH";
+127a128
+> #include <string.h>
+214a216
+> #include <time.h>
+566c568
+< check_fails()
+---
+> int check_fails()
+589c591
+< log_failure()
+---
+> void log_failure()
+629c631
+< snooze(int seconds)
+---
+> void snooze(int seconds)
+653c655
+< main(int argc, char **argv)
+---
+> int main(int argc, char **argv)
+ENDPATCH
+
     if (! -e "/usr/bin/patch") {
 	print_and_log(&mt('You must install the software development tools package: [_1], when installing Linux.',"'patch'")."\n");
         print_and_log(&mt('Authentication installation not completed.')."\n");
@@ -2044,9 +2106,17 @@
         return;
     }
     my $dir = "/tmp/pwauth-2.2.8";
+    my $patchedok;
     if (open(PATCH,"| patch $dir/config.h")) {
         print PATCH $patch;
         close(PATCH);
+        if (open(PATCH,"| patch $dir/pwauth.c")) {
+            print PATCH $patch_code;
+            close(PATCH);
+            $patchedok = 1;
+        }
+    }
+    if ($patchedok) {
         print_and_log("\n");
         ##
         ## Compile patched pwauth
@@ -2117,7 +2187,8 @@
 	            &print_and_log(&mt('Removing [_1] from startup.',$service)."\n");
                     if ($distro =~ /^(?:debian|ubuntu)(\d+)/) {
                         my $version = $1;
-                        if (($distro =~ /^ubuntu/) && ($version > 16)) {
+                        if ((($distro =~ /^ubuntu/) && ($version > 16)) ||
+                            (($distro =~ /^debian/) && ($version >= 10))) {
                             if (ref($uses_systemctl) eq 'HASH') {
                                 if ($uses_systemctl->{$service}) {
                                     if (`systemctl is-enabled $service`) {
@@ -2187,21 +2258,23 @@
 
 sub setup_mysql_permissions {
     my ($dbh,$has_pass,$mysql_unix_socket, at mysql_lc_commands) = @_;
-    my ($mysqlversion,$mysqlsubver,$mysqlname) = &get_mysql_version();
+    my ($mysqlversion,$mysqlminorversion,$mysqlsubver,$mysqlname) = &get_mysql_version();
     my ($usescreate,$usesauth,$is_mariadb,$hasauthcol, at mysql_commands);
     if ($mysqlname =~ /^MariaDB/i) {
         $is_mariadb = 1;
-        if ($mysqlversion >= 10.4) {
+        if ((($mysqlversion == 10) && ($mysqlminorversion >= 4)) || ($mysqlversion >= 11)) {
             $usescreate = 1;
-        } elsif ($mysqlversion >= 10.2) {
+        } elsif (($mysqlversion == 10) && ($mysqlminorversion >= 2)) {
             $usesauth = 1;
-        } elsif ($mysqlversion >= 5.5) {
+        } elsif (($mysqlversion == 5) && ($mysqlminorversion >= 5)) {
             $hasauthcol = 1;
         }
     } else {
-        if (($mysqlversion > 5.7) || (($mysqlversion == 5.7) && ($mysqlsubver > 5))) {
+        if (($mysqlversion > 5) || (($mysqlminorversion == 5) && ($mysqlminorversion > 7)) ||
+            (($mysqlversion == 5) && ($mysqlminorversion == 7) && ($mysqlsubver > 5))) {
             $usesauth = 1;
-        } elsif (($mysqlversion >= 5.6) || (($mysqlversion == 5.5) && ($mysqlsubver >= 7))) {
+        } elsif (($mysqlversion == 5) &&
+                 (($mysqlminorversion >= 6) || (($mysqlminorversion == 5) && ($mysqlsubver >= 7)))) {
             $hasauthcol = 1;
         }
     }
@@ -2315,17 +2388,17 @@
 }
 
 sub get_mysql_version {
-    my ($version,$subversion,$name);
+    my ($version,$minorversion,$subversion,$name);
     if (open(PIPE," mysql -V |")) {
         my $info = <PIPE>;
         chomp($info);
         close(PIPE);
-        ($version,$subversion,$name) = ($info =~ /(\d+\.\d+)\.(\d+)(?:\-?(\w*),|)/);
+        ($version,$minorversion,$subversion,$name) = ($info =~ /(\d+)\.(\d+)\.(\d+)(?:\-?(\w*),|)/);
     } else {
         print &mt('Could not determine which version of MySQL is installed.').
               "\n";
     }
-    return ($version,$subversion,$name);
+    return ($version,$minorversion,$subversion,$name);
 }
 
 ###########################################################
@@ -2429,11 +2502,13 @@
         $distname = $1;
         $version = $2;
     }
-    if (($distname eq 'ubuntu') && ($version > 12)) {
+    if ((($distname eq 'ubuntu') && ($version > 12)) ||
+        (($distname eq 'debian') && ($version >= 10))) {
         $defaultconfig = "$apache2_sites_enabled_dir/000-default.conf";
     }
     my ($skipconf,$skipsite,$skipstatus);
-    if (($distname eq 'ubuntu') && ($version > 12)) {
+    if ((($distname eq 'ubuntu') && ($version > 12)) ||
+        (($distname eq 'debian') && ($version >= 10))) {
         my $apache2_conf_enabled_dir = '/etc/apache2/conf-enabled';
         my $apache2_conf_available_dir = '/etc/apache2/conf-available';
         my $defaultconf = $apache2_conf_enabled_dir.'/loncapa.conf';
@@ -2586,7 +2661,7 @@
             }
         }
     }
-    if ($distname eq 'ubuntu') {
+    if (($distname eq 'ubuntu') || ($distname eq 'debian')) {
         my $sitestatus = "$apache2_mods_available_dir/status.conf";
         my $stdstatus = "$instdir/debian-ubuntu/status.conf";
         if ((-e $sitestatus) && (-e $stdstatus)) {


More information about the LON-CAPA-cvs mailing list