Diff for /doc/install/linux/install.pl between versions 1.45.2.11 and 1.45.2.12

version 1.45.2.11, 2021/03/13 00:05:06 version 1.45.2.12, 2021/03/16 01:04:11
Line 458  sub check_required { Line 458  sub check_required {
     }      }
     my ($mysqlon,$mysqlsetup,$mysqlrestart,$dbh,$has_pass,$mysql_unix_socket,$has_lcdb,      my ($mysqlon,$mysqlsetup,$mysqlrestart,$dbh,$has_pass,$mysql_unix_socket,$has_lcdb,
         %recommended,$downloadstatus,$filetouse,$production,$testing,$apachefw,          %recommended,$downloadstatus,$filetouse,$production,$testing,$apachefw,
         $tostop,$uses_systemctl);          $tostop,$uses_systemctl,$mysql_has_wwwuser);
     my $wwwuid = &uid_of_www();      my $wwwuid = &uid_of_www();
     my $wwwgid = getgrnam('www');      my $wwwgid = getgrnam('www');
     if (($wwwuid eq '') || ($wwwgid eq '')) {      if (($wwwuid eq '') || ($wwwgid eq '')) {
Line 469  sub check_required { Line 469  sub check_required {
     }      }
     $mysqlon = &check_mysql_running($distro);      $mysqlon = &check_mysql_running($distro);
     if ($mysqlon) {      if ($mysqlon) {
         my $mysql_has_wwwuser = &check_mysql_wwwuser();  
         ($mysqlsetup,$has_pass,$dbh,$mysql_has_wwwuser,$mysql_unix_socket) =           ($mysqlsetup,$has_pass,$dbh,$mysql_has_wwwuser,$mysql_unix_socket) = 
             &check_mysql_setup($instdir,$dsn,$distro,$mysql_has_wwwuser);              &check_mysql_setup($instdir,$dsn,$distro);
         if ($mysqlsetup eq 'needsrestart') {          if ($mysqlsetup eq 'needsrestart') {
             $mysqlrestart = '';              $mysqlrestart = '';
             if ($distro eq 'ubuntu') {              if ($distro eq 'ubuntu') {
Line 1155  sub need_download { Line 1154  sub need_download {
 }  }
   
 sub check_mysql_setup {  sub check_mysql_setup {
     my ($instdir,$dsn,$distro,$mysql_has_wwwuser) = @_;      my ($instdir,$dsn,$distro) = @_;
     my ($mysqlsetup,$has_pass,$mysql_unix_socket);      my ($mysqlsetup,$has_pass,$mysql_unix_socket,$mysql_has_wwwuser);
     my $dbh = DBI->connect($dsn,'root','',{'PrintError'=>0});      my $dbh = DBI->connect($dsn,'root','',{'PrintError'=>0});
     my ($mysqlversion,$mysqlsubver,$mysqlname) = &get_mysql_version();      my ($mysqlversion,$mysqlsubver,$mysqlname) = &get_mysql_version();
     if (($mysqlname =~ /^MariaDB/i) && ($mysqlversion >= 10.4)) {      if (($mysqlname =~ /^MariaDB/i) && ($mysqlversion >= 10.4)) {
Line 1173  sub check_mysql_setup { Line 1172  sub check_mysql_setup {
             if ($mysql_unix_socket) {              if ($mysql_unix_socket) {
                 print_and_log(&mt('MariaDB using unix_socket for root access from localhost.')."\n");                  print_and_log(&mt('MariaDB using unix_socket for root access from localhost.')."\n");
                 $mysqlsetup = 'rootok';                  $mysqlsetup = 'rootok';
                 $mysql_unix_socket = 1;                  $mysql_has_wwwuser = &check_mysql_wwwuser($dbh);
                 unless ($mysql_has_wwwuser) {  
                     $mysql_has_wwwuser = &check_mysql_wwwuser();  
                 }  
                 return ($mysqlsetup,$has_pass,$dbh,$mysql_has_wwwuser,$mysql_unix_socket);                  return ($mysqlsetup,$has_pass,$dbh,$mysql_has_wwwuser,$mysql_unix_socket);
             }              }
         }          }
     }      }
     if ($dbh) {      if ($dbh) {
         $mysqlsetup = 'noroot';           $mysqlsetup = 'noroot';
           if (($mysqlname !~ /^MariaDB/i) && ($mysqlversion >= 5.7)) {
               my $sth = $dbh->prepare("SELECT plugin from mysql.user where User='root'");
               $sth->execute();
               while (my $priv = $sth->fetchrow_array) {
                   if ($priv =~ /auth_socket/) {
                       $mysql_unix_socket = 1;
                       last;
                   }
               }
               $sth->finish();
               if ($mysql_unix_socket) {
                   print_and_log(&mt('MySQL using unix_socket for root access from localhost.')."\n");
                   $mysqlsetup = 'rootok';
                   $mysql_has_wwwuser = &check_mysql_wwwuser($dbh);
                   return ($mysqlsetup,$has_pass,$dbh,$mysql_has_wwwuser,$mysql_unix_socket);
               }
           }     
     } elsif ($DBI::err =~ /1045/) {      } elsif ($DBI::err =~ /1045/) {
         $has_pass = 1;          $has_pass = 1;
     } elsif ($distro =~ /^ubuntu(\d+)$/) {      } elsif ($distro =~ /^ubuntu(\d+)$/) {
Line 1195  sub check_mysql_setup { Line 1208  sub check_mysql_setup {
                 }                  }
                 close(PIPE);                  close(PIPE);
             }              }
             unless ($mysql_has_wwwuser) {  
                 $mysql_has_wwwuser = &check_mysql_wwwuser();  
             }  
             $dbh = DBI->connect($dsn,'root','',{'PrintError'=>0});              $dbh = DBI->connect($dsn,'root','',{'PrintError'=>0});
             if ($dbh) {              if ($dbh) {
                 $mysqlsetup = 'noroot';                  $mysqlsetup = 'noroot';
                   $mysql_has_wwwuser = &check_mysql_wwwuser($dbh);
             } elsif ($DBI::err =~ /1045/) {              } elsif ($DBI::err =~ /1045/) {
                 $has_pass = 1;                  $has_pass = 1;
             } else {              } else {
                 $mysqlsetup = 'needsrestart';                  $mysqlsetup = 'needsrestart';
                   $mysql_has_wwwuser = &check_mysql_wwwuser(); 
                 return ($mysqlsetup,$has_pass,$dbh,$mysql_has_wwwuser);                  return ($mysqlsetup,$has_pass,$dbh,$mysql_has_wwwuser);
             }              }
         }          }
Line 1216  sub check_mysql_setup { Line 1228  sub check_mysql_setup {
         if ($dbh) {          if ($dbh) {
             $mysqlsetup = 'rootok';              $mysqlsetup = 'rootok';
             print_and_log(&mt('Password accepted.')."\n");              print_and_log(&mt('Password accepted.')."\n");
               $mysql_has_wwwuser = &check_mysql_wwwuser($dbh);
         } else {          } else {
             $mysqlsetup = 'rootfail';              $mysqlsetup = 'rootfail';
             print_and_log(&mt('Problem accessing MySQL.')."\n");              print_and_log(&mt('Problem accessing MySQL.')."\n");
Line 1227  sub check_mysql_setup { Line 1240  sub check_mysql_setup {
                 if ($dbh) {                  if ($dbh) {
                     $mysqlsetup = 'rootok';                      $mysqlsetup = 'rootok';
                     print_and_log(&mt('Password accepted.')."\n");                      print_and_log(&mt('Password accepted.')."\n");
                       $mysql_has_wwwuser = &check_mysql_wwwuser($dbh);
                 } else {                  } else {
                     if ($DBI::err =~ /1045/) {                      if ($DBI::err =~ /1045/) {
                         print_and_log(&mt('Incorrect password.')."\n");                          print_and_log(&mt('Incorrect password.')."\n");
                     }                      }
                       $mysql_has_wwwuser = &check_mysql_wwwuser(); 
                 }                  }
             }              }
         }          }
     } elsif ($mysqlsetup ne 'noroot') {      } elsif ($mysqlsetup ne 'noroot') {
         print_and_log(&mt('Problem accessing MySQL.')."\n");          print_and_log(&mt('Problem accessing MySQL.')."\n");
         $mysqlsetup = 'rootfail';          $mysqlsetup = 'rootfail';
           $mysql_has_wwwuser = &check_mysql_wwwuser(); 
     }      }
     return ($mysqlsetup,$has_pass,$dbh,$mysql_has_wwwuser);      return ($mysqlsetup,$has_pass,$dbh,$mysql_has_wwwuser);
 }  }
   
 sub check_mysql_wwwuser {  sub check_mysql_wwwuser {
       my ($dbh) = @_;
     my $mysql_wwwuser;      my $mysql_wwwuser;
     my $dbhn = DBI->connect("DBI:mysql:database=information_schema",'www','localhostkey',      if ($dbh) {
                             {PrintError => +0}) || return;          $mysql_wwwuser = $dbh->selectrow_array("SELECT COUNT(User) FROM mysql.user WHERE (User = 'www' AND Host ='localhost')");
     if ($dbhn) {      } else {
         $mysql_wwwuser = 1;          my $dbhn = DBI->connect("DBI:mysql:database=information_schema",'www','localhostkey',
         $dbhn->disconnect;                                  {PrintError => +0}) || return;
           if ($dbhn) {
               $mysql_wwwuser = 1;
               $dbhn->disconnect;
           }
     }      }
     return $mysql_wwwuser;      return $mysql_wwwuser;
 }  }
Line 1830  if ($callsub{'download'}) { Line 1851  if ($callsub{'download'}) {
 }  }
   
 print "\n".&mt('Requested configuration complete.')."\n\n";  print "\n".&mt('Requested configuration complete.')."\n\n";
 my $apachename;  
 if ($have_tarball && !$updateshown) {  if ($have_tarball && !$updateshown) {
     my ($lcdir) = ($sourcetarball =~ /^([\w.\-]+)\.tar.gz$/);      my ($lcdir) = ($sourcetarball =~ /^([\w.\-]+)\.tar.gz$/);
       my ($apachename,$lc_uses_systemctl,$uses_sudo); 
       if ($distro =~ /^(suse|sles|debian|ubuntu)([\d.]+)/) {
           if (($1 eq 'suse') && ($2 < 10)) {
               $apachename = 'apache';
           } else {
               $apachename = 'apache2';
           }
       } else {
           $apachename = 'httpd';
       }
       if ($distro =~ /^oracle(\d+)$/) {
           if ($1 > 6) {
               $lc_uses_systemctl = 1;
           }
       } elsif ($distro =~ /^(?:rhes|centos)(\d+)$/) {
           if ($1 > 7) {
               $lc_uses_systemctl = 1;
           }
       } elsif ($distro =~ /^ubuntu(\d+)$/) {
           if ($1 > 16) {
               $lc_uses_systemctl = 1;
           }
           $uses_sudo = 1;
       } elsif ($distro =~ /^sles(\d+)$/) {
           if ($1 > 12) {
               $lc_uses_systemctl = 1;
           }
       }
     if (!-e '/etc/loncapa-release') {      if (!-e '/etc/loncapa-release') {
         print &mt('If you are now ready to install LON-CAPA, enter the following commands:')."\n\n";          print &mt('If you are now ready to install LON-CAPA, enter the following commands:')."\n\n";
     } else {      } else {
         print &mt('If you are now ready to update LON-CAPA, enter the following commands:')."\n\n".          my $lcstop = '/etc/init.d/loncontrol stop';
                   "/etc/init.d/loncontrol stop\n";          if ($lc_uses_systemctl) {
         if ($distro =~ /^(suse|sles|debian|ubuntu)([\d.]+)/) {              $lcstop = 'systemctl stop loncontrol';
             if (($1 eq 'suse') && ($2 < 10)) {          }
                 $apachename = 'apache';          my $apachestop = "/etc/init.d/$apachename stop";
             } else {          if ($uses_systemctl) {
                 $apachename = 'apache2';              $apachestop = "systemctl stop $apachename";
             }          }
         } else {          if ($uses_sudo) {
             $apachename = 'httpd';              $lcstop = 'sudo '.$lcstop;  
               $apachestop = 'sudo '.$apachestop;
         }          }
         print "/etc/init.d/$apachename stop\n";          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".      print "cd /root\n".
           "tar zxf $sourcetarball\n".            "tar zxf $sourcetarball\n".
           "cd $lcdir\n".            "cd $lcdir\n".
           "./UPDATE\n";            "./UPDATE\n";
     if (-e '/etc/loncapa-release') {      if (-e '/etc/loncapa-release') {
         print "/etc/init.d/loncontrol start\n";          my $lcstart = '/etc/init.d/loncontrol start';     
         print "/etc/init.d/$apachename start\n";          if ($lc_uses_systemctl) {
               $lcstart = '/home/httpd/perl/loncontrol start';
           }
           my $apachestart = "/etc/init.d/$apachename start";
           if ($uses_systemctl) {
               $apachestart = "systemctl start $apachename";
           }
           if ($uses_sudo) {
               $lcstart = 'sudo '.$lcstart;
               $apachestart = 'sudo '.$apachestart;
           }
           print "$lcstart\n";
           print "$apachestart\n";
     }      }
 }  }
 exit;  exit;

Removed from v.1.45.2.11  
changed lines
  Added in v.1.45.2.12


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>