[Gelistirici] Bulunamayan komutlar..

Ozan Çağlayan ozancag at gmail.com
4 Mar 2008 Sal 22:53:45 EET


Merhabalar.

Bazı dağıtımlar komut satırından girilen komut bulunamadığı takdirde, 
komutun mevcut olduğu paketin sistemde yüklü olmadığını ve istenildiği 
takdirde "hede hodo" komutuyla yüklenebileceğini bildiriyorlar.

Bunu Ubuntu Gutsy'de bash prompt'u modifiye edip, önceki komutun dönüş 
değerine bakıp eğer komut bulunamadığında döndürülen 127'ye eşitse, 
prompt'u basmadan önce bu bilgiyi sistemdeki bir db'den elde edip ekrana 
basıyor.

Ubuntu Hardy ve Debian ise, aynı işi, bash'i çok şık bir şekilde 
yamalayıp, komut bulunmadığında bash'in göstereceği davranışı 
command_not_found_handle() isimli bir fonksiyonu /etc/bashrc'e ekleyerek 
değiştiriyorlar.

Buildfarm'da çalıştırdığım bir betik ile, halihazırda stable'da bulunan 
1877~ adet pakette executable olarak işaretlenmiş dosyaları bir 
dictionary içine atıp, cPickle ile serialize ettim. Bu dosyanın 
bz2'lenmiş hali 160kb~ civarı.

Örnek:
ozan at cyclope ~ $ qemu-kvm
The program 'kvm' is not installed on your system. You can install it by 
typing:
sudo pisi it kvm
bash: qemu-kvm: command not found
ozan at cyclope ~ $     

Sistemi denemek ve akabinde görüş/fikir bildirmek için aşağıdaki 
adımları -dosya izinlerine dikkat ederek- uygulayabilirsiniz :
1. http://cekirdek.pardus.org.tr/~ozan/command-not-found dosyasını 
/usr/bin altına kopyalayın,
2. http://cekirdek.pardus.org.tr/~ozan/binary.db.bz2 dosyasını bunzip2 
ile /etc/pisi altına açın,
3. sudo pisi it 
http://cekirdek.pardus.org.tr/~ozan/dist/bash-3.2-16-1.pisi ile yamalı 
bash'i kurun.

(3. adımda dikkat edin yeni bashrc dosyası /etc/bashrc altına 
bashrc.newconfig olarak gelebilir.)

bundan sonra zor kullanmak serbest :)

Sorular:
0. Bu işlevselliğin getirisi/götürüsü nedir?
1. Bu işlevsellik pisi içinde mi olmalı yoksa db dosyası arada sırada 
elle bump edilecek sıradan bir paket mi olmalı?

İlginize teşekkürler :)

-- 
Ozan ÇAĞLAYAN
http://cekirdek.pardus.org.tr/~ozan
<ozan_at_pardus.org.tr>




Gelistirici mesaj listesiyle ilgili daha fazla bilgi