Geçtiğimiz yıl Lapis ekibiyle beraber e-Lapis dergisini tekrar çıkarma kararı almıştık. Sonraları iptal edilen proje dahilinde yazdığım 3~5 satır yazı boşa gitmesin istedim. Konu başlığım Gentoo Linux, Portage ve Araçları şeklinde idi. Yazıyı tamamlamadım fakat olan kısmı da işe yarar sanırım. Birilerinin ilgisini çeksin yeter. Bu arada yazı geçen sene yazıldığı için bir takım değişiklikler söz konusu olmuş olabilir. Kontrol etmedim. 2. ya da 3. bölümü gelir mi onu da şu anda kestirmek zor
Gentoo Linux:
Gentoo Linux; alışılmışın dışına çıkan ve hız sınırlarını zorlayan bir dağıtım. Elbette getirdiği bir çok yeniliğin bunda katkısı azımsanmayacak derecede. Gelişmiş paket sistemi Portage sayesinde yüzlerce Linux Dağıtımı arasından sıyrılıp kendine özel bir yer edinmiş bir dağıtım Gentoo. Her ne kadar (binary) ikili paket kullanma imkanı sunsa da, bu yöntem gerek yeni kullanıcılar gerekse de uzman kullanıcılar tarafından pek tercih edilmez. Gentoo Linux’un gücü, kodun işlemciye göre optimize edilebilmesinden gelir. Bu yüzden ikili paket kullanmak yerine programların kaynak koddan derlenmesi kullanıcılar tarafından tercih edilir. Portage; optimizasyon işlemini de, kullanıcı tarafından ayarlanacak birkaç parametre ile kolayca halledebilmektedir. Paket sisteminin kullanışlılığı ile kullanıcıları kendine bağlayan Gentoo’yu ve gelişmiş paket yönetim sistemi Portage’ı daha yakından tanıyalım.
Portage ve Özellikleri:
Portage, Gentoo Linux’un kalbidir. Tüm yazılım yönetim işlemini tek başına yürütür. Kurulacak yazılımların bağımlılıkları Portage tarafından kontrol edilir. Bulunan bağımlılıklar çözümlenir ve istenen yazılım bağımlılıklarla beraber indirilir, açılır, ön tanımlı optimizasyonlara göre derlenir, çalıştırılabilir dosyalar ve kütüphaneler sistemde gerekli yerlere gönderilir ve kullanıcıya çalışan bir yazılım sunulur. Portage ağacı hal-i hazırda 11000′in üzerine yazılım sunmaktadır. Bu yazılımlar ebuild tanımlama dosyaları ile sunulmakta ve kaynak kodlar dünya üzerinde yüzlerce sunucuda barındırılmaktadır. (Örneğin ülkemizde Ankara Üniversitesi Sunucuları). Portage ağacına ek olarak yerel makine üzerinde ya da internette ayrı sunucular üzerindeki Portage ağaçları da dahil edilerek çok daha fazla pakete ulaşmak mümkündür.
Portage Avantajları/Dezavantajları:
Portage için “paket yönetim sistemleri arasında en gelişmiş olanı” demek sanırım yanlış olmaz. Bu tanımlamayı haketmesini sağlayan en büyük özelliklerinden biri de USE Flag’ler. Elle derleme işlemi sırasında –with , –enable , –without gibi parametrelerle belirlenen ve belli bir standardı olmadığı ya da INSTALL dosyalarında gerekli açıklama bulunmadığı için kullanılması zorlaşan özellikler, USE Flag’ler ile birer çocuk oyuncağı haline gelmiştir. Portage’ın hayati önem taşıyan yapılandırma dosyası make.conf içinde tüm sistem için genel-geçer USE Flag ayarlaması yapılabileceği gibi, package.use içerisinde pakete özel tanımlama da yapılabilir. Sanırım güzellikleri saymakla bitmeyecek
Bu yüzden en iyisi örnekler üzerinde görmek. Fakat önce dezavantaj kategorisine girebilecek bir maddeye de değinelim. Tahmin edebileceğiniz gibi kaynak koddan derlemenin uzun sürmesi en büyük sorun. Aslında sonuçta elde ettiğiniz stabil ve hızlı yazılımlar bu dezavantajı fazlasıyla tolere ediyor. Bir çeşit gül-diken meselesi. Gentoo’yu o kadar seviyoruz ki derleme süresi hiç de uzun gelmiyor artık. KDE, Gnome, Openoffice gibi çok büyük projelere ait paketlerin derlenmesi elbetteki uzun sürüyor fakat masaüstü kullanımına yönelik programların ortalama 5 dakikalık derleme süresi (download dahil) öyle çok göz korkutacak bir süre değil. Bir de işin içine deltup gibi araçlar girince download süresini %90′lar mertebesinde kısaltmak da mümkün oluyor. Bu durumda kalan süreyi varın siz düşünün.
Temel portage kullanımı:
Yazılımların ebuild denen dosyalar ile tanımlandığını söylemiştik. Bu dosyalar içerisinde yazılımın lisans tipi, kaynak kodun indirileceği URL, bağımlılıklar, kurulum sırasında izlenecek yol, kurulum sonrasında yapılacak ayarlar, derleme ve kurulum sırasında kullanıcıya gösterilecek bilgilendirme mesajları ve yazılımın kullanabileceği özelliklere ait USE Flag’ler gibi tanımlamalar mevcuttur. Yalnızca metin dosyası olduğu için ortalama boyutları birkaç yüz bayt civarındadır.
Örnek bir ebuild dosyası:
inherit kde
DESCRIPTION=”A quake-style terminal emulator based on KDE konsole technology” HOMEPAGE=”http://extragear.kde.org/apps/yakuake/” SRC_URI=”http://www.kde-apps.org/content/files/29153-${P}.tar.bz2″
LICENSE=”GPL-2″
SLOT=”0″ KEYWORDS=”amd64 ppc ppc64 x86″ IUSE=”"
DEPEND=”|| ( kde-base/konsole kde-base/kdebase )”
need-kde 3.3
Programların kurulumunda en güçlü Portage aracı olan Emerge kullanılır. Emerge parametrelerini örnekler üzerinde görelim.
emerge -s firefox
Portage veritabanında, isminde firefox geçen paketleri arar ve bir liste halinde sunar.
emerge -S firefox
Portage veritabanında, açıklamasında firefox geçen paketleri arar ve bir liste halinde sunar.
Portage veritabanında çok daha hızlı arama için kullanabileceğimiz eix aracını daha sonra işleyeceğiz.
emerge mozilla-firefox
Mozilla-firefox paketini tüm bağımlılıkları ile birlikte derler ve kurar.
emerge -a mozilla-firefox
Mozilla-firefox paketinin beraberinde kurulacak bağımlılıkların bir listesini verir ve derlemeye geçmek için onay bekler.
emerge -av mozilla-firefox
Mozilla-firefox paketinin beraberinde kurulacak bağımlılıkların ayrıntılı bir listesini verir. Bu listede yazılımların hangi USE Flag’lere sahip olduğu, hangilerinin aktif olduğu, hangilerinin olmadığı görülebilir.
emerge -p mozilla-firefox
Mozilla-firefox ve beraberinde kurulacak bağımlılıkların bir listesini verir. Kuruluma geçmez.
emerge -pv mozilla-firefox
Mozilla-firefox ve beraberinde kurulacak bağımlılıkların ayrıntılı (USE Flag içeren) bir listesini verir. Kuruluma geçmez.
emerge -sync
Portage veritabanını belirlenen yansıdan günceller. Portage bu sayede yeni çıkan ya da güncellenen yazılımlardan haberdar olur.
emerge -u mozilla-firefox
Mozilla-firefox paketini ve eğer varsa gerekli bağımlıkları üst sürüme günceller.
emerge -C mozilla-firefox
Mozilla-firefox paketini sistemden kaldırır.
emerge -auv system
Gentoo Base System paketlerinden güncelleme gerekenleri üst sürümlere yükseltir.
emerge -auv world
Sisteme kurulu tüm paketleri tarayarak yeni sürümü olanları günceller.
Son iki komut sayesinde sistem devamlı güncel tutulur. Kullanılan yazılımlar her zaman kararlı ve günceldir. Ayrıca programların internet sitelerini takip edip yenilerinin çıkıp çıkmadığına bakılmaksızın sistem güncellenebilir.
Tüm komutlarda -a parametresinin eklenmesi yapılacak işlemin son kez gözden geçirilmesine olanak sağladığından yararlı olacaktır.
Diğer birçok emerge parametresi için manual sayfasına bakılabilir.
man emerge
Bunun dışında resmi gentoo geliştiricileri tarafından oluşturulmamış fakat eksikliği hissedildiği için sonradan oluşturulan ebuild dosyalarının sisteme kurulumu için iki yol izlenebilir.
İlki, yerelde oluşturulmuş bulunan overlay dizininde ilgili kategori altında oluşturulmuş olan program klasörü içerisine koyulmuş olan ebuild dosyasının aşağıdaki biçimde kurulmasıdır.
cd /usr/local/portage-overlay/kategori
ebuild yeni_program.ebuild digest
emerge yeni_program
İkinci yöntem digest işlemini otomatik olarak gerçekleştirdiği için biraz daha pratik bir yoldur.
emerge -av -digest yeni_program
USE Flags:
Portage’ı Portage yapan en önemli özelliklerden birine geldi sıra. USE bayrakları! Ne işe yararlar, nasıl kullanılırlar, kullanım kolaylıkları nelerdir? Kısaca değinelim;
USE bayrakları programın kaynak koddan derlenmesi sırasında eklenip çıkarılabilecek özellikleri ayarlayan bir nev-i değişkendir. Değerinin pozitif olması ilgili özelliğin koda dahil edileceği ve programla birlikte kullanılabileceği anlamına gelir. Negatif değerde olması ise programın ilgili özellik olmadan derleneceğini belirtir. Negatif değer atanarak çıkarılan özellikler programın ikili (binary) ve kütüphane (library) dosyalarının boyutunun daha küçük olmasını, hafızaya yüklenme sürelerinin kısalmasını ve hafızada kapladığı alanın daha küçük olmasını sağlar.
USE bayrakları derleme işlemi sırasında kullanılarak sonuca etki ettiğinden sonradan etkinleştirilemezler. Değiştirilmek istenen bir özellik olduğunda kaynak kod istenen tüm özelliklerle beraber baştan derlenmelidir. Her ne kadar bir dezavantaj gibi görünse de sonuçta derlenen binary’nin hızı boyutuna doğrudan bağlı olduğundan oldukça yararlıdır.
USE bayraklarının kullanımı ile verilebilecek en güzel örnek İnternette birçok adreste görebileceğiniz nescafe örneğidir.
Şöyle ki ;
USE=”süt şeker -krema” emerge nescafe
Sanırım herhangi bir açıklamaya gerek bırakmayacak şekilde açık ve basit
Peki şu an elimizdeki teorik bilgiyi pratik bilgiye nasıl dönüştürebiliriz?
Nescafe için hangi USE bayraklarının tanımlı olduğunu bilmemiz ve buna göre komut vermemiz gereklidir. Yani nescafe için “süt” USE bayrağı tanımlı değilse bizim parametre olarak “süt” tanımlamamız nescafeyi sütlü yapmayacaktır. Bu durumda program için tanımlı USE bayraklarıyla beraber özelliklerini görebileceğimiz, önceki başlıkta bahsi geçen;
emerge -pv paket-adı
komutunu kullanmamız yeterlidir.
Gelişmiş Araçlar:
Buraya kadar anlatılan özellikler Portage’ın her normal kullanıcı tarafında bilinen, günlük hayatta kullanılan ve sevilen özellikleriydi. Artık biraz daha profesyonelleşme zamanı geldi. Portage’ı daha verimli ve hızlı nasıl kullanabileceğimizi aramaya başlayalım.
Öncelikli görevimiz Gentoo kullanıcılarının ve geliştiricilerinin en büyük yardımcılarından olan gelişmiş Gentoo Araçlarını edinmek olacak. Bu araçlar Portage’da toplu halde gentoolkit paketi içinde geliyor. Sistemimize kurmak için bildiğimiz üzere ;
emerge -av gentoolkit
komutunu veriyoruz. Derleme işlemi makinenin hızına bağlı olarak 3 saniye ile 1 dakika arasında değişiklik gösterebilir. Artık program yönetimi için elimizde paha biçilmez araçlarımız var. Gentoolkit paketi ile sistemimize kurulan araçlar şunlar;
equery , eclean , eread , euse , glsa-check , revdep-rebuild
Şimdi nasıl kullanabileceğimize değinelim.
Equery
Equery, epm’nin yerini alan çok güçlü bir araç.
equery –help
komutu ile gerekli parametreleri görülebilir. Detayları hep birlikte örneklerle beraber görelim.
Sistemde bulunan bir dosyanın hangi paket tarafından kurulduğunu bulmak istersek vereceğimiz komut ;
equery belongs /usr/bin/googleearth
[ Searching for file(s) /usr/bin/googleearth in *... ]
x11-misc/googleearth-4_beta (/usr/bin/googleearth)
Görüldüğü üzere “/usr/bin/googleearth” dosyası “x11-misc/googleearth-4_beta” paketi tarafından kurulmuş. Komuta -e parametresi verilerek aranan paket bulunduğunda aramanın kesilmesi ve diğer paketlerin taranmaması sağlanabilir.
Sisteme kurulan bir paketin yerleştirdiği dosyalara bütünlük kontrolü yapılmak istendiğinde vereceğimiz komut;
equery check amarok
[ Checking media-sound/amarok-1.4.3-r1 ]
* 696 out of 696 files good
“check” parametresi dosyaların bütünlük kontrolünü md5 kullanarak yapar. Dosyalar için md5 toplamları derleme sırasında oluşturulur ve saklanır. Bu sayede sistemde herhangi bir acil durumda (elektrik kesilmesi , bad sector oluşması) dosyaların hasar görüp görmediği öğrenilebilir. Yöntemin eksik yanı ise kurulumda oluşturulan md5 toplamlarının kurulum sonrasında değişikliğe uğrayan dosyaları dikkate alamamasıdır. Yani programla beraber kurulan bir yapılandırma dosyası üzerinde herhangi bir değişiklik yapıldığında md5 karşılaştırması doğru sonuç vermeyeceğinden dosya hatalı olarak bildirilecektir. Bu aşamada kontrol kullanıcıdadır. İyi bir Gentoo kullanıcısı ve sistem yöneticisi için herhangi bir sorun teşkil etmemektedir.
Sistemde kullanılmayan programlar bulundurmak pek istenilen bir durum değildir. Bu nedenle bu tür programları bularak sistemden kaldırmak performansımızı etkileyecektir. Peki bir programın kullanılıp kullanılmadığını nereden ve nasıl anlayabiliriz.
Sistemden kaldırmak istediğimiz programı bizzat kullanmıyor olabiliriz, fakat bu her zaman o programın gereksiz olduğu anlamına gelmez. Diğer programlar arasından biri veya birkaçı bu pakete bağımlı olabilir. Kaldırılması durumunda bahsi geçen diğer programların da çalışmasını etkileyecektir. Bu yüzden bir programı kaldırmadan önce ona bağımlı başka programlar olup olmadığını öğrenmek için ;
equery depends pygtk
[ Searching for packages depending on pygtk... ]
app-emulation/cedega-6.0.2 (>=dev-python/pygtk-2.6)
app-portage/porthole-0.5.0 (>=dev-python/pygtk-2.4.0)
dev-python/gnome-python-2.16.2 (>=dev-python/pygtk-2.10.3)
dev-python/gnome-python-extras-2.14.0-r1 (>=dev-python/pygtk-2.4)
dev-python/gst-python-0.10.5 (>=dev-python/pygtk-2.6.3)
dev-python/notify-python-0.1.1 (>=dev-python/pygtk-2.4.0)
dev-util/git-1.5.2.5 (gtk? >=dev-python/pygtk-2.8)
dev-util/glade-3.2.2 (!alpha & python? >=dev-python/pygtk-2.10.0)
gnome-base/gnome-menus-2.18.3-r1 (python? dev-python/pygtk)
gnome-extra/libgsf-1.14.3 (python? >=dev-python/pygtk-2.8)
media-gfx/gimp-2.2.17 (python? >=dev-python/pygtk-2)
net-dns/avahi-0.6.19-r2 (python & gtk? >=dev-python/pygtk-2)
net-p2p/deluge-0.5.7 (>=dev-python/pygtk-2)
x11-apps/ccsm-9999 (>=dev-python/pygtk-2.10)
x11-apps/fusion-icon-9999 (gtk? >=dev-python/pygtk-2.10)
x11-libs/vte-0.16.8 (python? >=dev-python/pygtk-2.4)
Buradan anlaşılabileceği gibi pygtk paketini kaldırmak listede verilen programların çalışmamasına neden olacaktır.
equery depends amarok
[ Searching for packages depending on amarok... ]
Şimdiki örnekte ise amarok paketine bağımlı hiçbir program listelenmedi. Eğer amarok kullanmadığımız bir program ise ( ki öyle olmamasını öneririm) sistemden kaldırmamız herhangi bir soruna yol açmayacaktır. (Müzik dinleyecek daha iyi bir program bulamamak dışında)
“depends” parametresi ile sorguladığımız pakete bağımlı diğer paketleri listelemiştik. Peki sorguladığımız paketin bağımlı olduğu paketleri nasıl listeleyebiliriz. Bunun için gerekli parametre ise “depgraph”
equery depgraph nano
[ Searching for packages matching nano... ]
* dependency graph for app-editors/nano-1.3.12-r1
`– app-editors/nano-1.3.12-r1 `– sys-libs/ncurses-5.5-r2 `– sys-libs/gpm-1.20.1-r5 [ gpm ] `– sys-devel/gettext-0.14.5 [ nls ] `– virtual/libiconv-0 (virtual/libiconv) `– sys-libs/slang-1.4.9-r2 [ !ncurses slang ]
[ app-editors/nano-1.3.12-r1 stats: packages (6), max depth (2) ]
Yanlarında köşeli parantez içinde USE bayrakları belirtilen bağımlıklar yalnızca o USE bayrağı kullanılarak derleme yapılacağında geçerli olacaktır. Bu örnek için geçerli tüm USE bayraklarının pasif yapıldığını var sayarsak nano için gerekli bağımlılık yalnızca ncurses olarak görülebilir. İlave olarak verilecek her USE bayrağı yanında bir de bağımlılık getirecektir. Yine örnek için konuşacak olursak ; ncurses, nano için bir doğrudan bağımlılıktır. Fakat gpm ncurses paketinin bağımlılığıdır ve nano’yu dolaylı olarak ilgilendirir. Bu yüzden gpm, nano için bir dolaylı bağımlıktır.
Daha önce “belongs” parametresi ile bir dosyanın hangi paket tarafından kurulduğunu bulabilmiştik. Şimdi ise bunun tam tersini yapalım ve bir paketin sisteme kurduğu dosyaları bulalım. Bunun için parametremiz “files”
equery files netscape-flash
[ Searching for packages matching netscape-flash... ]
* Contents of net-www/netscape-flash-9.0.48.0-r1:
/opt
/opt/netscape
/opt/netscape/plugins
/opt/netscape/plugins/libflashplayer.so
/usr
/usr/lib
/usr/lib/nsbrowser
/usr/lib/nsbrowser/plugins
/usr/lib/nsbrowser/plugins/libflashplayer.so -> /opt/netscape/plugins/libflashplayer.so
/usr/share
/usr/share/doc
/usr/share/doc/netscape-flash-9.0.48.0-r1
/usr/share/doc/netscape-flash-9.0.48.0-r1/README.bz2
/usr/share/doc/netscape-flash-9.0.48.0-r1/readme.txt.bz2
Daha önce bir paketin hangi USE bayraklarını desteklediğini ve hangilerinin aktif olduğunu
emerge -pv paket_adi
komutuyla görebileceğimize değinmiştik. Yine tersten gidecek olursak bir USE bayrağını destekleyen paketleri bulmak istersek bu kez parametremiz “hasuse”
equery hasuse nsplugin
[ Searching for USE flag nsplugin in all categories among: ]
* installed packages
[I--] [ ] app-text/djvu-3.5.19 (0)
[I--] [ -] app-text/acroread-7.0.9-r1 (0)
[I--] [ ] dev-java/sun-jdk-1.4.2.16 (1.4)
[I--] [ ] dev-java/sun-jdk-1.5.0.13 (1.5)
[I--] [ ~] dev-java/sun-jdk-1.6.0.03 (1.6)
[I--] [ -] media-video/realplayer-10.0.9 (0)
Yeri gelmişken listelenen paketlerin isimlerinden önce gelen köşeli parantezlerin anlamından da bahsedelim.
I , Paket kurulu
P , Portage
O , Overlay
~ , Tanımlı bir anahtar kelime (keyword) ile kurulu
- , Tanımlı bir mimari (arch) için kurulu
M , Paket maskelenmiş
Listedeki paketlerin sonunda parantez içerisinde verilen sayılar ise Portage’ın bir başka güzel özelliğinden haberdar olmamızı sağlıyor. Bu sayılar; söz konusu paketin hangi slot’unun kurulu olduğunu gösteriyor.
Equery ile Portage veritabanında arama yapmak için gerekli olan parametremiz “list”
equery list gtk+
[ Searching for package 'gtk+' in all categories among: ]
* installed packages
[I--] [ ] x11-libs/gtk+-1.2.10-r12 (1)
[I--] [ ] x11-libs/gtk+-2.12.1-r2 (2)
[I--] [ ] x11-libs/gtk+extra-2.1.1 (0)
Bu örnek üzerinden giderek slot yapısına biraz daha detaylı değinelim. Slot; bir programın birden fazla sürümünün aynı anda sisteme kurularak etkin bir biçimde kullanılabilmesini sağlar. Örneğe bakacak olursak, gtk+ kütüphanesinin hem 1.x hem de 2.x sürümlerinin aynı anda sisteme kurulu olduklarını görebiliriz. Mantıken 1.x sürümü kurulu olduğu sırada
emerge -ua gtk+
komutu ile gtk+ paketini güncellemek istediğimde sürümün 2.x’e yükseltilmesi gerekliydi. İşte slot burada devreye giriyor. Dikkat edilirse listedeki paketlerin sonlarında parantez içinde verilen slot numaraları farklı. Bu da bizim; aynı programın farklı slotlardan farklı sürümlerini aynı anda sistemimizde bulundurabileceğimiz anlamını taşıyor. Kurulu sürümlerden biri güncellendiğinde kendi slotundaki en üst sürüme güncellenir ve diğer slottaki sürüm bundan etkilenmez. Bu özellik sistemle ilgili hayati önem taşıyan uygulamalarda daha da öne çıkmaktadır. Örneğin bir program geliştirici için yazdığı kodun farklı derleyicilerde vereceği tepki ve performansı bilmek önemlidir. Bu yüzden dünya üzerinde en çok kullanılan C/C++ derleyicisi ve aynı zamanda Gentoo’nun bel kemiği sayılabilecek gcc’nin farklı sürümlerinin sistemde aynı anda kurulu ve etkin olması istenebilir. Böylelikle programcı, yazdığı kodu derleyicinin farklı sürümlerinde test etme imkanına kavuşur. Masaüstü kullanıcı açısından bakarsak, slot’un getirdiği faydalardan biri de geriye tam uyumluluk olarak gösterilebilir. Son örneğe tekrar bakarsak gtk+’ın 1.x ve 2.x sürümlerinin sistemde kurulu olduğunu ve bu kütüphanenin eski (1.x) sürümüne bağımlı programların da sistemimizde sorunsuz bir şekilde çalışacağını görebiliriz.
“list” parametresini biraz daha detaylandıralım. Örnekte görüldüğü gibi bu parametre ile yalnızca sistemde kurulu paketler listelendi. Kurulu olmayan fakat veritabanında mevcut paketleri görebilmek için bazı ek parametreler tanımlamalıyız. Bunlar, önceden bahsettiğimiz p (Portage) ve o (Overlay) parametreleri.
equery list -p mozilla-firefox
[ Searching for package 'mozilla-firefox' in all categories among: ]
* installed packages
[I--] [ -] www-client/mozilla-firefox-bin-2.0.0.9 (0)
* Portage tree (/usr/portage)
[-P-] [M ] www-client/mozilla-firefox-2.0.0.2 (0)
[-P-] [M ] www-client/mozilla-firefox-2.0.0.6 (0)
[-P-] [M ] www-client/mozilla-firefox-2.0.0.9 (0)
[-P-] [M~] www-client/mozilla-firefox-bin-3.0_beta1 (0)
-p parametresi ile Portage veritabanında bulunan mozilla-firefox sürümleri listelenmiş oldu. Köşeli parantezlere bakacak olursak, [-P-] şeklinde bir çıktı görüyoruz. Bu sürümün kurulu olmadığını fakat Portage veritabanında bulunduğunu gösterir. [M~] ise paketin maskelenmiş olduğunu ve normal yollarla kurulamayacağını gösterir. Bir paketin maskelenmesi, sistem açısından kararsız olduğunu gösterir ve Gentoo geliştiricileri tarafından belirlenir. Bu yüzden maskenin kaldırılmaması tavsiye edilir. Fakat yine de maskelenmiş bir paket kurulmak isteniyorsa bu durumda izlenecek yol yazının ilerleyen kısımlarında anlatılacaktır. Dikkati çeken bir diğer nokta da satır sonlarındaki parantezler. Tamamının (0) olması, listedeki tüm sürümlerin aynı slotta olduğunu ve birinin sisteme kurulmasının diğerini otomatikman kaldıracağını gösterir.
-p parametresine ek olarak verilebilecek diğer parametre ise -o parametresi. Portage, Resmi Gentoo Portage veritabanından farklı olarak kendi isteğimize göre oluşturabileceğimiz bir dizini de ebuild deposu olarak tanımlayabilir. Bunun için make.conf dosyası içine
PORTDIR_OVERLAY=”/usr/local/portage”
şeklinde isteğe bağlı bir dizin tanımlanarak Portage’ın bu dizini de depo olarak kullanması sağlanabilir. “list” parametresi ile arama yapıldığında overlay dizinindeki programlar görüntülenmez. Bu yüzden diğer parametre olan -o parametresi kullanılır.
equery list -o -p lastfmsubmitd
[ Searching for package 'lastfmsubmitd' in all categories among: ]
* installed packages
* Portage tree (/usr/portage)
* overlay tree (/usr/portage/local/layman/gentopia /usr/portage/local/layman/zugaina /usr/portage/local/layman/vmware /usr/portage/local/layman/xeffects /usr/portage/local/layman/sunrise /usr/portage/local/layman/webapps-experimental /usr/portage/local/layman/pro-audio /usr/portage/local/layman/gnome-experimental /usr/portage/local/layman/berkano /usr/portage/local/layman/science /usr/portage/local/layman/lapis /usr/portage/local/layman/voip /usr/portage/local/layman/catalystframework /usr/local/portage)
[--O] [ ] media-sound/lastfmsubmitd-0.30 (0)
Kurulu paketin sistemde ne kadar yer işgal ettiğini bilmek istersek sıradan yöntemlerle sonuca ulaşmamız pek de olası değildir. Çünkü programın pek çok farklı dosyası sistemde farklı dizinler altında bulunur ve hangi dosyaların istenen paketle birlikte kurulduğunun bulunması ve ayrı ayrı toplanması çok zahmetli bir işlem olacaktır. Neyse ki equery aracılığı ile bu bilgiyi de edinebiliriz. Bunun için “size” parametresini kullanmalıyız.
equery size mozilla-firefox
[ Searching for packages matching mozilla-firefox... ]
* size of www-client/mozilla-firefox-bin-2.0.0.9
Total files : 242
Total size : 25230.16 KiB
Daha önce bir paketin hangi USE bayraklarını desteklediğinin ya da bir USE bayrağını hangi paketlerin kullanabildiğinin nasıl bulunabileceğini gördük. Peki sistemde hal-i hazırda kurulu bir paketin hangi USE bayrakları kullanılarak derlendiğini nasıl bulabiliriz. Yeni parametremizin adı “uses”
equery uses nero
[ Searching for packages matching nero... ]
[ Colour Code : set unset ]
[ Legend : Left column (U) - USE flags from make.conf ]
[ : Right column (I) - USE flags packages was installed with ]
[ Found these USE variables for app-cdr/nero-2.1.0.3 ]
U I
+ + mp3 : Add support for reading mp3 files
+ + ogg : Adds support for the Ogg container format (commonly used by Vorbis, Theora and flac)
- – shorten : Adds support for the shorten audio compressor
+ + sox : Adds support for Sound eXchange (SoX)
+ + vorbis : Adds support for the OggVorbis audio codec
Çıktıdan elde edebileceğimiz veriler iki sütunda toplanmış durumdadır. Bunlar U ve I sütunları. U sütunu make.conf dosyasında belirtilen USE bayrağı ayarını belirtir. + ise o USE bayrağı make.conf dosyasında aktif olarak atanmış demektir. İkinci sütun olan I sütunu ise programın sistemde kurulu sürümünün hangi USE bayrakları etkin olarak derlendiğini gösterir. U ve I sütunları arasında farklılık varsa, paketin derlenmesinden sonra make.conf’da değişiklik yapıldığını ya da paketin derlenmesi sırasında geçici olarak USE bayrağı tanımlandığını gösterir. Paket kurulumu sırasında emerge komutundan önce USE=”bayrak” şeklinde USE bayrağı tanımlanabilir. Fakat bu yöntem etkin bir kullanım biçimi değildir. Çünkü sistem güncellenmesi sırasında make.conf’da yapılan ayarlar geçerli olacaktır. Bu durumda derleme sırasında elle yapıla değişiklik etkinliğini kaybedecek ve genel sistem ayarları geçerli olacaktır. USE bayrağı sistem genelinde değil de pakete özel tanımlanmak istenirse /etc/portage/package.use dosyasında tanımlanabilir. Bu yöntem sistemin kararlılığı ve program yönetimi açısından daha sağlıklıdır.
Equery ile ilgili inceleyeceğimiz son parametre “which” parametresi. Which , paketin kurulması sırasında kullanılan ebuild dosyasını gösterir.
equery which amarok
/usr/portage/media-sound/amarok/amarok-1.4.7-r2.ebuild
Böylelikle gentoolkit araçlarından en kapsamlı ve yararlı olanını incelemiş olduk. Equery aracı ile paketler üzerinde tam kontrol sahibi olabilirsiniz.


Wikide var mıdır bu?
Oraya da isterük
bi kullanamadık gitti şu gentoo denilen şeyi…
özeniyorum walla
Bundan 3 ay önce bu yazuyı okuyup gaza geldim ve Gentoo kurdum(binbir zahmetle) Çok memnunum. Bazen amelelik yaptığımı düşünsemde mutluyum
kde-3.5 kullanıyorum yakında kde4′e geçmek istiyorum ama kurulum uzun sürüyor biraz
Gerçekten yararlı bir yazı olmuş.Teşekkürler.Fakat size bir sorum olacak gentoo’yu gnome ile birlikte ,sorunsuz bir şekilde kurulabilmesi için gerekli USE flaglar nelerdir?
Tamamen kendi ihtiyaclariniza gore belirlenebilecek birsey. USE flagler, bana gore gentoo kullanmaya basladiktan sonra yavas yavas sekillenmeye basliyor. Once donanimsal ihtiyaclar ve temel bazi ozelliklerle baslanip, zaman icinde istenenler eklenebilir. Bu yuzden gnome kullanmak icin su use flagler kullanilmalidir denemez. Tabii ki en basitinden gtk, gnome gibi flagler kullanilmalidir fakat ozellestirilmek istendiginde cok farkli cozumler cikacaktir.
Size bir sorum daha olacak:
Sistemde emerge yüklenen fakat artık hiçbir bağımlılığı olmayan,sistemde boşyere yer işgal eden yazılımları nasıl tarayıp kaldırabiliriz?
Mesela debianda kullanılabilen “deporphan” gibi.
emerge –depclean kullanilabilir orphaned dependency takibi icin. Fakat biraz dikkatli kullanmak lazim, cunku bagimliliklar dinamik olarak degisiyor. Bu yuzden depclean kullandiktan sonra revdep-rebuild kullanarak bir cesit saglama yapmak en sagliklisi.