Diff for /doc/install/linux/install.pl between versions 1.91 and 1.95

version 1.91, 2024/07/27 18:39:10 version 1.95, 2024/08/05 13:36:59
Line 437  sub check_prerequisites { Line 437  sub check_prerequisites {
   
 sub check_locale {  sub check_locale {
     my ($distro) = @_;      my ($distro) = @_;
     my ($fh,$langvar,$command,$earlyout);      my ($fh,$langvar,$command,$langcmd,$earlyout,$default);
     $langvar = 'LANG';      $langvar = 'LANG';
     if ($distro =~ /^(ubuntu|debian)/) {      if ($distro =~ /^(ubuntu|debian)/) {
         if (!open($fh,"</etc/default/locale")) {          if (!open($fh,"</etc/default/locale")) {
Line 491  sub check_locale { Line 491  sub check_locale {
             $earlyout = 1;              $earlyout = 1;
         }          }
     }      }
     return if ($earlyout);      return () if ($earlyout);
     my @data = <$fh>;      my @data = <$fh>;
     chomp(@data);      chomp(@data);
       close($fh);
     foreach my $item (@data) {      foreach my $item (@data) {
         if ($item =~ /^\Q$langvar\E=\"?([^\"]*)\"?/) {          if ($item =~ /^\Q$langvar\E=\"?([^\"]*)\"?/) {
             my $default = $1;              $default = $1;
             if ($default ne 'en_US.UTF-8') {              if ($default ne 'en_US.UTF-8') {
                 if ($distro =~ /^debian/) {                  if ($distro =~ /^debian/) {
                     $command = 'locale-gen en_US.UTF-8'."\n".                      $command = 'locale-gen en_US.UTF-8'."\n".
Line 517  sub check_locale { Line 518  sub check_locale {
             last;              last;
         }          }
     }      }
     close($fh);  # Check for locales
     return $command;      if ($default ne 'en_US.UTF-8') { 
           my ($has_us_english,$has_other_code,$has_other_lang);
           if (open(PIPE,"locale -a 2>/dev/null |")) {
               while (<PIPE>) {
                   chomp();
                   next if (/^(C(|\.utf8)|POSIX)$/i);
                   if (/^en_US\.utf8/i) {
                       $has_us_english = 1;
                   } elsif (/^[A-Za-z]{2}_[A-Za-z]{2}/) {
                       $has_other_code = 1;
                   } elsif (/^[A-Za-z]{3,}/) {
                       $has_other_lang = 1;
                   }
               }
               close(PIPE);
               if (!$has_us_english) {
                   if ($has_other_code || $has_other_lang) {
                       if ($distro =~ /^ubuntu/) {
                           $langcmd = "sudo apt-get install language-pack-en\n";
                       } elsif ($distro =~ /^debian/) {
                           $langcmd = "apt-get install language-pack-en\n";
                       } elsif ($distro =~ /^(suse|sles)/) {
                           $langcmd = &mt('Use yast: System > Language > Primary Language = English')."\n";
                       } elsif ($distro =~ /^fedora(\d+)$/) {
                           if ($1 > 23) {
                               $langcmd = "dnf install glibc-langpack-en\n";
                           } else {
                               $langcmd = "yum install glibc-common\n";
                           }
                       } elsif ($distro =~ /^(?:rhes|centos|scientific|oracle|rocky|alma)(\d+)/) {
                           if ($1 > 7) {
                               $langcmd = "dnf install glibc-langpack-en\n";
                           } else {
                               $langcmd = "yum install glibc-common\n";
                           }
                       }
                   } else {
                       if ($distro =~ /^ubuntu/) {
                           $langcmd = "sudo apt-get install language-pack-en\n";
                       } elsif ($distro =~ /^debian/) {
                           $langcmd = "apt-get install language-pack-en\n";
                       } elsif ($distro =~ /^(suse|sles)/) {
                           $langcmd = &mt('Use yast: System > Language > Primary Language = English')."\n";
                       } elsif ($distro =~ /^fedora(\d+)$/) {
                           if ($1 > 23) {
                               $langcmd = &mt('Either install all languages[_1]or install English only[_2]',
                                              ":\ndnf install glibc-all-langpacks\n\n",
                                              ":\ndnf install glibc-langpack-en\n");
                           } else {
                               $langcmd = "yum install glibc-common\n";
                           }
                       } elsif ($distro =~ /^(?:rhes|centos|scientific|oracle|rocky|alma)(\d+)/) {
                           if ($1 > 7) {
                               $langcmd = &mt('Either install all languages[_1]or install English only[_2]',
                                              ":\ndnf install glibc-all-langpacks\n\n",
                                              ":\ndnf install glibc-langpack-en\n");
                           } else {
                               $langcmd = "yum install glibc-common\n";
                           }
                       }
                   }
               }
           }
       }
       return ($command,$langcmd);
 }  }
   
 sub check_required {  sub check_required {
Line 529  sub check_required { Line 594  sub check_required {
     }      }
     my $gotprereqs = &check_prerequisites($packagecmd,$distro);       my $gotprereqs = &check_prerequisites($packagecmd,$distro); 
     if ($gotprereqs eq '') {      if ($gotprereqs eq '') {
         return ($distro,$gotprereqs,'',$packagecmd,$updatecmd);          return ($distro,$gotprereqs,'','',$packagecmd,$updatecmd);
     }      }
     my $localecmd = &check_locale($distro);      my ($localecmd,$langcmd) = &check_locale($distro);
     unless ($localecmd eq '') {      unless ($localecmd eq '') {
         return ($distro,$gotprereqs,$localecmd);          return ($distro,$gotprereqs,$localecmd,$langcmd);
     }      }
     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,
Line 575  sub check_required { Line 640  sub check_required {
                 $mysqlrestart = 'sudo ';                  $mysqlrestart = 'sudo ';
             }              }
             $mysqlrestart .= 'service mysql restart';              $mysqlrestart .= 'service mysql restart';
             return ($distro,$gotprereqs,$localecmd,$packagecmd,$updatecmd,$installnow,$mysqlrestart);              return ($distro,$gotprereqs,$localecmd,$langcmd,$packagecmd,$updatecmd,$installnow,$mysqlrestart);
         } else {          } else {
             if ($mysqlsetup eq 'noroot') {              if ($mysqlsetup eq 'noroot') {
                 $recommended{'mysqlperms'} = 1;                  $recommended{'mysqlperms'} = 1;
Line 604  sub check_required { Line 669  sub check_required {
     $recommended{'stopsrvcs'} = &chksrvcs($distro,$tostop);      $recommended{'stopsrvcs'} = &chksrvcs($distro,$tostop);
     ($recommended{'download'},$downloadstatus,$filetouse,$production,$testing)       ($recommended{'download'},$downloadstatus,$filetouse,$production,$testing) 
         = &need_download($distro,$instdir);          = &need_download($distro,$instdir);
     return ($distro,$gotprereqs,$localecmd,$packagecmd,$updatecmd,$installnow,      return ($distro,$gotprereqs,$localecmd,$langcmd,$packagecmd,$updatecmd,$installnow,
             $mysqlrestart,\%recommended,$dbh,$has_pass,$mysql_unix_socket,              $mysqlrestart,\%recommended,$dbh,$has_pass,$mysql_unix_socket,
             $has_lcdb,$downloadstatus,$filetouse,$production,$testing,$apachefw,              $has_lcdb,$downloadstatus,$filetouse,$production,$testing,$apachefw,
             $uses_systemctl,$hostname,$hostip,$sslhostsfilesref,$has_std,$has_int,              $uses_systemctl,$hostname,$hostip,$sslhostsfilesref,$has_std,$has_int,
Line 667  sub check_mysql_running { Line 732  sub check_mysql_running {
             $proc_owner = 'mysql';              $proc_owner = 'mysql';
             $process = 'mysqld';              $process = 'mysqld';
         }          }
         if ($1 >= 15) {          if ($1 >= 12) {
             $mysqldaemon ='mariadb';              $mysqldaemon ='mariadb';
         }          }
     } elsif ($distro =~ /^suse(\d+)/) {      } elsif ($distro =~ /^suse(\d+)/) {
Line 753  sub chkconfig { Line 818  sub chkconfig {
                     $uses_systemctl{'ntp'} = 1;                      $uses_systemctl{'ntp'} = 1;
                     $uses_systemctl{'cups'} = 1;                      $uses_systemctl{'cups'} = 1;
                     $uses_systemctl{'memcached'} = 1;                      $uses_systemctl{'memcached'} = 1;
                     if (($name eq 'sles') && ($num >= 15)) {                      if ($name eq 'sles') {
                         $daemon{'ntp'} = 'chronyd';                          if ($num >= 12) {
                         $daemon{'mysql'} = 'mariadb';                              $daemon{'mysql'} = 'mariadb';
                           }
                           if ($num >= 15) {
                               $daemon{'ntp'} = 'chronyd';
                           } else {
                               $daemon{'ntp'} = 'ntpd';
                           }
                     } else {                      } else {
                         $daemon{'ntp'} = 'ntpd';                          $daemon{'ntp'} = 'ntpd';
                     }                      }
Line 785  sub chkconfig { Line 856  sub chkconfig {
             (($distro  =~ /^debian/) && ($version >= 10))) {              (($distro  =~ /^debian/) && ($version >= 10))) {
             $daemon{'ntp'}    = 'chrony';              $daemon{'ntp'}    = 'chrony';
         }          }
         if (($distro  =~ /^debian/) && ($version >= 11)) {          if (($distro  =~ /^debian/) && ($version >= 10)) {
             $daemon{'mysql'} = 'mariadb';              $daemon{'mysql'} = 'mariadb';
         }          }
     } elsif ($distro =~ /^fedora(\d+)/) {      } elsif ($distro =~ /^fedora(\d+)/) {
Line 1989  my %prompts = &texthash( Line 2060  my %prompts = &texthash(
 print "\n".&mt('Checking system status ...')."\n\n";  print "\n".&mt('Checking system status ...')."\n\n";
   
 my $dsn = "DBI:mysql:database=mysql";  my $dsn = "DBI:mysql:database=mysql";
 my ($distro,$gotprereqs,$localecmd,$packagecmd,$updatecmd,$installnow,$mysqlrestart,  my ($distro,$gotprereqs,$localecmd,$langcmd,$packagecmd,$updatecmd,$installnow,$mysqlrestart,
     $recommended,$dbh,$has_pass,$mysql_unix_socket,$has_lcdb,$downloadstatus,      $recommended,$dbh,$has_pass,$mysql_unix_socket,$has_lcdb,$downloadstatus,
     $filetouse,$production,$testing,$apachefw,$uses_systemctl,$hostname,$hostip,      $filetouse,$production,$testing,$apachefw,$uses_systemctl,$hostname,$hostip,
     $sslhostsfiles,$has_std,$has_int,$rewritenum,$nochgstd,$nochgint) =      $sslhostsfiles,$has_std,$has_int,$rewritenum,$nochgstd,$nochgint) =
Line 2010  if ($mysqlrestart) { Line 2081  if ($mysqlrestart) {
     exit;      exit;
 }  }
 if ($localecmd ne '') {  if ($localecmd ne '') {
     print "\n".&mt('Although the LON-CAPA application itself is localized for a number of different languages, the default locale language for the Linux OS on which it runs should be US English.')."\n";      print "\n".&mt('Although the LON-CAPA application itself is localized for a number of different languages,[_1]the default locale language for the Linux OS on which it runs should be US English.',"\n")."\n\n";
     print "\n".&mt('Run the following command from the command line to set the default language for your OS, and then run this LON-CAPA installation set-up script again.')."\n\n".      if ($langcmd ne '') {
           print &mt('Use the following command(s) or action(s) to install a required language package.')."\n\n".
                 "$langcmd\n";
       }
       print &mt('Run the following command from the command line to set the default language for your OS,[_1]and then run this LON-CAPA installation set-up script again.',"\n")."\n\n".
     $localecmd."\n\n".      $localecmd."\n\n".
     &mt('Stopping execution.')."\n";      &mt('Stopping execution.')."\n";
     exit;      exit;
Line 2035  if (!$gotprereqs) { Line 2110  if (!$gotprereqs) {
                           &mt('Stopping execution.')."\n";                            &mt('Stopping execution.')."\n";
                     exit;                      exit;
                 } else {                  } else {
                     ($distro,$gotprereqs,$localecmd,$packagecmd,$updatecmd,$installnow,                      ($distro,$gotprereqs,$localecmd,$langcmd,$packagecmd,$updatecmd,$installnow,
                      $mysqlrestart,$recommended,$dbh,$has_pass,$mysql_unix_socket,                       $mysqlrestart,$recommended,$dbh,$has_pass,$mysql_unix_socket,
                      $has_lcdb,$downloadstatus,$filetouse,$production,$testing,$apachefw,                       $has_lcdb,$downloadstatus,$filetouse,$production,$testing,$apachefw,
                      $uses_systemctl,$hostname,$hostip,$sslhostsfiles,$has_std,$has_int,                       $uses_systemctl,$hostname,$hostip,$sslhostsfiles,$has_std,$has_int,
Line 2947  sub check_systemd_update { Line 3022  sub check_systemd_update {
                                 }                                  }
                                 close($fh);                                  close($fh);
                                 print_and_log('Updated /etc/systemd/system/'.$service.'.d/override.conf');                                  print_and_log('Updated /etc/systemd/system/'.$service.'.d/override.conf');
                                   system('systemctl daemon-reload');
                             } else {                              } else {
                                 print_and_log('Could not open /etc/systemd/system/'.$service.'.d/override.conf for writing.');                                  print_and_log('Could not open /etc/systemd/system/'.$service.'.d/override.conf for writing.');
                             }                              }
Line 2961  sub check_systemd_update { Line 3037  sub check_systemd_update {
                         print $fh '[Service]'."\n".'ProtectHome=no'."\n";                          print $fh '[Service]'."\n".'ProtectHome=no'."\n";
                         close($fh);                          close($fh);
                         print_and_log('Created /etc/systemd/system/'.$service.'.d/override.conf');                          print_and_log('Created /etc/systemd/system/'.$service.'.d/override.conf');
                           system('systemctl daemon-reload');
                     }                      }
                 }                  }
             } else {              } else {

Removed from v.1.91  
changed lines
  Added in v.1.95


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