Hakkında Künye

emerge ve qpkg ile Gentoo'da Paket Yönetimi

Emerge Gentoo Linux’ta çok kuvvetli bir komuttur, bunun için nasıl kullanacağımızı bilmemiz önemli. Genel olarak bir programı kurmak için (gereken bağımlılıklarla beraber) şunu komutu kullanabilirsiniz:

emerge <program ismi>

ve işi sizin için görsün. Ancak bu temel kullanımın ötesinde daha fazlası var, şimdi bazı özel durum ve programın bazı güzel yönlerine bakalım.

Özel emerge Kullanımı

Bilgi Alma

Ortada hiç bir şey kurmayan bir başka özel emerege komutu daha var. Bu bilgi toplamak veya programları kurarken kullanacağı ayarları belirlemek için kullanışlıdır:

emerge info

Emerge Komut Satır Argumanları

Emerge bir çok komut-satırı özelliğine sahiptir. Bir kaç tanesine bakalım.

emerge sync’ten sonra, şunu yapmalısınız:

emerge -Dup world
These are the packages that I would merge, in order: Calculating world dependencies …done!
[ebuild NS ] sys-kernel/gentoo-dev-sources-2.6.9-r6
[ebuild U ] gnome-base/gnome-mime-data-2.4.2 [2.4.1]
[ebuild U ] gnome-base/gconf-2.8.1 [2.8.0.1]
[ebuild U ] x11-themes/gnome-themes-2.8.1 [2.8.0]
[ebuild U ] media-libs/nas-1.7-r1 [1.7]
[ebuild U ] dev-libs/nspr-4.4.1-r2 [4.4.1-r1]
[ebuild U ] dev-libs/nss-3.9.2-r2 [3.9.2-r1]
[ebuild U ] mail-client/mutt-1.5.6-r5 [1.5.6-r4]

Burada emerge’ü 3 komut-satır seçeneğiyle kullandık: D, u ve p . Bunları hangi sıraya göre kullanacağımı önemli değil. (Örneğin: Dup, uDp, puD vb.)

D bağımlılık ağacını derinlemesine kontrol et demektir. Bu şu anlama gelir, emerge sadece ilk seviye uygulama/kütüphane bağımlılıklarını değil, tüm seviyeleri kontrol edecektir. Eğer herhangi bir uygulama veya kütüphane yenilendiyse, yapacağımız şey uygulanabilir.Bu seçenek emerge’e herhangi bir şey uygulamasını söylemez, yapılacak uygulamaya yeterlilik sağlar.

u (update) yenile anlamına gelir. Böylece programlar yeniden kurulmaz, yenilenmesi gerekenler yenilenir.

p (pretend) yaparmış gibi anlamına gelir. Bu yüzden emerge, bir merege edilecekler listesi çıkartır. Size sisteminizde yenilecek uygulamaları söyler ancak gerçekte yenileme yapmaz. Eğer bu komutu p olmadan kullanırsanız, bu durumda gerçekten kurulum işlemine geçer.

emerge -Dupv world
These are the packages that I would merge, in order: Calculating world dependencies …done!
[ebuild NS ] sys-kernel/gentoo-dev-sources-2.6.9-r6 -build -doc (-ultra1) 35000 kB
[ebuild U ] gnome-base/gnome-mime-data-2.4.2 [2.4.1] -debug 0 kB
[ebuild U ] gnome-base/gconf-2.8.1 [2.8.0.1] -debug -doc 0 kB
[ebuild U ] x11-themes/gnome-themes-2.8.1 [2.8.0] -accessibility -debug 0 kB
[ebuild U ] media-libs/nas-1.7-r1 [1.7] -static 0 kB
[ebuild U ] dev-libs/nspr-4.4.1-r2 [4.4.1-r1] 0 kB
[ebuild U ] dev-libs/nss-3.9.2-r2 [3.9.2-r1] 0 kB
[ebuild U ] mail-client/mutt-1.5.6-r5 [1.5.6-r4] -cjk +crypt -debug -imap -mbox +nls -nntp +slang +ssl -vanilla 0 kB

Burada komuta ayrıntılı çıktı için v seçeneğini ekledik. Bu çok kullanışlıdır çünkü her programın kullandığı USE flag’lerini ve onları nasıl ayarladığınızı gösterir. Örneğin , mutt’u IMAP desteği ile derlemek için make.conf dosyanızı USE flag’ine IMAP‘i eklemek için düzenleyin.

Şimdi emerge çıktısının ne söylediğine bakalım.

[ebuild NS ] sys-kernel/gentoo-dev-sources-2.6.9-r6 -build -doc (-ultra1) 0 kB

Köşeli parantezler arasındaki verilen bilgi bize iki önemli şey söylüyor: N yeni bir kurulum ve S farklı bir Slot’da olduğu. Bundan sonra verilen ise, kategori bilgisi sys-kernel , özel paket adı gentoo-dev-sources ve yeni olan sürüm ismidir 2.6.9-r6 . Bir sonraki USE flag’larıdır, bunları,-build, -doc, (-ultra1) , ben kendim ayarlamadım. 35000 kB ise internetten kurulum için indireceğimiz paket boyutunu söylüyor. S aynı zamanda paketin kurulmuş olan önceki sürümlerinin kaldırılmayacağını da belirtmekte.

[ebuild U ] dev-libs/nspr-4.4.1-r2 [4.4.1-r1] 0 kB

Burdaki bilgiyi de diğeri gibi anlayabiliriz. Buradaki fark , bu bir yenilenmiş pakettir, U . Bu şu anlama gelir, ben zaten dev-libs/nspr paketini kurmuşum fakat yeni bir sürüm edinmek için hazır. Aslında ikinci köşeli parantezdeki bilgi bize halihazırda 4.4.1-r1 sürümüne sahip olduğumu söylüyor fakat 4.4.1-r2 sürümü mevcut. Burada bu ebuild’i etkilyecek bir USE flag olmadığına dikkat edin. Ayrıca, 0 kB bu paketi yenilemek için bir indirme yapmam gerekmediğini söylüyor.

[ebuild UD] net-misc/openssh-4.1_p1-r1 [4.2_p1]

Yukardakilerde göremediğimiz sonucu burada bir paket eskiltmek (dikkat eksiltmek değil!) ihtiyacı olarak görüyoruz, yani bir önceki sürüme dönme. Bu birden fazla sebepten ötürü olabilir. Örneğin paket güvenlik veya kararlılık nedenleriyle sizin package.mask dosyanızda olabilir ya da kararlı olmayan bir sürümü kurmak için komut-satırından ACCEPT_KEYWORDS kullanılmıştır ve package.keywords dosyasına eklenmemiştir.

Emerge ve .ebuild dosyaları

Daha önceden herhangi bir yerden (Gentoo forumları, IRC‘ten birinden,bağlı olarak) indirmiş olduğunuz bir .ebuild dosyanız olabilir, şu komutu uygulayın:

emerge dosya_ismi_her_neyse.ebuild

böylece o anki dizindeki .ebuild dosyasını okur (veya siz bunun için /sizin/kullanacağınız/dizin/ismi/path.ebuild gibi bir yol kullanıyorsanız, buradan) ve siz devam eder kurulumu yaparsınız.

Ancak bu günlerde bu özellik değer kaybetmiştir ve yakın bir zamanda emerge kodunun dışına çıkmak için bir yol bulacaktır. Bu sadece tarihsel bir bilgiydi. =)

Emerge Kurulum İşlemi

Emerge kurulum işlemi diğer herhangi bir dağıtımda olduğu gibidir ancak buradaki fark, o size göre bir çok zor şeyi kendiliğinden yapar.

 1. Bağımlılıkları kontrol et
 2. Gereken bağımlılıkları kur
 3. Kaynak kodu indir
 4. Kaynak kodu aç
 5. Paketi ayarla
 6. Paketi derle
 7. Paketi test et (gerekli veya istenmişse)
 8. Paketi kur
 9. Kurulum dizinini temizle (genellikle kaldırır) 

Eğer programları elle kursaydınız, genellikle paketi indirmekle başlayacaktınız. Daha sonra README ve/veya INSTALL dosyasını okuyacaktınız. Bağımlılıkları ve gereken komutları belirledikten sonra paketi kuracaktınız.

Genellikle 1. ve 2. adımlar insanların en çok nefret ettikleri adımlardır. Çünkü bir bağımlılığı kurmaya kalktığınızda, ya başka diğer bağımlılıklar da varsa? Bağımlılık ağacı hızla büyüyebilir. Bu yüzden Gentoo’nun bağımlılık çözme olayı bu kadar güzel.

Genellikle ayarlama işlemi ./configure komutu ile olur. Bazı özel paket yüklemelerinde bu biraz bezdirici olur.

Ayarlama yaptıktan sonra, genellikle make komutunu verirsiniz. Bazen bu linux make eder, bazen başka şeyler. Gentoo’nun bunu sizin yerinize bilmesi güzel bir şey.

Bundan sonra genellikle make install gelir. Belki de bazı başka komutları da kullanmalısınız. Tekraren bu sizin probleminiz değil, Gentoo bunu sizin için çözer.

Son olarak genelde cd ..; rm -rf kaynak_dizini gibi bir komut kullanırsınız. Ancak yine buna ihtiyacınız olmaz.

Emerge sadece root ile kullanılacak bir program değildir!!! Bunu bilmeniz önemlidir. Kurma, kaldırma, sync gibi işler için sadece root haklarına ihtiyacınız var. Nelerin kurulu olduğuna bakma, ayarlar ve bunun gibi komutlar normal kullanıcı ile de yapılabilir. Ancak, portage önbelleği (cache)' deki gibi izin hatalarından kurtulmak için kullanıcının portag grubunda olması gerekir (eğer kullanıcı bu grupta değilse bir uyarı verecektir). * emerge aracı komut satırından çalışan Portage sistemi için tam ve eksiz bir araçtır. Temel olarak paketlerin kurulumu için kullanılır ve emerge kurmak istediğiniz paketle ilgili tüm bağımlılıkları otomatik olarak halledebilir. (Yani bir paket kuracaksanız bu paketin ihtiyaç duyduğu diğer tüm paketleri bulur) ############ Emerge, Python dilinde geliştirilmiştir ve /usr/portage dizininde bulunan .ebuild uzantılı dosyaları kullanır. ebuild dosyaları /etc/make.conf içinde belirttiğimiz değişkenlere göre kaynak kodun nasıl kurulacağını belirler.

Bir paketi kurmak için

emerge paketadı

Eğer bir paket başka paketleri içerir veya diğer paketlere bağımlı ise bu paketler de otomatik olarak kurulacaktır:

emerge kde

komutu KDE’nin tümünü ve KDE’nin ihtiyaç duyduğu tüm paketleri kuracaktır.

Bir paketi kurmak ve o paketin tüm bağımlılıklarını (ihtiyaç duyduğu tüm paketleri) güncellemek için:

emerge -u paketadı

Bir paketi kaldırmak için:

emerge -C paket adı

Uzun uzun yazmak esterseniz isterseniz emerge unmerge paketadı şeklinde de kullanabilirsiniz.

Kurmak için yeni yazılımlar aramak

Paketleri ara (paket ismine göre):

emerge -s anahtarkelime

Paketleri ara (açıklama bilgilerine göre):

emerge -S keyword

Mevcut portage şemanızı halihazırda mevcut bulunan en son portage şemasına eşitlemek için:

emerge sync

ot : Portage şeması kurulu yazılımları bir ağaç şeklinde listeler halinde sıralayan bir dizin yapısıdır.

Diğer Kullanışlı Özellikler

Kurarmış Gibi Yapmak

Bir paketi tamamen kurmak yerine –pretend seçeneği ile eğer –pretend seçeneği kullanmasaydık hangi paketlerin kurulucak olduğunu görebiliriz. Kısacası –pretend seçeneği ile kurma işleminin bir nevi provasını yapmış oluyoruz ;-)

emerge -p paket adı

Sadece Kaynak Kodlarını İndirmek

Paketleri sadece internette indirmek (–fetchonly), yani arşivlemek (bağımlılıklarıda indirilir), fakat derlemek istemiyorsanız, aşağıdaki komutu kullanabilirsiniz:

emerge -f package

İndirilen paketler /usr/portage/distfiles dizini altında tutulur. Derleme işlemi hatasız bir şekilde bittikten sonra, bu dizin içindeki dosyaları silmenizde bir sakınca yoktur. Aksi takdirde fazladan yer tutarlar.

Sisteminizde kurulu bütün dosyaları güncellemek için, ilk önce indirmek istiyorsanız, aşağıda komutu kullanabilirsiniz:

emerge -efD world

Bütün sistemi güncellemek

Sisteminiz en güncel hale getirmek ve en güncel paketleri kullanmak/kurmak istiyorsanız, -uD (–update –deep) parametresi ile bunu yapabilirsiniz:

emerge -uD world

Bu işlem esnasında, eğer bir programı ACCEPT_KEYWORDS ile kurduysanız, o program silinir ve en sağlam olan paket ile değiştirilir. Ya da kurmadan önce emerge -uDp world kullanarak, emerge -uD world komutu ile kurulacak olan paketleri ve sürümlerinin listesini inceleyebilirsiniz.

USE Etiketleri

Bir paketi veya programı kurmadan önce veya kurulu olan paketlerin hangi USE etiketleri ile kurulduğunu öğrenmek için ağağıdaki komutu kullanabilirsiniz. İşlem sonunda size + veya - işaretleri ile kullanılan veya kullanılmayan USE etiketlerini hakkında bilgi aktarılır:

emerge -pv package

-p parametresi ile emerge işlem yapmaz, yani paketler kurulmaz, aksine yapılacak olan işlemden önce size USE etiketlerinin listesini gösterir. USE etiketlerini devamlı olarak kullanmak istiyorsanız veya devamlı olarak kurduğunuz her pakette USE etiketleri ile destek evrmek istiyorsanız /etc/make.conf dosyasını içindeki USE değişkeni ile tanımlayabilirsiniz. Eğer sadece belirli bir programı belirli bir USE etiketi vermek istiyorsanız, aşağıdaki komutu kullanabilirsiniz:

USE="-X -esd -gnome -gtk” emerge bitchx USE="-X -gpm” emerge mc

Bu işlem sonucunda, sadece o anda kurulan pakete USE ile tanımlanan etiket desteği verilir veya çıkartılır.

Maskeli paketler

Bazı paketler maskelidir , yani özellikle istenilmediği sürece yüklenmezler.

Paketler neden makelenir?

Bir paket derlenemediği veya ciddi hataları olduğundan dolayı maskelenebilir. Yada sadece son sürümü çok yeni olduğu ve ana portage şemasında yer almak için yeterince test edilemediğinden de maskelenmiş olabilir.

Maskeli, tehlikeli yada kararsız demek değildir.Genellikle son kararlı sürüm varsayılan olarak kullanılırken, geliştirme sürümleri maskelidir.

Bir paket mimarilerden biri, birkaçı yada tümü için maskelenmiş olabilir. (x86, ppc, sparc, sparc64, or alpha).

Maskeli paketlerin yüklenmesi:

Maskeli bir paketi sparc üzerinde yüklemek için:

ACCEPT_KEYWORDS="~sparc” emerge package

Maskeli bir paketi X86 üzerinde yüklemek için:

ACCEPT_KEYWORDS="~x86” emerge mozilla-firebird-cvs

/etc/make.conf ‘ta ACCEPT_KEYWORDS="~x86” ayarı yapmak da mümkündür ama bu genelde kötü bir fikirdir, özellikle ne yaptığınız hakkında hiçbir fikriniz yoksa.

Bir paketin en son maskeli sürümünü kontrol etmek için:

ACCEPT_KEYWORDS="~x86” emerge -pv gimp
package.mask

ACCEPT_KEYWORDS="~x86” kullanıyor bile olsanız, bazı paketlerin yüklenmesi istenmez. Bu paketler nice gentoo development teması tarafından rasgele belirlenmiş ve şurada yapılandırılmıştır:

/usr/portage/profiles/package.mask

Eğer bir paketin mevcut olandan daha yeni bir sürümü olup olmadığını merak ediyorsanız:

grep gimp /usr/portage/profiles/package.mask

Yüklü paketlerin yönetimi

Standart bir arama yaptığınızda ,Gentoo paketlerin son mevcut ve yüklü sürümlerini listeler:

emerge search package

Fakat “emerge” aracı tüm yüklü paketlerin bir listesini çıkaramaz. Çıkarabilmesi için, Gentoolkit yükleyin (varsayılan olarak yüklenmiyor):

emerge gentoolkit

Gentoolkit qpkg ‘yi içerir. Tüm yüklü paketleri listelemek için:

qpkg -I

Paket veritabanının aslında /var/db/pkg/ ‘de olduğuna dikkat edin.

Bir programın kurulu olan sürümüyle en son mevcut sürümü arasındaki değişmeleri görüntülemek için, etcat -c komutu kullanılır.

etcat -c mozilla

Çift dosyaları veya eski sürümü kurulmuş olan paketleri nasıl bulurum?

qpkg programının yardımı ile bir programın eski sürümlerini veya kurulan birden fazla sürümü olup olmadığını tespit edebilirsiniz. qpkg programı gentoolkit paketinin içindedir

qpkg –dups -v

Diğer bir yol ise emerge komutunun arkasına P (prune) parametresini eklemek:

emerge -Pvp

Hangi paketler hangi paketine bağımlı?

etcat komutunun yardımı ile paketlerin bağımlılıklarını tespit edebilirsiniz. Bunun için

etcat -d packagename

komutunu vermeniz yeterlidir.



Cenk Atay
- 7 -