Debian ikili paketinin (.deb) yapısı

İçindekiler

1.0 Önsöz
2.0 Giriş
3.0 İkili paketlerin yapısı
        3.1 İkili paketleri edinmek
        3.2 Ayar dosyaları
              3.2.1 DEBIAN/control
              3.2.2 DEBIAN/md5sums
              3.2.3 preinst, postinst, prerm and postrm dosyaları
        3.3 Yazılım dosyaları
4.0 Belgeler

sürüm 1.0 - Mart 2006

1.0 Önsöz

Bu yazı Can Kavaklıoğlu tarafından, Pozitif Pc e-dergisinin üçüncü sayısı için yazılmıştır.

Yazıdaki hataları, önerileri, soruları ve/veya yazının oluşturduğu tepkileri yukarıdaki bağlantıdan ulaşabileceğiniz eposta adresine yollarsanız pek de güzel olur.

Herzamanki gibi bu yazıda yazanlar etkisinde kalarak yaptığınız hareketlerden yazar sorumlu değildir.

2.0 Giriş

Debian GNU/Linux ile ilgilenen arkadaşlarımız için önemli olabilecek Debian paketlerinin içeriklerine kuş bakışı bir giriş anlatımıdır.

3.0 İkili paketlerin yapısı

Debian paketleri ikili paketi ve kaynak paketi olarak ikiye arılırlar. Kaynak paketleri ismi denk gelen ikili paketlerin kaynak kodlarını içerirler. İkili paketler ise herhangi bir programı sisteminize yüklemek için gerekli olan dosyaları içerir.

İkili paketler, paket yöneticileri tarafından, (genelde) resmi Debian depolarına konmak üzere paketlenmiş, kendilerine yada üçüncü şahıslar tarafından yazılmış yazılımların Debian sistemine kurulması için gerekli ayar dosyalarını ve yazılımın çalışması için gereken dosyaları içerir.

3.1 İkili paketleri edinmek

Paketleri edinmek için iki yol vardır. Birincisi resmi depodan yada bir yansısından paketi elle indirmek, yada aptitude programının yardımı ile direk olarak sisteme yüklemek. Normal olarak "aptitude install <paket adı>" komutu ile bir program yüklediğinizde, ilgili .deb paketi sisteminizdeki /var/cache/apt/archives/ konumuna kaydedilir.

Örnek olarak kullanmak üzere resmi arşivden kullanışlı bir CD/DVD yazma programı olan, graveman programının ikili paketini indirelim.

Önce boş bir klasör oluşturalım, ve dosyayı indirelim (size uygun olan başka bir klasör yada dosya indirmek programı kullanabilirsiniz):

> mkdir ornekpaket
> cd ornekpaket
ornekpaket/> wget http://ftp.tr.debian.org/debian/pool/main/g/graveman/graveman_0.3.10-2-1_i386.deb

Not: Verilen adres graveman programının kararlı resmi Debian deposunda bulunan sürümüdür, ancak test deposundaki sürümü graveman adına oldukça gerekli güncellemeler içermektedir, adresi de şudur: http://ftp.tr.debian.org/debian/pool/main/g/graveman/graveman_0.3.12-4-2.1_i386.deb

Yükleme başarılı olursa graveman_0.3.10-2-1_i386.deb (test deposu için graveman_0.3.12-4-2.1_i386.deb) isimli bir dosya edinmiş olmamız gereklidir.

Not: Bundan sonra kararlı Debian deposundaki sürüm üzerinden devam edilecektir. Burada yapacağımız işlemlerin aynılarını test deposundaki paket ile de yapabilirsiniz. Aslında herhangi başka bir paketle de yapabilirsiniz.

3.2 Ayar dosyaları

Paketin içindeki ayar dosyalarını edinmek için dpkg nin -e seçeneğini kullanmamız gereklidir.

ornekpaket/> dpkg -e graveman_0.3.10-2-1_i386.deb
ornekpaket/> ls
DEBIAN  graveman_0.3.10-2-1_i386.deb
ornekpaket/>

Görüldüğü üzere, bu komuttan sonra, DEBIAN isimli bir klasör oluştu. Her paketin içinde bu isimli bir klasör mevcuttur. İçinde de paketin ayar dosyaları bulunmaktadır.

3.2.1 DEBIAN/control

İçeriğini görmek için şu komutu kullanabiliriz:

ornekpaket/> cat DEBIAN/control
Package: graveman
Version: 0.3.10-2-1
Section: gnome
Priority: optional
Architecture: i386
Depends: libatk1.0-0 (>= 1.7.2), libc6 (>= 2.3.2.ds1-4), libflac6, libglade2-0 (>= 1:2.4.2-2), libglib2.0-0 (>= 2.6.0), libgtk2.0-0 (>= 2.6.0), libid3tag0 (>= 0.15.0b), libmad0 (>= 0.15.1b), libogg0 (>= 1.1.2), libpango1.0-0 (>= 1.8.1), libvorbis0a (>= 1.1.0), libxml2 (>= 2.6.16), zlib1g (>= 1:1.2.1), cdrecord, mkisofs, sox, vorbis-tools, dvd+rw-tools, cdrdao
Installed-Size: 1380
Maintainer: Otavio Salvador <otavio@debian.org>
Description: graphical tool to burn dvd and cd, gtk based
 Graphical tool to burn dvd and cdi, made with gtk. You can:
  * Burn audio cd from wav, ogg or mp3.
  * Duplicate cd audio, cd data and dvd data.
  * Create iso images from data cd and dvd.
  * Burn cd and dvd data from iso image.
  * Format cd and dvd rewritable.
  * Burn data cd and dvd with files and directories that you choose.
  * Use drag and drop with nautilus or integrated file dialog.
 .
 Homepage: http://www.nongnu.org/graveman/

Görüldüğü gibi söz konusu paket hakkında birçok bilgi içermektedir. Bilginin yanı sıra control dosyası, dosyanın gereksinimleri hakkında da bilgiler verir. Bütün bilgiler önceden belirlenmiş alanlar içerisine yazılır bu alanlar şunlardır:

Alan adı Açıklama
Package (paket) Paketin ismi, zorunludur.
Source (kaynak) Bu paketin kaynak paketinin ismi.
Version (sürüm) Paketin sürümünü belirtir, zorunludur.
Section (bölüm) Debian arşivinin hangi bölümüne ait olduğunu belirtir , tavsiye edilir. Örnek olarak elimizdeki graveman paketi gnome bölümüne aittir. Bölüm değerinden paketin ne amaçla kullanılabileceği hakkında bir ipucu bulmak mümkündür. graveman paketinin bakımcısı, gnome bölümünü belirterek, paketin gnome masaüstü ortamında kullanımına yönelik olduğunu belirtmiştir.
Priority (öncelik)
Gerekli durumlarda paketin önceliğini belirtir, tavsiye edilir. Alabileceği değerler: "required" (olmazsa olmaz), "important" (önemli), "standard", "optional" (seçmeli), "extra" (fazladan).
Architecture (mimari) Paketin çalışabileceği mimariyi belirtir, zorunludur. Alabileceği değerler: alpha, arm, hppa, i386, ia64, m68k, mips, mipsel, powerpc, s390, sh, sheb, sparc, sparc64 yada "all" (mimari önemli değildir), "any" (her mimari için bir paketi vardır), "source" (bir kaynak paketi işaret eder).
Essential (şart) Eğer "evet" denmişse, paketin yenilenmesi hariç diğer durumlarda, paketin kaldırılması paket sistemi tarafından reddedilir. Alabileceği değerler: "yes" (evet), "no" (hayır).
Depends (bağımlılıklar) Paketin doğru çalışabilesi için gerekli diğer paketleri ve sürümlerini belirtir.
Installed-Size (yüklenmiş boyutu) Kilobayt cinsinden paketin yüklendiği zaman kullandığı disk alanı.
Maintainer (bakımcısı) Paketin bakımını yapan kişi, zorunludur.
Description (açıklama) Paketin ne yaptığını kısaca açıklayan açıklama alanı, zorunludur.

3.2.2 DEBIAN/md5sums

Paketteki her dosyanın md5 değerlerini içerir. Gerekirse dosyaların doğruluğunu kontrol etmekte kullanılır.

3.2.3 DEBIAN/postinst DEBIAN/preinst DEBIAN/postrm DEBIAN/prerm

Önce birkaç karşılık belirtelim:
"post" -> "sonra"
"pre" -> "önce"
"rm" -> "remove" -> "silmek/kaldırmak"
"inst" -> "install" -> "yüklemek"

Bu dosyaların herbirisi, eğer gerekli ise, DEBIAN klasörüne yerleştirilir. Genelde çalıştırılabilen betik dosyalarıdır. Dosya hakları, herkes tarafından çalıştırılabilir ve diğerleri tarafından yazılamaz olmalıdır.

Yukarıdan anlaşılabileceği gibi
"postinst" -> yüklemeden sonra
"preinst" -> yüklemeden önce
"postrm" -> silmeden/kaldırmadan sonra
"preinst" -> silmeden/kaldırmadan önce
çalıştırılır.

Bu dosyaların kullanılış amacı, isimlerinin belirttiği zamanlarda, yapılması şart olan işlemlerin sıralanması için bir yer gösterici olmalarıdır.

3.3 Yazılım dosyaları

Her paketin kendi yazılım dosyaları vardır. Paketimizin yazılım dosyalarına ulaşmak için, şu komutu kullanabiliriz:

ornekpaket/> dpkg -x graveman_0.3.10-2-1_i386.deb .
ornekpaket/> ls
DEBIAN  graveman_0.3.10-2-1_i386.deb  usr

Görüldüğü gibi usr isimli bir klasör oluşmalıdır. usr klasörünün içinde graveman yazılımının çalışması için gerekli bütün dosyalar mevcuttur. Yükleme sırasında bu dosya olduğu gibi kullanıcının kök klasörüne kopyalanacaktır. Yani eğer kullanıcı graveman paketini sistemine yüklerse, bu gördüğümüz usr klasörü sistemine kopyalanır ve içindeki dosyalar sayesinde kullanıcı graveman programını kullanabilir.

usr gibi herhangi diğer bir konumda herhangi diğer bir klasör yükleme için kullanılabilir. Paketleme sistemi, yükleme sırasında gerekli klasörleri yaratacaktır.

4.0 Belgeler

http://www.debian.org/doc/debian-policy/

----------------------------
Can Kavaklıoğlu