20 Ocak 2011 Perşembe

Pardus 2011'e (RC) sadece lxde masaüstünü kurmak

Merhabalar,

Aslında bu yazıyı daha önceden yazmayı planlıyordum ama hastalık ve diş sorunları nedeniyle sürekli ertelemek durumunda kaldım. Hala kurtulamadım fakat zorla da olsa yazayım diyorum.

Neyse, Pardus 2011 çıktı fakat 2011'i bir türlü virtualbox'un yeni sürümünde düzgün açamadığım için RC ile kurulumu anlatacağım.

İlk olarak [1] adresinden istediğimiz aşamadaki iso'yu indiriyoruz. (32-bit, 64-bit fark etmez, sisteminize göre seçin eğer 32bit sisteminiz var ise 64-bit olanı indirmeyin :))

İndirme bittikten sonra virtualbox'u kurduktan sonra çalıştırıyoruz. (pisi install virtualbox)

Ana ekrandan yeni diyoruz. İleri dedikten sonra makina'nın ismini yazıp (örn: pardus-lxde) işletim sistemi olarak Linux, versiyon olarak da Other Linux seçebiliriz.

İleri'ye bastığımızda ne kadar bellek ayırabileceğimizi soracak, buraya da ben 1024MB veriyorum. Sizin toplam belleğinize göre verebilirsiniz. Sadece lxde kurulumunda 512MB bile gayet yeterli olacaktır ama yine de bulunsun bence :) Buradan sonra harddisk oluşturma bölümüne giriyoruz. Yeni dinamik harddisk oluşturuyoruz. (fark etmez aslında, ben dinamik oluşturuyorum) Ve son olarak bitiriyoruz.

Tekrar ana menüye dönüp, makinanın isminin yazdığı yere çift tıklıyoruz. Burada yükleme ortamı seçiyoruz. Ortam kaynağı yazan yere gelip, sağdaki dizin simgesine benzeyen simgeye tıklayıp, indirdiğimiz isoyu seçip tamam diyoruz. Sonra seçtiğimiz iso'dan açılıyor sistem. Burada dili seçip, açılış seçeneklerine

yali=baseonly

yazıyoruz. Böylelikle sadece temel sistem kurulacak. Eğer böyle sistem açılmaz ise açılırken f5'e basıp çekirdeği güvenli ayarlar modunda açmanız gerekebilir. (bu durumda da yali=baseonly yazmalısınız.)

Sonra standart Pardus kurulumu yapıyoruz.

Sistem yeniden başladığında, konsolda kullanıcı adı soran ekran ile karşı karşıyayız. Bunun sebebi artık Kullanıcı işlemlerinin sistem başladıktan sonra yapılıyor olması. Bunun için de varsayılan root kullanıcısını kullanacağız.

Kullanıcı adı: root
Parola: pardus

Sizin de fark edeceğiniz üzere bir çok şey yok. Bunlardan en önemlisi Ağ. Sadece system.base'i kurduğumuz için ağ için gerekli paketleri kurmadı. Bunun için taktığımız iso'daki arşivi kullanarak ağ yöneticisini kuracağız.

Sistem açıldıktan sonra root ile oturum açıyoruz. Bu işlemden sonra

mkdir -p /mnt/cdrom

mount /dev/cdrom /mnt/cdrom

komutlarını sırayla uyguluyoruz. Eğer "no medium found" şeklinde bir yazı çıkarsa karşınıza yukarıdaki menüden aygıtlar->cd/dvd devices, buradan da iso'yu seçip sonra

mount /dev/cdrom /mnt/cdrom

komutunu uygulayabiliriz. Çıktı olarak, yazma korumalı, salt-okunur olarak bağlanıyor demeli.

Bu işlemden sonra "ls /mnt/cdrom" komutu ile doğru bağlayıp bağlamadığımızı kontrol edebiliriz.

Şimdi

"pisi lr" komutu ile o anki depoları görebiliyoruz. Buradaki çıktıdaki bütün depoları kapatmalıyız. Bunu da

üstteki komut çıktısındaki depo isimlerine göre

silmek için "pisi rr depo_adi"
kapatmak için "pisi dr depo_adi"

komutunu kullanabiliriz. Ben depoyu sileceğim. Bunun için

pisi rr pardus

yazıyorum. Varsayılan depo pardus olarak eklendiği için depo adına "pardus" yazıyorum.

Şimdi iso'daki depoyu sisteme ekleyelim. Bunun için

pisi ar pardus-cdrom /mnt/cdrom/repo/pisi-index.xml.bz2

yazıyoruz. Eğer çıktı olarak Paket veritabanı güncellendi yazarsa depo sorunsuz eklenmiş demektir. Yine de kontrol etmek için "pisi up" komutunu uygulayabilirsiniz. Burada "depo güncelleniyor" kısmında eklediğimiz "pardus-cdrom" yazmalı.

Ağ yöneticisini kurmak için

pisi it NetworkManager

yazıyoruz. Bu işlemden sonra

service NetworkManager start

yazarsak ağ, sorunsuz bir şeklide çalışır. (en azından çalışmalı)

Ağ'ın sorunsuz çalışıp çalışmadığını kontrol etmek için

ping www.google.com

gibi bir adres ile deneyebilirsiniz. Çıkmak için ctrl+c ye basın. Eğer ağ hala çalışmıyorsa sistemi yeniden başlatmayı deneyin. Sistemi yeniden başlatmak için "reboot" komutunu uygulamanız yeterli.

Bu işlemden sonra resmi Pardus depolarında da işlem yapabiliriz fakat indirmiş olduğumuz isodaki paketlerin yeterli olması sebebiyle ben iso üzerinden kurulum yapacağım.

Şimdi sırada grafik sunucusu var. Yani X. Bunun için

pisi it xorg-server
pisi it -c x11.driver

pisi it librsvg libgomp cairo tiff jpeg djvu fftw3 lcms libwmf liblqr

Komutlarını uyguluyoruz. Aslında normalde bu işlemlerden sonra yali'nin açılışta kullanıcı oluşturma vb. işlemleri yapması lazım ama henüz çözemediğim bir sebepten dolayı yali çalışmıyor. (aslında /etc/yali/yali.conf içerisinde installation u firstboot yapınca gelmesi lazım) Çözünce buraya yazarım tekrar. Eğer sistemi yeniden başlattıysanız ve kullanıcı adı soran bir ekran (grafik ekran) ile karşı karşıyayaysanız ctrl+alt gr+f1 ile konsola düşüp root ile oturum açabilirsiniz.

Yalı şimdilik işimizi görmediği için kaldırabiliriz fakat bağımlılıklarını kullandığımız için onları tekrar kuruyoruz:

pisi it yali --reinstall
pisi rm yali

Elle kullanıcı oluşturma da şu şekilde:

adduser kullanici_adi

parolayı belirlemek/değiştirmek için de

passwd kullanici_adi

komutunu uyguluyoruz. Bunun için de root olmamız gerekiyor. Son olarak da bu kullanıcının "su" komutunu uygulayabilmesi için de

usermod -a -G wheel kullanici_adi

komutunu uyguluyoruz.

Şimdi, oluşturmuş olduğumuz pardus-cdrom deposunu kaldırıp resmi pardus deposunu ve lxde deposunu ekleyeceğiz.

Komutlar şu şekilde:

pisi rr pardus-cdrom (ya da pardus-cdrom yerine verdiğiniz depo ismi)
pisi ar pardus-2011 http://packages.pardus.org.tr/pardus/2011/devel/x86_64/pisi-index.xml.xz (eğer eski depoyu silmek yerine kapattıysanız "pisi er depo_adi" ile aktif hale getirebilirsiniz)
pisi ar lxde-repo http://x86-64.comu.edu.tr/lxde/x86-64/pisi-index.xml.xz

(eğer 32 bit kuruyor iseniz x86-64 yerine i686 yazmanız gerekiyor. x86-64.comu.edu.tr adresi aynen kalmalı, sadece sondaki x86-64 değişmeli.)

Bunlardan sonra

pisi up

ile sistemimizi güncelleyebiliriz. Şimdi sırada lxde'yi kurmak var.

pisi it gnome-menus gpicview gtknetcat leafpad libfm lxappearance lxde-common lxde-icon-theme lxde-menu-cache lxdm lxinput lxlauncher lxmenu-data lxpanel lxrandr lxsession lxsession-edit lxshortcut lxtask lxterminal openbox obconf pcmanfm xarchiver

komutu ile gerekli bütün paketleri kuruyoruz. (aslında bunların hepsi bir bileşende olacak o zaman pisi it -c ile kurabileceğiz)

Şimdi sistemimizi yeniden başlatıyoruz. Eğer karşımıza grafik ekran gelirse ctrl+alt gr+f1 ile konsola düşüp root ile giriş yapıyoruz. Sonra

service xdm stop

komutu ile görüntü servisini durduruyoruz. (açılmasa bile kapatalım) Sonra

lxdm

ile LXDE açılış yöneticisini çalıştırıyoruz. Kullanıcı olarak belirlemiş olduğumuz kullanıcı adını ve parolasını girdikten sonra sistem açılıyor.

Eğer dosya yöneticisi çalışmıyor ise:

terminali açın (alt+f2 ile lxterminal)
/tmp/.pcmanfm-socket ile başlayan bir dosya olacak bunu silmek gerekir. Bunun için de

rm -f /tmp/.pcmanfm-socket-*

komutunu uyguluyoruz.

Ses için ise:

gerekli alsa ve pulseaudio modüllerini yüklememiz yeterli fakat yeni kernel (2011 sürümünün son kerneli) ile virtualbox'da sistemi açamadığım için sesi yazmıyorum. Bu halledildiği zaman yazarım. Eğer sistemi güncellediyseniz ve sistem açılmıyorsa diğer seçeneklerdeki eski kernel ile açmayı deneyin (RC kerneli)

Şimdilik bu kadar. Kolay gelsin.

8 Ocak 2011 Cumartesi

Bölüm dersleri projeleri

Bu sene derslerden 3 tane proje aldık. (aldık = Hepsinde ev arkadaşım Engin Manap da var.)

Öncelikle bütün projelerimize proje depo sayfamızdan ulaşabilirsiniz.[1] Ve hepsini SVN ile geliştirdik.

1. Veritabanı Yönetim Sistemleri (DBMS) Dersi Projesi - bmforum

Projenin asıl amacı veritabanını anlamak. Veritabanını kullanmak. Bunun için ne ile yazıldığı, nasıl olduğu önemli olmayan ama mutlaka veritabanı kullanılan bir proje yapmamız istendi. Ev arkadaşım da bu yaz yapmış olduğu stajda django ile beyin2'yi [2] geliştirdiği için django ile yapmaya karar verdik. Ve basit bir proje yaptık. Projeye [3] adresinden ulaşabilirsiniz. [3] adresinde bmforum/ dizininin (yani bmforum/bmforum oluyor) içerisi projenin tamamını kapsıyor. [3] adresindeki diğer dosyalar, projenin R diyagramı ER şeması vs.

Proje çok da karmaşık bir şey değil. Hedef öğrencilerin paylaşım yapabileceği bir portal. Özellikleri, forum (kişisel mesaj vs. de var), proje ekleyebilme, ders notu ekleyebilme, sınav soruları ekleyebilme ve bunların akabinde öğretmen, ders ekleyebilme. Forumda genel bilgi paylaşımı oluyor. Diğer ders notu, sınav ve projelerde ek dosya da gönderilebiliyor. Şekil açısından pek başarısız. Bir de gezegen ekledik ama sadece blog adreslerini listeliyor. O işi yapacak botu yazmadık. Veritabanı olarak da derste de anlatılan veritabanı olan PostgreSQL kullandık.

Bu proje bu şekilde.

2. Görsel Programlama Dersi Projesi - medyaindeksleme

Bu dersin projesinin amacı da java ile görsel programlamayı öğrendiğimizi uygulamak. (evet maalesef java)Dersin hocasının da tercih ettiği ve derste kullandığı eclipse'yi kullandık. Yaptığımız projede veritabanı da kullandık. Bu sefer MySQL kullandık. Projenin amacı medya indeksleme yapmak. Yani elinizdeki medyaları (cd, dvd vs.) bilgisayara teker teke takıp, listeden istediğiniz dosyayı seçip, medya numarası vererek veritabanına kaydediyorsunuz. Bu sayede de bir medyanın içerisinde ne olduğunu kolaylıkla takip edebiliyorsunuz, ya da aradığınız dosyanın hangi medyada olduğunu kolaylıkla bulabiliyorsunuz. Projenin özellikleri arasında yazdırma da var. Projeye [4] adresinden ulaşabilirsiniz.

Ve son olarak da

3. Çevik Yazılım Geliştirme Dersi Projesi - tist

Bu dersin projesi de aslında basit bir proje olacaktı, dvd kiralama programı gibi. Fakat bu ders seçmeli olduğu için ve bir şeyler öğrenelim diye aldığımız için ben derste çıkıp, hocam eğer bir proje yapacaksak daha düzgün bir şeyler öğrenebileceğimiz bir şeyler yapalım dedim ve öneri olarak da sürüm takip sistemi yapalım dedim. O da tamam siz yapın o zaman dedi. :) Ve bunun üzerine çalışmalara başladık.

Sürüm takip sistemi yapıyorduk. Java kullanmamız gerekiyordu (yine maalesef) ve çevik yazılım geliştirme pratiklerini kullanarak yazmalıydık. En basitinden test güdümlü geliştirme. Merkezi sürüm takip sistemi[5] yazmaya karar verdik. (SVN gibi) Ve dönem sonunda projemizi tamamladık. Şu an için, sunucu ve istemci için ayrı çalıştırılabilirler (jar dosyaları) var.

Sunucu ilk çalıştırıldığında hangi dizin üzerinde çalışılacağını soruyor ve bunu ayarlar.cfg dosyasına revizyon numarası (başlangıçta revizyon numarası 1 oluyor) ile birlikte kaydediyor. İleride de buradan çekip kullanıyor.

İstemci ise çalıştırıldığında verilen ip'yi (mesela "tist getir 192.168.1.5") bulunulan dizinde ".tist" adında bir dizin oluşturup onun içerisine sunucu.txt isminde bir dosyanın içerisine yazıyor.

Diğer kısımlar da şu şekilde çalışıyor, istemci sunucuya revizyon isteği gönderiyor (ya son ya da istediği revizyon) sunucu da ona göre gerekli diff dosyalarnı birleştirip yolluyor. Bu diff dosyalarını sunucudaki projenin ana dizinindeki "Deltas" dizini içerisindeki dosyaları birleştiriyor bunları geçici "Temp" dizinine koyduktan sonra sıkıştırıp istemciye yolluyor ve bu sıkıştırılmış dosyayı siliyor. İstemci, sunucuya yeni revizyonu yolladığı zaman (commit) bunları sıkıştırıp (Zipleyip) proje dizinindeki ".tist" dizininin içerisine atıyor. Sonra sunucuya yolluyor ve o sıkıştırılmış dosyayı siliyor. Sunucu bunu alıp "Temp" dizinine açıyor. Son revizyonu da "Head" dizinine "Deltas" dizinindeki diff dosyalarını birleştirerek koyuyor. Zaten "Head" dizininde son revizyon olduğu için (yollamadan önceki son revizyon) "Head" ile "Temp" dizinini karşılaştırıp gerekli diff dosyalarını en sonunda revizyon numarası olacak şekilde (x.txt.delta.r12 gibi) "Deltas" dizinine koyuyor.

Şimdilik bilinen sorunları, eğer bir dosyayı silersek ve silindikten sonraki revizyonu istersek, dosyayı boş olarak yolluyor. Bir de başlangıç işlemlerinde dizin isimlerinde "Slash"'ları düzgün vermek gerekiyor. Fazladan konulursa (hatta en sona da konulmaması gerekiyor) sorun yaratıyor.

Son projeye de [5] adresinden ulaşabilirsiniz. [5] adresine girdiğinizde projeamaclari.txt ve iterasyonlar.txt diye ayrı iki dosya daha göreceksiniz. Bunlarda ders ile ilgili raporlar diyebiliriz. "tist" dizini projenin tamamını içeriyor.

Bu proje için bir de ant dosyası oluşturduk(build.xml). Tabi bunları yapabilmek için Pardus'da "ant" paketinin kurulu olması gerekiyor. Bu dosyayı oluştururken yaşadığımız bir sorun vardı, gerekli kütüphaneleri bulamıyordu. Hata çıktısı da şu şekildeydi:

BUILD FAILED
/build/xml/yolu/build.xml:31: Unable to find a javac compiler;
com.sun.tools.javac.Main is not on the classpath.
Perhaps JAVA_HOME does not point to the JDK.
It is currently set to "/opt/sun-jdk/jre"

Bunun için de build.xml'e sağ tıklıyoruz, (soldaki menüden) run as -> external tools configurations'a giriyoruz. Buradan solda eğer Ant Build'in altında bir şey yoksa Ant Build'e çift tıklıyoruz varsa ona tıklıyoruz. Üstteki sekmelerden Classpath'i seçiyoruz. Burada herhangi bir yere sol tıkladıktan sonra (mesela User Entries) add external JARs'a tıklıyoruz. Buradan /opt/sun-jdk/lib/tools.jar'ı ekliyoruz. Eğer başka ayrı kütüphaneler kullandıysanız (mesela biz junit kullandık) bunu da eklemeniz gerekiyor. Bunun için de tekrar add external JARs'a tıklayıp /usr/share/java/junit.jar'ı ekliyoruz. Ve tekrar ant build işlemini başlatıyoruz. Ve tamamlanıyor.

Özet olarak projelerimiz bu şekilde. Her türlü yorum/öneri/eleştirilere açığız. Gördüğünüz sorunları [1] adresine issue girebilirsiniz.

Pardus Üzerinde Cairo-Dock ve Daisy kurulumu

Necdet Hoca'nın Macbook Air'i geldikten sonra, zaten şekil olarak gayet beğendiğim (her ne kadar "konsolcu" olsam da) alttaki "Dock" u görünce, ya bunun bir de linux versiyonu vardı neydi o diye araştırmalara başladım ve buldum. Cairo-Dock[2]. Aslında bunun haricinde bir tane de Daisy[3][4] var. Daisy direkt olarak KDE uygulamacıklarına da eklenebiliyor ama hem yeterince yetenekli/başarılı/şekilli bulamadım hem de aradığım tam olarak öyle bir şey değil. Daisy'i de yeterince denedim aslında ama olmadı :).
Şu an Cairo-Dock'u da grafik kartı sorunları nedeniyle kullanmıyorum, ne olur ne olmaz. Kurulumlarından bahsedeyim biraz. (şimdilik burada bahsedeceğim ama ileride paketini yapabilirim :))
Daisy, zaten bir plasma. Kurulumu çok kolay ama programcık ekle'den yeni programcık al diyerek bulamadım ben. [3] adresinden tarball'ını indirdim. Sonra bu tarball'ı açıp, açılan dizine girdim. Burada 
mkdir build
cd build
cmake ../ -DCMAKE_INSTALL_PREFIX='kde4-config --prefix'
make
sudo make install
komutlarını sırayla uyguladım. Sonuç olarak Programcıklar listesinde Daisy gözüktü ve oradan istediğim yere Daisy'i ekleyebiliyordum. Bu kadar :) Tabi bunu kurabilmek için, gerekli derleme araçlarının olması gerekiyor. (cmake vs. ve yanlış hatırlamıyorsam kdelibs-devel)
Cairo-Dock'un kurulumu benim için daha zahmetli oldu. Öncelikle [5] ve [6] adreslerinden cairo-dock-core ve cairo-dock-plugins in son hallerini indiriyoruz.
Yine cairo-dock için de bağımlılıklar çok önemli. Bunda yaşadığım bir sorun da şöyleydi: gtkglext paketine (ve gtkglext-devel) ihtiyaç duyuyordu. Pardus 2011 depolarında böyle bir paket yok, 2009'dan çekip derleyip kurdum fakat çalışmıyor. Sorun, undefined_symbol'müş. Bunun için diğer dağıtımlara baktım. Debian bununla ilgili bir yama almış[7]. Bununla beraber paketi de depoya aldım[8]. Aslında bu sorun 2009'da yok. Çünkü gdk-pixbuf/gtk güncellemesinden sonra kırılmış bu. Eklediğim yama da bunu düzeltiyor. Bundan sonra da gerekli diğer bağımlılıklar şu şekilde olmalı: 
cairo-devel, 
gtk2-devel, 
gdk-pixbuf-devel (bundan tam emin değilim), 
librsvg-devel, 
libgnomeui-devel, 
vte-devel, 
libXxf86vm-devel, 
alsa-lib-devel (bundan da tam emin değilim), 
libasound-devel (ya da asound{-lib}-devel, fakat bu paket Pardus 2011 Deposunda yok), 
libXtst-devel, 
gnome-menus-devel (bu paket de Burak Çalışkan'ın Gnome deposunda[1] mevcut), 
freeglut-devel (bu paket ayrıca gtkglext'de de var. 2009 da bu paketin ismi glut, 2011 de freeglut oluyor.),  
libetpan-devel (bu paket de Pardus 2011 Deposunda yok), 
libxklavier-devel, 
webkit-gtk-devel (sanırsam bu olmalı, webkit e gerek duyuyor), 
libexif-devel.
bir de XFCE için libthunar-devel ve diğerleri için gnome-vfs-devel istiyor. libthunar-devel ya da thunar-devel depoda yok. gnome-vfs-devel depoda mevcut.
Diğerler bağımlılıklar da system.devel bileşeni içerisinde (curl-devel, cmake, dbus-glib-devel, libX11-devel vb. araçlar) mevcut.
Bunların hepsinin kurulduğundan eminsek,
[7] adresinden indirdiğimiz tarball'ı bir yere açıyoruz ve içerisine giriyoruz (cairo-dock-X.X.X)
mkdir build
cd build
cmake .. -DCMAKE_INSTALL_PREFIX=/usr
make ( ya da make -j $(grep -c ^processor /proc/cpuinfo) )
sudo make install
Ve temel paket kuruluyor. Buradaki make satırında parantez içerisindeki yazan komut ile bütün işlemcilerin kullanılması sağlanıyor. 
Bunun üzerine bir de eklentileri kurmak için de, [8] adresinden indirdiğimiz tarball'ı açıyoruz ve içerisine giriyoruz (cairo-dock-plugins-X.X.X)
mkdir build
cd build
cmake .. -DCMAKE_INSTALL_PREFIX=/usr
make ( ya da make -j $(grep -c ^processor /proc/cpuinfo) )
sudo make install
Aslında bu da temel kurulumun aynısı. Bunlardan sonra direkt cairo-dock'u çalıştırabiliriz.(/usr/bin/cairo-dock) Bunun için Alt+f2 uygundur. :)
Afiyet olsun.

Pardus 2011 Amarok, Clementine, Rhythmbox sorunları

Pardus 2011'de medya oynatıcılar ile ilgili bir sorunum var. (Aslında müzik oynatıcılar)

Elimde biraz iyi bir müzik arşivim var. (1TB ye yaklaştım sanırım) Bunların da arasında tek tek, dizin dizin dolaşmak (her ne kadar baş_harf/sanatçı/albüm/şarkı olarak yapmış olsam da, mesela C/Camel/1996 - Rajaz/04 - Rajaz.flac) biraz sıkıcı olabiliyor. Onun yerine koleksiyondan Rajaz yazınca direkt bunun çıkmasını bekliyorum. Bunun için zaten kullanıyor olduğum Amarok üzerinden koleksiyon oluşturdum. Zaman geçti, artık Amarok arşivimdeki bir şeyi beğenmiyor ki %49 civarında kalıyor. Çok fazla deneme imkanı da bulamadım ama sorun var gibi. Bütün koleksiyonu baştan taradı. (ki bu bayağı bir vakit alıyor, tam hatırlamıyorum ama 1 saatten fazla) Ve bu sorun tekrar tekrar aramasında devam ediyor. (Aslında araçlar->tercihler->koleksiyondaki kütüphanedeki değişiklikleri izle'yi işaretlediğim zaman ya da Settings->Configure Amarok->Collection->Watch folders for changes'i , aradığında bu sorun ortaya çıkıyor) Halbuki amarokcollectionscanner Komutu ile taradığım zaman sorun olmuyor. Neyse bunu biraz daha zamanım olduğu zaman detaylı araştırıp, gerekirse hata gireceğim.

Bu hatalar sonucu depoda bulunan Clementine'i deneyeyim dedim. Bunda her şey çok güzel. Amarok 1.4 görmek süper bir şey fakat bu sefer de müziklerin bilgilerindeki kodlamalar ile ilgili bir sorun var. Yani Türkçe karakterleri düzgün okuyamıyor. Benim müziklerimden mi yoksa paketteki bir eksiklikten mi tam çözemedim ama bunda da böyle bir sorun var gibi. Tam olarak sorunun bu olduğundan emin olduktan sonra, çözümünü de araştırıp bununla ilgili bir çözüm ya da hata girdisi yaparım.

Clementine seçeneğini de tükettikten sonra geriye rhythmbox kalıyor. Pardus'un resmi depolarında yok fakat Burak Çalışkan'ın deposunda [1] bu paket mevcut. Buradan da rhythmbox'u kurdum. Bu sefer de diskteki bütün medyaları tarıyor. Ve bir türlü bunun önüne geçemedim. Milyonlarca medya buluyor ve taraması yıllar alacak gibi geldi bana birden. Elle dizin verdiğim zaman da nedense baştan tarıyor vb. sorunlar var. Yani sonuç olarak elimdeki sorunu çözemedim. Peki şu an ne mi yapıyorum? Dersler, Projeler vs. çok yoğun olduğu için bunlarla uğraşmayı bıraktım. Amarok'tan koleksiyon izlemeyi kapatıp öyle kullanıyordum. Fakat öyle de bir sürü ID3TAG ları yanlış alıyor. Yani başka bir sanatçı/albüm/şarkı gözüküyorken alakasız birini dinliyor oluyorsunuz. Şu an mesela Clementine'den dinliyorum :)

Bunlar ile ilgili sorunları çözdüğüm zaman ya da bir değişiklik olursa yine buraya yazarım. Umarım benim düzeltebileceğim bir şey çıkar. Olmadı zaten hata açarım, hallolur. :)

Pardus 2011 grafik ekran donma problemi

Pardus 2011'de yaşadığım sorunlardan en önemlisi Xserver ile ilgiliydi. Eskiden çok nadir (2-3 haftada 1) bir sorunum oluyordu. Artık her gün olmaya başladığında önemli olduğunu fark edip onunla ilgilendim. Sorun şu şekilde: Belirli bir zamanda bilgisayardaki grafik olan her şey donuyor sadece fare hareket ediyordu. Ve uzaktan ssh ile bağlandığım zaman her şeyin sorunsuz çalıştığını görüyordum. Tabi bu durumda uzaktan bağlandığım bilgisayardan kontrol ettim. /usr/bin/X, işlemciyi %100 kullanıyordu. Bunun üzerine grafik kartı ile ilgili bir sorun olabileceğini düşündüm. Bu arada grafik kartım Nvidia Geforce 310M. Ssh ile X i öldürüp yeniden başlatayım (service xdm restart ya da) dedim fakat böyle de sorun çözülmedi. Aslında sorun, grafiksel olarak fazla şeyler kullandığım zaman ortaya çıkıyordu. OpenGL ile ilgili bir şey gibi geldi bana. Neyse, bununla ilgili buzillaya hata girdim [1]. Fatih Aşıcı'nın da yardımıyla kernel parametresi olarak blacklist=nouveau yaparak bunu çözdüm. Hatanın çözümünü yaparken /var/log altındaki Xorg.0.log dosyasına ve Xorg.0.log.old dosyasına baktım ve
[  2079.377] [mi] EQ overflowing. The server is probably stuck in an infinite loop.
Satırını gördüm. Bu sorun şu an halledilmiş durumda fakat hala X bazen işlemciyi çok fazla kullanıyor. Ama yeni sürücü ile halledilir gibi geliyor bana. Kernel parametresi olarak verdiğimiz blacklist=nouveau ise açık kaynak kodlu nvidia sürücüsü olan nouveau'yu değil de kapalı kaynak olan nvidia-current sürücüsünü kullanıyor. Bunun yerine zorg ile 
zorg -d "nvidia-current" 
yapmak bir işe yaramıyor. Çünkü şu anki haliyle zorg sürücüyü değiştirmiyor. Doğru sürücü otomatik olarak seçildiği için, kernel parametresiyle öbürünü engellemeniz ya da elle xorg.conf oluşturmanız gerekiyor. Geliştirici listesinde de zorg'un tekrar sürücü seçebilme yeteneği tartışılıyor[2]. Tabi ki [1] adresinde girdiğim hatayı oraya da çözümü yazarak, çözdükten sonra kapattım. Fakat bu çözüm başka kişilerde işe yaramadığından hata tekrar açıldı. Yani bu yöntemin %100 işe yarayacağını söyleyemem. Gelişmeler için [1] adresini takip edebilirsiniz.
[1] http://bugs.pardus.org.tr/show_bug.cgi?id=15756
[2] http://liste.pardus.org.tr/gelistirici/2011-January/027264.html

2011, guestlogin ve diğer Pardus paketleri hakkında

Herkese mutlu yıllar,

Uzun zamandır buraları boş bıraktım. Bu aralar da bayağı bir yoğunluk var ama artık buralara bir şey yazmadıkça kötü hissetmeye başladım. 2011 de buraları boş bırakmayı düşünmüyorum. Zaten Çomak projesi yeterince doldurur gibime geliyor.

Neyse, staj projem olan guestlogin ile başlayayım.

Aslında bu yazıyı bayağı önceden yazmam gerekiyordu. Pardus-Geliştirici listesinde de tartıştığımız[1] üzere, guestlogin'e açılıp kapatılmasıyla ilgili bir özellik ekledim.

Bunlardan ilki guestlogin.conf dosyasına enabled'i eklemek oldu.

eğer enabled=false ise modül çalışmayacak. bunu eklemek için de diğer değerleri nasıl okuyorsam onun gibi 1-2 satır ekledim. Yani:
        guest_enabled = config.get('guest', 'enabled')         if guest_enabled == '':             guest_enabled = "true"
gibi oldu. Buradan da anlaşılacağı gibi, eğer değer boş bırakılsa da true oluyor.
Varsayılan guestlogin.conf dosyasında da o satır (ve yorum satırı) şu şekilde:
# If it is false, module will not work. (default is true) enabled = true
Bu işlemlerle birlikte bu sorunu halletmiş oldum. Şimdi bu proje ile ilgili geriye:
1. Bugzilla'da girilmiş bir hata[2]
2. KDM'ye bir buton eklemek.
2. sine bu aralar yine uğraşmayı düşünüyorum. Biraz uğraştım fakat araya sınavlar vs. girdi bu yüzden biraz ilgisiz kalmak zorunda kaldı. Eğer yapabilirsem çok süper olacak bence.
1. si için de pam kullanmam gerekiyor, onu uygulamak çok da kolay olmayacak ama 2. si daha öncelikli olduğu için 1 den önce onu halletmem gerekiyor.
Şimdilik guestlogin ile ilgili gelişmeler bu kadar. KDM'ye buton eklemek kısmıyla ilgili gelişmeleri de buraya aktarırım.
Diğer paketlerden bahsetmek gerekirse,
Evet, biliyorum Clanlib2'yi paketleyeceğim fakat çözemediğim zilyon tane hatası var. (undefined symbol vb.)Bunları halletmeden de review'e sokmak istemedim açıkçası. Onun haricindeki bütün sorunları hallettim, aslında biraz daha uğraşıp eğer olmaz ise review'e bu haliyle sokmayı düşünüyorum. Oradan gelen yardımlarla çözmek kolaylaşır gibi.
Clanlib2 haricinde, bir de gmailfs'i almıştım. O da eskiden çalışıyorken, şu aralar çalışmıyor, sanırım glibc güncellemesi sonucu patladı o. Zaten pek sağlıklı bir paket değildi ama bir ara bunu da gmailfs geliştiricisine bildirmeyi düşünüyorum. (sanırım o da pek ilgilenmiyor artık projeyle, bayağıdır güncellemiyor)
Ayrıca, fish paketini de üstüme aldım. Fish bir kabuk. Bence çok da güzel bir kabuk olmuş. Mesela "cp -" yazıp taba iki kere bastığınızda size hangi parametrelerin (cp için) ne işe yaradığını söylüyor. Tab tamamlaması bu konuda çoğu şeyde böyle davranıyor. Mesela "man"'ın yorumları da gayet iyi. "ls" yaparken dosyanın tipini de söylüyor. Şu anda review'da paket. Eklemek istediğim şeylerden birisi buna pisi'de tamamlama desteği. Başka tamamlamalar da eklenebilir tabi ama öncelik bu şimdilik.
Necdet Hoca'dan python-PyMT paketini aldım. 2009'da bulunan bu pakette açık bir hatası bulunuyor.[3] Hatayı çözdüm. mtdev adlı kütüphaneyi de paketlemek gerekiyormuş. Bunu da paketleyip, hatayı kapatmayı düşünüyorum.
Hermes paketini de üstüme aldım bu arada. :)
ÇOMAK projesi ile birlikte Fluxbox paketleriyle de uğraşıyorum. Biraz eksiklikler var tabi ama çok düzgün olmasa da fluxbox'u çalıştırmayı başarabildim :)
[1] http://liste.pardus.org.tr/gelistirici/2010-November/026568.html
[2] http://bugs.pardus.org.tr/show_bug.cgi?id=14233
[3] http://bugs.pardus.org.tr/show_bug.cgi?id=15793

6 Ocak 2011 Perşembe

Pardus 2011 ve Eclipse

Bütün sene içerisinde yoğun olduğum projeleri yapabilmemiz için eclipse'ye ihtiyacımız oldu. (Hocaların da çoğu eclipse'yi övüyor/öneriyordu.) Bunun için eclipse'yi kurdum ama yetmedi. 
 Öncelikle aldığım ders olan Çevik Yazılım Geliştirme (Agile Programming) gereği test güdümlü geliştirmemiz gerekiyordu. Bunun için de junit gerekiyordu. Pardus için olan paketini buldum ve kurdum fakat eclipse'in umurunda olmadı bu. Çözüm olarak, projeye dışardan jar ekleyerek (junit.jar'ı) çözdüm bu sorunu. Bu nasıl oldu: Projeye sağ tıklayıp oradan özellikler, java inşa yolu, üstteki sekmelerden kütüphaneler, oradan sağdaki dışarıdan jar ekle'ye tıklıyoruz. Oradan da /usr/share/java/junit.jar'ı seçiyoruz. Ve böylece bu sorun çözülüyor.
 Bende eclipse İngilizce, sizde de öyleyse yukarıda anlattığım yol şu şekilde oluyor. Projeye sağ tıklayıp oradan properties, oradan java build path, üstteki sekmelerden libraries, sağdaki butonlardan add external jar'a tıklıyoruz. Buradan da yine /usr/share/java/junit.jar'ı seçiyoruz.
 Bununla ilgili olarak, o zamanın eclipse paketinin bakıcısı olan Mete Alparslan'a eposta yolladım fakat o da sanıyorum ki Yalı ile uğraştığından dolayı pek fazla ilgilenemedi ve zaten eclipse paketinin bakıcısı da değişti. (zaten o zaman da yayımı güncelleyen de Mete değildi) Şu an yeni sürüm yayınlandı, isimler değişti. (bütün eclipse  paketlerindeki binary takıları atıldı.[1]) Bunun üzerine tekrar denemeler yapıp, eğer yine aynı işleri yapmak gerekirse bunu da bildireceğim. 
 Bunun haricinde de yaptığımız projeleri bir depoda tutuyoruz[1]. Bunun için de eclipse için svn'e ihtiyacımız var. Bunun için de eclipse eklentisi olan subversive'yi seçtim. Bunun için help->Install new software'ye giriyoruz. (Türkçesi sanırım yardım->yeni yazılım yükle) Aslında burada eclipse'in asıl deposunun olmasını bekleriz ama yok. (en azından eskisinde yoktu) Son hallerinde de durum böyleyse bakıcısına bildireceğim. Yandan add'e tıklayıp address (adres) kısmına:
 http://download.eclipse.org/releases/helios
 yazıyoruz. Name (isim) kısmına Helios vs. yazabiliriz. Bunu yaptıktan sonra Ok diyoruz. Orada  --All available sites-- (Türkçesi bütün mümkün siteler olabilir) i seçtiğimizde (üstteki work with yazan yerin yanındaki combobox'dan (açılır kutu)) bir güncelleme yapacak. (depodaki yüklenebilir paket vs.leri getiriyor ve bu işlem biraz uzun sürebilir). Arama kısmına "svn" yazıyoruz. Altta liste şeklinde çıkan seçeneklerden "Subversive SVN Team Provider (Incubation))" ya da buna en yakın olanını (subversive, svn team provider gibi şeyler olsun) seçin. Gerekli lisansı kabul etmenizi istedikten sonra indirip kuruyor. Kurulum tamamlandıktan sonra yeniden başlatmanızı isteyecek, yeniden başlattıktan sonra da ya başlarken ya da svn'den yeni proje çekmek istediğinizde svn connector kurmanızı isteyecek. SVNKit 1.3.2 yi tavsiye ederim. Eğer bunu seçtiğinizde kurulmuyorsa (ki bende böyle oldu) ve hata oluştu gibi bir hata veriyorsa endişelenmeyin. Yine help->install new software'ye girin. Add butonuna basın isim kısmına "svn connector" vb. isimler yazabilirsiniz. Adres kısmına da aşağıdaki adresi yazın:
 http://community.polarion.com/projects/subversive/download/eclipse/2.0/helios-site/
 Aslında bu siteyi eklemeden önce "Available Software Sites" e tıklayıp oradan 
 Update Site http://community.polarion.com/projects/subversive/download/eclipse/2.0/update-site/  Enabled
 yazan satırdaki işareti kaldırmamız iyi olur. Çünkü SVN connectorları buradan kurmaya çalışıyor. Bu da sorun yaratıyor.
 Sonra daha önceden --All available sites-- seçtiğimiz yeri açıp oradan yeni eklediğimiz ismi ve adresi bulup onu seçiyoruz. Arama bölümüne yine "svn" yazıyoruz. Buradan SVNKit 1.3.2'yi bulup işaretleyin. (zaten 1.3.3 mevcut ama onda bir sorun var, yüklenemiyor bu yüzden yukarıdaki siteyi seçiyoruz) Sonra yine lisansı kabul ettikten sonra indirip kuracaktır. Bu işlem bitince eclipse'yi yeniden başlatmanızı isteyecektir. Yeniden başlattıktan sonra "svn" çalışıyor olmalı. SVN'den yeni bir proje çekmek için yeni proje dedikten sonra listeden  SVN->Project from SVN e tıklayın. adresi girdikten sonra gerekli işlemleri halledin (hangi revizyon olacağı, ne isimde çekileceği vs.) ve bu kadar. Eğer doğru çekebildiyseniz sorun yok demektir. SVN başarı ile kurulmuştur. 
 Commit, update vb. işlemler için projeye sağ tıklayın, team kısmına gidin, her şey orada :).
 Eğer güncelleme sırasında (update) 'Refreshing external folders' has encountered a problem yazıyor ve detaylarda da Null Pointer Exception yazıyorsa bundan endişelenmeyin ve OK diyin. Böyle bir sorun var ama sanırım ilerideki sürümlerde düzelir umarım.
 [1] http://liste.pardus.org.tr/gelistirici/2011-January/027309.html