Re: Kmail ve liste sorunu - /etc/environment hakkında
Selam,
Cum 17 Haz 2005 18:53 sularında, Murat Demirten şunları yazmıştı:
> Selamlar,
>
> Burada atlanan bir nokta üzerinde durmakta fayda var.
>
> /etc/environment halen daha standartlar içerisinde yer alan ve kullanımı
> eldeki şartlara göre devam edecek olan, gerekli bir dosya.
>
> Özet olarak, /etc/environment dosyası, exec() çağrısı ile çalıştırılan
> süreçler tarafından okunur ve içindeki değerler geçerli ortam değişkenlerine
> atanır.
>
> /etc/environment her exec() çalıştığında okunurken, /etc/profile login olarak
> girilen oturumlarda dikkate alınır. Bu yüzden de, /etc/profile dosyası bir
> shell script olabiliyorken, /etc/environment dosyasında sadece
> DEĞİŞKEN=DEĞER
> formatında atamalar yapılabilmektedir. exec() tüm bu DEĞİŞKEN'leri,
> karşısındaki DEĞER ile çalışan sürecin ortam değişkenleri arasına ekler.
>
> Bir program/süreç ortam değişkenlerine sıkı bir bağımlılık içeriyorsa, ilgili
> programa her durumda aynı ortamı sunabilmek için geçerli yol, ihtiyaç duyduğu
> değişkenleri /etc/environment dosyası içerisinde bulundurmaktan geçer. Bu
> sayede hem login olunduktan sonra çalıştırıldığında, hem de sözgelimi cron
> tarafından veya açılışta rc betikleri tarafından çalıştırıldığında aynı
> şekilde çalışmasına devam eder.
>
> Ancak durum böyle iken, /etc/environment dosyası üzerinden değişkenleri
> ayarlamaya mecbur kalınan senaryolar pratikte fazlaca değil.
>
> Debian'daki kullanımı ayrıca tartışılabilir ama durum bu şekildedir.
>
O halde tartışalım.
Bu dosya içinde yerel ile ilgili atamalar olmazsa sorun çıkmayacaktır.
Yerel ayarları ile ilgili atamaların bu dosyada bulunmasının
sebebi gdm'nin kullanıcı ile türkçe iletişim kurmasını sağlamaktan
ibaretmiş gibi görünüyorsa da pratikte böyle olmuyor.
Birçok uygulama bu dosyaya bakıyor anladığım kadarıyla ve yerel
ayarını kullanıcı seviyesinde değiştirseniz bile /etc/environment
dosyasından alınan LANG değerine göre uygulama kendini yapılandırıyor.
KDE dahil!!!
Bunun pratikteki etkisini bir uygulamadan --help seçeneği ile
aldığınız çıktıda görebilirsiniz (iconv --help gibi).
set-language-env betiği ister root, ister sıradan kullanıcı olarak
çalıştırılsın /etc/environment dosyasının içeriğinde değişiklik yapmıyor.
Kurulum sırasında seçilen dile bağlı olarak bu dosyanın içi
dolduruluyor ve öyle kalıyor. Bizim için önemli olan LANG değişkeni ve
bu değişkenin /etc/environment dosyasındaki değeri tr_TR.
Yani ISO-8859-9 kodlamasını etkinleştiriyor.
Ben ilk önce bu ayarı Debian usulüyle yapmak istedim ve set-language-env
betiğini kullanarak yerelimi tr_TR.UTF-8 yaptım.
KDE'yi yeniden açtığımda, pencere başlıklarında bazı türkçe
karakterlerin yerinde bir çift kutu gördüm.
Bir KDE konsolu açtım. Konsola türkçe karakter yazamadım.
locale komutunu verdim. Sonuçlar tr_TR.UTF-8'di. iconv --help
yazdım. Türkçe karakterler UTF-8 karakterlerin dahili değerleriyle
çıktılandı. Yani uçbirim aslında UTF-8 değil ISO-8859-9'du.
Böyle birşeyle hiç karşılaşmadığım için tam anlamıyla bir şaşkınlık
içindeydim. Epey bir aramadan sonra suçlu ortaya çıktı.
/etc/environment dosyasını kaldırınca bu tuhaflıklar ortadan kalktı.
Şimdi, gdm için ne yapılabilir diye sorarsak, yanıtım, login
öncesi yerel ayarı vc/0 seviyesinde açılış betiklerinde yapılsın
derim. /etc/environment dosyasında değil. O zaman böyle sorunlar
(login öncesi yerel ayarlarının kullanıcı tercihlerini yoksayması)
ortaya çıkmayacaktır. Tabii burada devreye /etc/sysconfig/
dizini girecektir. Benim bildiklerim, Knoppix (HD kurulumu),
Suse, RH ve Fedora login öncesi yerel ayarını bu şekilde yapıyor.
Ayrıca bu yöntemle linux konsolu da doğru yapılandırılır. Maalesef
linux konsolu, klavye dosyasının ctrl+alt+8/9 tuşlarının insafına
terkedilmiş durumda. Onları iyi ki yazmışım :-)
Konu dışı:
Bu arada belirtmeden geçemeyeceğim. Sanırım libc'de bir debian
yaması var. Ben yeni para birimini içeren tr_TR dosyası ile
libc yerellerini derlemek istedim. Uluslararası para birimi
ISO-4217'ye uygun değil diye yereli derlemedi. Biliyorsunuz,
para birimimiz bu standartta yayınlandıktan sonra, libc
yerelinde para birimimizi değiştirdim (libc yerelimizin libc
seviyesinde sorumlusu benim). Ancak, libc'yi bu denetimi yapacak
şekilde yamayan standart düşkünleri, nedense standartlarını
güncellememişler. Benim için para birimimizi dosyada
değiştirmek sorun değil, TRY'yi TRL yaptım ve yerelleri
derledim.
Aynı standartlara uyma duyarlılığını SysV için neden göstermemişler de
/etc/environment gibi sorunlu bir dosyayla login öncesi yereli
ayarlamaya kalkmışlar, anlamak zor.
Esen kalın,
Nilgün
> gdm örneğinde, gdm servisi login olunan bir oturumdan başlatılmadığı
> için, /etc/environment dosyasını okuduktan sonra, profile dosyalarını
> bakmıyor ve o şekilde açılıyordur. Ancak bir kullanıcı adı ve parolası
> girdikten sonra o kullanıcıyla login olma süreci başladığında, profile
> dosyaları dikkate alınıyor ve kullanıcının istediği şekliyle açılıyor.
>
> Kmail sorununda ise, LANG olarak tr_TR.UTF-8 seçildiğinde, karakter dönüşüm
> problemleri ortadan kalkıyor ancak tr_TR kullanıldığında, küçük harf
> dönüşümünde belirtilen problem oluşuyor.
>
> Aslında bu hata, KDE kütüphanelerini kullanan tüm programlarda var ancak küçük
> harfe çevirip karşılaştırma yapan uygulama sayısının azlığı nedeniyle biz hep
> kmail'i görüyoruz.
>
> Sonuç olarak, KDE'de sorunsuz Türkçe için, tr_TR.UTF-8 seçilmeli. Konu ile
> ilgili ayrıntılı bilgiler kde hata veritabanı üzerinde arama yapılarak elde
> edilebilir:
> http://bugs.kde.org/show_bug.cgi?id=101211
> http://bugs.kde.org/show_bug.cgi?id=93433
>
>
> >Bu iki nedenle /etc/environment dosyasını *silin* diyorum.
> >İhtiyaç olmadığı gibi sorunlara yol açıyor. Savunduğunuz
> >gibi masum bir dosya değil o. Yerel ayarı bir yerde
> >tr_TR, başka bir yerde tr_TR.UTF-8 olmaz. Hepsi aynı
> >olmalıdır.
> >
> >Sistem belgelerini okumuşsanız /etc/environment dosyasının
> >atıl olduğu bir yerlerde yazıyor. O kadar çok belge
> >okuyorum ki, yerini şu an hatırlamıyorum.
>
Reply to: