Hogyan javítsuk a területi beállítási hibát a Perl alapú programok megfelelő működéséhez

botond küldte be 2021. 03. 28., v – 15:53 időpontban

Tartalom

 

Bevezető

Ha nincsenek megfelelően beállítva a területi beállításaink (locales), vagy valamilyen program telepítése, frissítése után elállítódnak, akkor a Perl alapú programok hibát jeleznek. Ebben a rövid útmutatóban megnézzük ennek a hibának a megoldását.

 

 

A hibajelenség

A Linux rendszerekben nagyon sok program Perl nyelvben készült, így ez a hibajelenség több helyen is előfordulhat. A hibaüzenetet a Perl parancsértelmezője dobja, ami általában az alábbi szokott lenni ilyenkor:

perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
	LANGUAGE = (unset),
	LC_ALL = (unset),
	LANG = "en_US.UTF-8"
    are supported and installed on your system.
perl: warning: Falling back to the standard locale ("C").

Nálam például az Ásbrú Connection Manager program jelzett hibát, amikor csatlakoztam egy kiszolgálóhoz. Az említett kapcsolatkezelő program egy része Perl-ben készült, ezért ebben is megjelent ez a hiba, kiegészítve a program többi hibaüzenetével, amik ebből adódtak. A teljes hibaüzenet nálam tehát így nézett ki:

Locale hiba az SSH belépéskor az Ásbrú Connection Manager programban

Ebben a példában a laptopomról léptem be az asztali gépemre egy nagyobb csomagfrissítés után, ekkor dobta ezt a hibát. A belépés sikeres volt, de a hibaüzenet megjelent minden alkalommal, akármilyen kiszolgálóhoz kapcsolódtam.

 

A megoldás #1

Az Ásbrú kliensprogram javarészt Perl-ben készült, ezért dobta a hibát. Természetesen ez a hiba más Perl-alapú programnál is előfordulhat, ezért ez a megoldás máshol is alkalmazható az ilyen hiba esetén. 

Ennek elhárításához futtassuk a localedef parancsot root-ként a megfelelő kapcsolókkal:

Először állítsuk angol területi beállításra a rendszert:

localedef -i en_US -f UTF-8 en_US.UTF-8

Majd magyarra:

localedef -i hu_HU -f UTF-8 hu_HU.UTF-8

Területi beállítások módosítása a localedef paranccsal

Simán a magyarra állítással nálam nem javult a probléma, de így hogy előtte angolra állítottam, utána már a hiba eltűnt.

Ekkor újraállítgatja a karaktertáblákat, stb, amit már a Perl-ben használt C függvénytárak is tudnak használni.

Ezután már hiba nélkül futnak le a Perl programok, így nálam például az SSH belépés egy új fülön az Ásbrú klienssel:

SSH belépés hiba nélkül

 

 

A megoldás #2

Ha az első megoldás nem válik be, vagy esetleg idővel újból előjön a probléma, akkor az alábbi módon is orvosolhatjuk ezt a hibát. Nálam például kb egy év után újra előjött, és most ezt alkalmaztam:

A hiba tehát így nézett ki:

Ásbrú locale hiba

Nézzók meg a locale beállításainkat a locale -a paranccsal:

locale -a

A locale -a parancs

Ha itt nem szerepel az Ásbrú hibaüzenetében lévő locale beállítás (nálam a "en_US.UTF-8"), akkor állítsuk be root-ként a locale.gen fájlban:

nano /etc/locale.gen

locale.gen szerkesztése

Majd vegyük ki a komment (#) jelet a megfelelő sor elől:

locale.gen szerkesztése

Ezután futtassuk a locale-gen parancsot:

locale-gen

A locale-gen parancs futtatása

És ezután már hiba nélkül működik az Ásbrú:

Ásbrú - Locale hiba javítva

 

 

Konklúzió

Ezzel a két parancssorral egyből tudjuk javítani a lokalizációs hibákat a Perl alapú programok számára, ha valamelyik program telepítése, vagy csomagfrissítés után előállna ez a hiba.

 

Kapcsolódó tartalom, hasznos linkek: