Deb Paketlerinin Yeniden Oluşturulması

Debian Türkiye sitesinden

WikiSysop (Mesaj | katkılar) tarafından oluşturulmuş 21:16, 14 Nisan 2008 tarihli sürüm

(fark) ← Önceki hâli | en güncel halini göster (fark) | Sonraki hâli → (fark)

Bir hatayı araştırırken Serdar AYTEKİN'in çok güzel bir özet mesajını bulunca burada mutlaka olmalı dedim. Rules dosyalarında değişiklik yaparak paketleri yeniden oluşturmak gerekebiliyor bazen. Böyle bir durumda, ilgili paketin, örneğin php4'ün yeniden oluşturulup sisteme kurulmasından sonra paketi nasıl koruyacağımız önemli bir mevzu. Aşağıda sorusu ve cevabı ile bu konu yer alıyor. Aynen yapıştırıyorum: bazen yeniden üretmek yerine elimizdekini kullanmayı da bilmek gerek :)

> "Ben kurulumu kendi istediğim ayarlara göre yapacağım.
> Bundan sonra bu paketin güncelemesi yapıdığında otomatik olarak benim
> ayarlarıma göre mi güncellenecek? Yoksa her güncelleme çıktığında benim yine
> rules dosyasını değiştirip kaynak paketten kurmam mı gerekecek?" Tabii
> ikinci durum söz konusuysa zaten eskiden olduğu gibi kaynak kodundan kurarak
> devam edip güncellemeleri de yazdığım betiklerle halletmem daha kolay bile
> olur. Bu durum için sizler ne önerirsiniz?

Kaynak kodu alip yeniden derlemek icin oncelikle "sources.list" icerisinde deb-src ile baslayan depo adreslerinin bulunmasi gerekir.

paketi sisteminizde kaynak kodundan tekrar derleyip .deb dosyasini olusturabilmek icin o pakete ait tum bagimliliklarin sisteminizde olmasi gerekir. Bunun icin;

  1. apt-get build-dep (apt-get build-dep php4 gibi)

ile ifade edilen pakete ait (sisteminizde olmayan) tum bagimliliklari indirir. Bu duruma gore epeyce bir download gerektirebilir. Hangi paketlere bagimli oldugu paketin kaynak kodunu indirdiginiz yerde "debian" dizinindeki "control" dosyasinda "Build-Depends:" seklinde yer alir.

  • Paketde herhangibir degisiklik yapmadan derlemek icin;
  1. cd -version (cd php4-4.3.10 gibi)
  2. dpkg-buildpackage -b -uc

komutu ile paketi olusturabilirsiniz.

NOT-1 : apt-get -b source (paketin kaynak kodunu indirir ve derler). Yani degisiklik yapmadan derlemek icin;

NOT-2 : dpkg-buildpackage "dpkg-dev" paketinin icerisinden cikar.

  1. apt-get build-dep
  2. apt-get -b source

Yeterli olur. Daha sonra da "dpkg -i ..." seklinde kurabilirsiniz.

Sayet paketde degisiklik yapacaksaniz onceki komutlarin yerine;

  1. cd -version/debian (cd php4-4.3.10/debian gibi)
  2. rules dosyasini duzenleyiniz.
  3. cd ..
  4. dpkg-buildpackage -b -uc
  • Hangi durumlarda paketi bu sekilde derlemek gerekir?

- Paket icin varsayilan configurasyon ayarlari sizin ihtiyacinizi karsilamiyorsa ozel parametrelerde ilave etmek veya cikarmak istiyorsaniz.

- Varolan pakete yama (patch) yapmak istiyorsaniz.

- Varolan paketleri kendi sisteminize gore optimize etmek icin yapabilirsiniz.

  • Kendi olusturdugum paketin depolardaki guncellemelerden etkilenmemesini

nasil saglarim?

1- apt-pinning ozelligini kullanarak su isimli paketin su versiyonunu surekli sistemde tut onu hicbir sekilde guncelleme diyebiliriz.

2- echo " hold" | dpkg --set-selections

Aksi taktirde guncellemelerde kendinizin olusturdugu paketi kaybedebilirsiniz. Bu durumda sistemin calismasi aksayabilir vs.

Sonuc : Sizin tarafinizdan olusturulan paket Gayri-Resmi olacaktir. Ozellikle rules dosyasini editlemek, ilaveler yapmak sakincali sonuclar da ortaya cikarabilir. Paketi bu sekilde yeniden duzenleyecek kadar kurcalamak ciddi tecrube gerektirir.

Bu paketler mumkun olan en ince ayrintisina kadar dusunulup, cok uzun sure test edilmis paketlerdir. Rules dosyasi vb. dosyalar ile fazla oynanmasi iyi degil :)

En Cok Hangi Durumda Kaynak Koddan Derleme Yapilir?

-Siz kararli (stable) bir sistem kullaniyorsunuz ancak aradiginiz paket sadece testing deposunda var bu durumda testing deposundan o paketin kaynak kodunu indirip kendi kararli sisteminizdeki kutuphaneler ile yeniden derlenmesini saglayabilir. Kararli depodaki kutuphaneleri kullanan bir paket elde etmis olursunuz. *Bu durum da her paket icin uygulanmayabilir*. Ayrica yine paketi gayri-resmi olmaktan kurtaramaz.

Kararli (stable) surum icin artik Gunumuzde backports.org, apt-get.org, volatile.debian.net gibi cozumler de mevcut oldugu icin bu islere cokta gerek kalmiyor. Bunlardan baska;

- Qmail gibi lisans sorunu olan paketleri kaynak koddan yeniden derlemek gerekir. - Yine Qmail gibi genelde yama gerektiren yazilimlarda bu islem uygulanir. Ancak bu tur paketlerde cok istisnadir.

Kaynak: http://lists.debian.org/debian-user-turkish/2005/03/msg00033.html