Tokens — Page 35

Linux Console'da Türkçe karakterler

Yeni bir Debian kurulumu yaptım. X.Org pencere sistemini çok gerekli görmediğim için onu kurmadım, işlerimi console’dan (burada console’dan kastım sanal terminaller, yani /dev/tty[1-7]) halledecektim. Kurulumu biraz kurcaladıktan sonra Türkçe karakterlerin bir kısmının düzgün gösterilmediğini (ş, ı gibi) farkettim. Biraz araştırdıktan sonra hem Türkçe karakterlerin bulunduğu yazı tiplerini (font) indirip kurdum hem de gözü daha az yoran görünüm (glyph) seçtim. Yaptıklarım şunlar:

# aptitude install console-setup

Bu paket hem çeşitli fontları kuruyor (bağımlılık sayesinde) hem de console karakter desteğini ve fontları seçebilmenizi sağlayan bir program getiriyor. Bunu kurduktan sonra

# dpkg-reconfigure console-setup

komutunu kullanın, ekranı izleyin ve Türkçe’yi seçin. Eğer fontlardan Terminus-Bold seçerseniz biraz daha kalın, rahat okunur Türkçe karakterleri kullanabilirsiniz.

Bonus olarak da şu komutu vereyim:

# showcfont

Bu komutla kullanmakta olduğunuz yazı tipinin gösterebildiği karakterleri ekranda görebilirsiniz.

Kolay gelsin.

Linux'ta Pidgin derlemek

[English version follows]

Linux’ta bulunan sohbet istemcilerinin çok gelişmiş olduklarını düşünmüyorum. AMSN, Kopete veya diğerlerinde video veya ses konularında hep bir sorunla karşılaşmışımdır. Ama içlerinden en iyisi Pidgin bana göre. Birçok anında mesajlaşma sunucusuyla iletişim kurabilen Pidgin’in Debian paketi biraz gerideydi, bu yüzden kaynak kodlarından derlemek istedim. Ama sürekli şu sorunla karşılaştım:

configure: error:

You must have the GTK+ 2.0 development headers installed to compile Pidgin.
If you only want to build Finch then specify --disable-gtkui when running configure.


Teker teker bazı gereklilikleri kurduğum halde sürekli başka gerekliliklerden şikayet etti Pidgin. Bunun üzerine APT’ın build-dep özelliğini kullanmam gerektiğine karar verdim. Aptitude’un bu seçeneği ile kaynaktan derleyeceğiniz bir programın gereklilikleri otomatik olarak kuruluyor. Tabii bunun için sources.list dosyanızda bir satırın deb-src ile başlaması gerekli. Benimki şöyle:

$ more /etc/apt/sources.list
deb ftp://ftp.tr.debian.org/debian/ lenny main contrib non-free
deb ftp://ftp.tr.debian.org/debian-security lenny/updates main contrib non-free
# Uncomment the deb-src line if you want 'apt-get source'
# to work with most packages.
deb-src http://ftp.tr.debian.org/debian/ lenny main contrib

# Security updates for stable
# Will be using the TR mirror for this also.
# deb http://security.debian.org/ stable/updates main contrib


Şimdi gereklilikleri şöyle halledebiliriz:

# apt-get build-dep pidgin

Bundan sonra bir paket daha kaldı. Gereklilik listesinde eksik bırakıldığı için kurulmayan network-manager-dev paketini kurmalıyız:

# aptitude install network-manager-dev

ve artık # ./configure && make && make install demek zamanı.

————————————-

If you are relentlessly trying to install Pidgin from sources but you keep getting dependency errors, then there are shortcuts to installing them. Try build-dep option of APT system to install depended packets:

# apt-get build-dep pidgin

One more thing left, you also need to install network-manager-dev because somehow it is not installed automatically (I’m guessing that the old version of Pidgin in the repositories does not need this package so…).

# aptitude install network-manager-dev

Now all you need to do is a simple # ./configure && make && make install . Hope this was useful.

Debian'da sürümler ve paket yönetimi

Debian bir zamanlar paket yönetim sistemi ile gerçekten öne çıkan bir linux dağıtımıydı. Daha sonra Debian temelli Ubuntu ile birlikte işler çok daha kolay hale geldi ama sistem yöneticisinin en sevdiği dağıtım sağlamlığı ile halen Debian. Çoğu sunucu işleri için bu dağıtım tercih ediliyor. Paket yöneticisi olan APT, aptitude programı ile veya apt-get ile çalıştırılır, peki programların veritabanları nereden elde ediliyor? Bunun için sources.list isimli bir dosya kullanılır. Varsayılan olarak bu dosya /etc/apt/sources.list adresindedir ve her “aptitude update” deyişimizde bu dosyadaki yansılar kontrol edilerek yeni paketlerin listesi alınır. Daha sonra “aptitude upgrade” dediğimizde sistemimizde bulunan programlar yeni sürümleri varsa güncellenir veya “aptitude search” ile bir paket aradığımızda varlığı bu listeden kontrol edilir.

En hızlı yansıyı bu listeye yazmanız sizin için bir avantaj çünkü büyük miktarlı güncellemeler özellikle yavaş internet hızına da sahipseniz uzun zaman alabilir. Hangi yansının daha hızlı olduğunu bulmak biraz zahmetli bir araştırma gerektiriyor, neyse ki küçük bir program yardımıyla bunu otomatikleştirebiliriz. Programın adı “netselect-apt” bu programı aptitude ile kuruyoruz:

# aptitude install netselect-apt

Ve çalıştırıyoruz:

# netselect-apt
Using distribution stable.
mirrors_full has been found.
I'll use that, rather than downloading it again.

Choosing a main Debian mirror using netselect.
netselect: unknown host debian.planetmirror.com
netselect: 227 (24 active) nameserver request(s)...
...
...............................................................................
The fastest server seems to be:
http://ftp.tr.debian.org/debian/

Writing sources.list.
Done.


Program önce yansı listesini indiriyor (veya daha önceden çalıştırılmışsa ve güncel liste varsa onu kullanıyor) ve listedeki yansıların hızını ölçüyor. Bir süre sonra bu ölçüm bitiyor ve çalıştığınız klasöre sources.list dosyasını oluşturmuş oluyor. Eğer bu dosyayı /etc/apt/sources.list olarak taşırsanız en hızlı yansıyı kullanmaya başladınız demektir. Daha detaylı bilgi için ve Debian’ın hangi sürümünü istediğinizi vs. belirtmek için “man netselect-apt” veya “netselect-apt -h” çıktılarına bakmanız gerekiyor.

Debian’ın hangi sürümünü kullanıyorsunuz peki? Bunu sources.list dosyasına bakarak anlayabilirsiniz.

deb http://ftp.tr.debian.org/debian/ stable main contrib

gibi satırlarınız olacak, buradaki 3. kelime sürümünüzü belirtiyor. Burada stable denilmiş.

deb ftp://ftp.tr.debian.org/debian/ lenny main contrib non-free

satırına benzer bir satır varsa lenny kullanılıyor demektir (lenny şu anda testing aşamasında). Debian’daki sürümler arasındaki farklar konusunda şu sayfaya ve bu konudaki daha detaylı açıklamalar ve APT bilgileri için şu sayfaya bakın.

Debian’da bir sürümden ötekine nasıl geçebilirsiniz? Sürüm yükseltmek için aslında yapmanız gerekenler çok basit, az önce gösterdiğim sources.list dosyasındaki 3. kelimeyi istediğiniz sürüm ismi ile değiştirmek. Bunun için stable, testing, unstable gibi geliştirme isimlerini kullanabileceğiniz gibi etch, lenny veya sid gibi özel sürüm isimlerini de kullanabilirsiniz. Bu yazının yazıldığı tarihte etch kararlı (stable), lenny daha az kararlı olan testing sürümünü, sid ise kararsız olan unstable sürümlerinin özel isimleri. Örneğin sources.list dosyasındaki stable kelimelerini testing’e çevirirsek bir sonraki APT güncellemesinde testing’e geçeceğiz demektir.

# aptitude update
# aptitude upgrade


Sonrası sisteminiz yeni sürüm için gerekli paketleri yüklemiş olacaktır.

Yeni sürüme geçmek için aslında başka yollar da var. Bunlardan biri olan “apt-get dist-upgrade” yardımı ile otomatik olarak bir üst sürüme geçebilirsiniz. Bununla APT bazı ayarlar yaparak paketlerin sürüm/bağımlılık bilgilerini de güncelleyecektir. Daha fazla bilgi için “man apt-get” ve Debian.org dökümantasyonunu inceleyebilirsiniz (bir nevi RTFM yapıyorum, biliyorum :)).

Kolay gelsin.

YAML, Makefile vs.

YAML formatını Ruby on Rails günlerimden biliyorum. Şimdi Symfony deniyorum ve onun da varsayılan olarak bu dosya formatını ayarlar için kullandığını gördüm. XML ilk çıktığında ikili (binary) dosyalar yerine ASCII kullanarak bilgi saklamayı sağlamak amacındaydı, yani insanlar tarafından okunabilir olması (human readable) en büyük avantajlarından sayılıyordu. Ama XML’in genişletilebilir olması yüzünden (veya sayesinde?) onlarca ek etiketler ve bunları açıklayan bir sürü döküman ortaya çıktı. Sonuç olarak pratikte XML’in binary dosyalardan çok farkı kalmadı, okunabilirliği ortadan kalktı. YAML bu boşluğu doldurmaya çalışan bir format. Ama benim C/C++ projeleri için çok kullandığım Makefile’lar ve daha birçok başka formatta olduğu gibi boşluklar önemli. Ben ise boşlukların önemli olduğu durumlardan nefret ediyorum. Symfony’nin çevrimiçi kitabında “Help, a YAML File Killed My App!” başlıklı bir bölüm var ki olabilecek kazaları bir sayfa boyunca anlatıyor. Bu hoşuma gitmiyor. Yok şuraya boşluk koy, yok tab kullanma onun yerine iki boşluk kullan, yok satır atlama… Bunlar yazılımcının bence kolayca hataya düşmesine yol açabilecek olaylar ve gereksizler. Daha güzel bir dil arıyorum.