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

raeburn raeburn at source.lon-capa.org
Thu Aug 1 08:56:58 EDT 2024


raeburn		Thu Aug  1 12:56:58 2024 EDT

  Modified files:              
    /doc/install/linux	install.pl 
  Log:
  - If default language is not en_US.UTF-8 check for available languages, and
    en_US.UTF-8 is not found, provide apprpriate advice for current distro. 
  
  
-------------- next part --------------
Index: doc/install/linux/install.pl
diff -u doc/install/linux/install.pl:1.93 doc/install/linux/install.pl:1.94
--- doc/install/linux/install.pl:1.93	Sun Jul 28 14:04:41 2024
+++ doc/install/linux/install.pl	Thu Aug  1 12:56:58 2024
@@ -78,7 +78,7 @@
           &mt('Stopping execution.')."\n";
     exit;
 } else {
-    print LOG '$Id: install.pl,v 1.93 2024/07/28 14:04:41 raeburn Exp $'."\n";
+    print LOG '$Id: install.pl,v 1.94 2024/08/01 12:56:58 raeburn Exp $'."\n";
 }
 
 #
@@ -437,7 +437,7 @@
 
 sub check_locale {
     my ($distro) = @_;
-    my ($fh,$langvar,$command,$earlyout);
+    my ($fh,$langvar,$command,$langcmd,$earlyout,$default);
     $langvar = 'LANG';
     if ($distro =~ /^(ubuntu|debian)/) {
         if (!open($fh,"</etc/default/locale")) {
@@ -491,12 +491,13 @@
             $earlyout = 1;
         }
     }
-    return if ($earlyout);
+    return () if ($earlyout);
     my @data = <$fh>;
     chomp(@data);
+    close($fh);
     foreach my $item (@data) {
         if ($item =~ /^\Q$langvar\E=\"?([^\"]*)\"?/) {
-            my $default = $1;
+            $default = $1;
             if ($default ne 'en_US.UTF-8') {
                 if ($distro =~ /^debian/) {
                     $command = 'locale-gen en_US.UTF-8'."\n".
@@ -517,8 +518,72 @@
             last;
         }
     }
-    close($fh);
-    return $command;
+# Check for locales
+    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 {
@@ -529,11 +594,11 @@
     }
     my $gotprereqs = &check_prerequisites($packagecmd,$distro); 
     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 '') {
-        return ($distro,$gotprereqs,$localecmd);
+        return ($distro,$gotprereqs,$localecmd,$langcmd);
     }
     my ($mysqlon,$mysqlsetup,$mysqlrestart,$dbh,$has_pass,$mysql_unix_socket,$has_lcdb,
         %recommended,$downloadstatus,$filetouse,$production,$testing,$apachefw,
@@ -575,7 +640,7 @@
                 $mysqlrestart = 'sudo ';
             }
             $mysqlrestart .= 'service mysql restart';
-            return ($distro,$gotprereqs,$localecmd,$packagecmd,$updatecmd,$installnow,$mysqlrestart);
+            return ($distro,$gotprereqs,$localecmd,$langcmd,$packagecmd,$updatecmd,$installnow,$mysqlrestart);
         } else {
             if ($mysqlsetup eq 'noroot') {
                 $recommended{'mysqlperms'} = 1;
@@ -604,7 +669,7 @@
     $recommended{'stopsrvcs'} = &chksrvcs($distro,$tostop);
     ($recommended{'download'},$downloadstatus,$filetouse,$production,$testing) 
         = &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,
             $has_lcdb,$downloadstatus,$filetouse,$production,$testing,$apachefw,
             $uses_systemctl,$hostname,$hostip,$sslhostsfilesref,$has_std,$has_int,
@@ -1989,7 +2054,7 @@
 print "\n".&mt('Checking system status ...')."\n\n";
 
 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,
     $filetouse,$production,$testing,$apachefw,$uses_systemctl,$hostname,$hostip,
     $sslhostsfiles,$has_std,$has_int,$rewritenum,$nochgstd,$nochgint) =
@@ -2010,8 +2075,12 @@
     exit;
 }
 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('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".
+    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";
+    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".
     &mt('Stopping execution.')."\n";
     exit;
@@ -2035,7 +2104,7 @@
                           &mt('Stopping execution.')."\n";
                     exit;
                 } else {
-                    ($distro,$gotprereqs,$localecmd,$packagecmd,$updatecmd,$installnow,
+                    ($distro,$gotprereqs,$localecmd,$langcmd,$packagecmd,$updatecmd,$installnow,
                      $mysqlrestart,$recommended,$dbh,$has_pass,$mysql_unix_socket,
                      $has_lcdb,$downloadstatus,$filetouse,$production,$testing,$apachefw,
                      $uses_systemctl,$hostname,$hostip,$sslhostsfiles,$has_std,$has_int,


More information about the LON-CAPA-cvs mailing list