Jak říká můj linuxový guru, vždycky mám něco speciálního. Tentokrát dělaly problém locales.
Používám Debian, testovací větev. Příhlašuji se pomocí Qingy.
Soubory jsem nastavil:
/etc/locale.gen
cs_CZ.UTF-8 UTF-8
en_US.UTF-8 UTF-8
es_ES.UTF-8 UTF-8
fr_FR.UTF-8 UTF-8
/etc/default/locale
LANG="cs_CZ.UTF-8"
Nechal vygenerovat locales ( locale-gen
).
A přesně tady se můj osud liší od bežného spokojeného linuxového uživatele. Po přihlášení mám všude POSIX… Cpát to do .zshrc (popř. .bashrc) je zrůdnost, protože pak locales fungují jen v terminálu, programy stále používají POSIX (spouštět všechny programy z terminálu je zrůdnost ještě větší).
Většína howtu mi řekla, ať uďělám to, co jsem už dávno udělal… S GDM vše fungovalo správně. Až jsem se jednoho dne naštval a spustil cd /etc && sudo grep -r locale *
Zakopaný pes byl v konfiguračních souborech v adresáří /etc/pam.d
Tyto dva řádky mi tam chyběly:
session required pam_env.so readenv=1 # nacte /etc/environment
session required pam_env.so readenv=1 envfile=/etc/default/locale # nacte specificky soubor
Chápu, že to nejspíš všichni znáte, ale kdyby se objevil někdo stejně hloupý jako já, tak ať zbytečně negrepuje :)
P.s: Při pročítání konfiguráků PAM jsem zjistil další zajímavou vychytávku: Pokud obsahuje řádek auth required pam_nologin.so
a vytvoříte soubor /etc/nologin (klidně prázdný), do systému se příhlásí pouze root. Na desktopu to asi nevyužiju, ale přišlo mi to tak super, že jsem se o to musel s někým podělit :)
P.s.s: Pro lepší pochopení locales doporučuji přečíst komentář č.8 od Stanislava Brabce. Zároveň mu děkuji za vysvětlení.
5: To je divný, já nastavuji proměnné (EDITOR a MANPATH) v ~/.profile a funguje to dobře, včetně loginu do X přes gdm. Takže je to nespíš specifické pro to Qingy a bylo by nejlepší poslat bugreport (nebo aspoň wishlist), aby ten soubor respektoval. Ono totiž ~/.profile je jediná možnost jak si nastavit třeba PATH, pokud nemáte roota.
Jak jsem psal, pres GDM mi vse fungovalo... Je mozne, ze jine distribuce po prihlaseni nacitaji /etc/profile (resp. ~/.profile). Debian vetsinou nacita /etc/environment a /etc/default/locale.. Pravda, zatim jsem nepremyslel, jak to nastavit pro kazdeho usera jinak, ale ~/.profile mi to urcite nebral... Tento problem jsem resil nekolik tydnu, protoze jsem na to nemel cas a vyzkousel opravdu nespocet moznosti. Podivejte se schvalne na /etc/pam.d/gdm (ale nezarucuju, ze v jinych distribucich jsou i tyto konfiguraky na stejnem miste), melo by tam byt nacteni promennych...
Ještě upřesním:
Pro chod běžného prostředí stačí LANG. Ta říká: nastav vše podle LANG, pokud není určeno jinak. Takže LANG=cs_CZ.UTF-8 nastaví vše na češtinu, a například LANG=cs_CZ.UTF-8 LC_MESSAGES=en_US.UTF-8 nastaví české locale na vše kromě překladů zpráv.
LC_ALL je proměnná, která říká: Ignoruj všechny hodnoty v ostatních proměnných, a použij to, co je v LC_ALL. Je to proměnná vhodná pro autory skriptů, když chtějí mít jistotu, že je vše nastaveno podle jejich představ. Pokud je nastavena v systémovém prostředí, zablokuje možnost změnit určitý aspekt locale pomocí výše uvedených proměnných.
Ještě dodávám, že LANG má navíc zvláštní význam: Není použit jenom pro locale. Některé programy ho čtou a analyzují, aby vybraly správné nastavení (např. písma). Pokud je locale nastaveno pomocí ostatních proměnných, ale LANG chybí, locale sice funguje, ale tyto programy jsou zmateny. Mezi takto se chovající programy patří např. Xlib nebo gtk1.
7: To nemá s distribucí nic společného. GDM nenastavuje ty proměnné přes PAM, ale tím, že v souboru /etc/gdm/Xsession je mimo jiné
test -f /etc/profile && . /etc/profile
test -f "$HOME/.profile" && . "$HOME/.profile"
Takže pokud to quingy nedělá, tak buď má nějaký svůj konfigurák, anebo ne a pak by ho měl mít. Znásilňovat kvůli takové drobné změně globální konfiguraci je špatné z několika důvodů:
- těžko budete odlišovat jednotlivé uživatele
- je nespecifikované, jak vytvořit funkci, nemůžete spustit jiné příkazy
- změněné soubory jsou conffiles nějakých balíčků, tudíž vás to bude prudit při aktualizacích
…
Přečteno 9 983×
Přečteno 8 634×
Přečteno 7 971×
Přečteno 6 526×
Přečteno 6 077×