24 Ocak 2021 Pazar

Deb paket oluşturma (afad-tema.deb)

 Merhabalar,

Kurumunuz veya kendiniz için basit deb paketleri oluşturmadan bahsedeceğim. Basit bir paket yapalım.

Paket Yapısı:

Paket adı olarak ben afad-tema seçiyorum. Bu paket adı ile bir klasör oluşturup, içine gerekli malzemeleri koyacağız.
Paketin için içinde "DEBIAN" isimli klasör zorunlu. İçinde aşağıda bahsettiğim şekilde uygulama bilgileri yer alıyor.
Diğer klasörler ise "/" muş gibi düşünüp koyduğunuz dosyalar, kurulacak makinanın dizinlerine kopyalanıyor. Örnek usr isimli klasör açtınız. Bu klasör altına share isimli klasör açtınız. Altına enes.txt isimli dosya koydunuz. Bu paket kurulursa, kurulan makinanın /user/share altına enes.txt dosyasını kopyalıyor.

cd /home
mkdir afad-tema
cd afad-tema
mkdir DEBIAN

afad-tema

  • DEBIAN
    • control(zorunlu)
    • md5sums(zorunlu)
    • postinst(opsiyonel)
    • preinst(opsiyonel)
    • prerm(opsiyonel)
    • postrm(opsiyonel)
  • /


control paketinizin bilgileri içeriyor. Ben script ile dolduruyorum bu bilgileri. Bakınca anlayacağınıza eminim.

md5sums paketinizin indirme sırasında bozulmuşmu kontrolu sağlayan hash dosyası. Script ile otomatik oluşur. 


Paket kurulurken 4 temel betik dosyası çalışır. Bu dosyalar DEBIAN/ klasörü içerisinde oluşturulur.

  • preinst paket kurulmadan önce çalışır. Paketiniz için oluşturulması gereken dosyalar ya da yapılması gereken kofigürasyonlar varsa burada yapılır.
  • postinst paket kurulduktan sonra çalışır, örneğin uygulamanız kurulduktan sonra servisi enable etmek isteyebilirsiniz.
  • prerm paket kurulmadan önce yapılması gereken işlemler. Paket silinirken içinden çıkan dosya ve dizinleri temizlemek ister. Fakat bu dizinlerde bunun dışında oluşturulanları bunları temizleyemez. Örneğin bu dosyalar paketkaldırılmadan silinebilir ya da çalışan ilgili servisler durdurulabilir.
  • postrm paket kaldırıldıktan sonra yapılmak istenen işlemler burada tanımlanır



Senaryomuz: 

Kurumunuzun arka fon masaüstü resmini yüklemeye, değiştirmeye yarayan bir paket yapalım.  Arka fon resimleri nerede bulunduğunu inceleyelim.
Varsayılan ayarlarda : "/user/share/images/desktop-base/desktop-background" dosyasındaki resim bize arkafonu ayarlıyor. Yani bu dosyayı değiştirirsek (güncellersek) arka fon resmi değiştir. Bu yüzden yukarıdaki formata uygun paket-adı mızın altına gerekli klasörleri oluşturup desktop-background isimli resmimizi atıyoruz. Ben kullanıcı isterse farklı renklede kurumsal resimlerde kullanabilsin diye 5-6 tane daha resim koydum.
Peki, paket kurumundan önce açılmış kullanıcılar arka fon resmini değiştirmiş ise (varsayılan ayarı değişmiş) onlarında resmini nasıl düzeltebiliriz onu araştırmamız lazım.
"/home/afad/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-desktop.xml"
Pardus da oturum açmış her kullanıcının kendi dizini altında ".config" adında ayar klasörü olduğunu gördüm. Yukarıdaki dosya bizim arka fon resim ayarının saklandığı yer olduğunu keşfettim. Nasıl keşfettiniz dersenin internetten araştırma , 1-2 saatlik emek , tecrübe ....
Bende aşağıdaki basit 2 komutu hazırladım. Bu komutlar var olan kullanıcıların ayarlarını düzeltmeye ayarıyor. Kullanıcılar logout-login olduğunda bu ayarlar devreye girecek.

vi /home/afad-tema/DEBIAN/postinst

#######Kullanicilarin ayarlarini duzeltiyor###########
find /home -type f -name "xfce4-desktop.xml" -print0 | xargs -0 sed -i 's+name="last-image" type="string".*+name="last-image" type="string" value="/usr/share/images/desktop-base/default"/>+g'
######olceklendırme fil olmasini sagliyor##############
find /home -type f -name "xfce4-desktop.xml" -print0 | xargs -0 sed -i 's+name="image-style" type="int".*+name="image-style" type="int" value="3"/>+g'

Bu scripti /home/afad-tema/DEBIAN/postinst  içine koyuyorum.
Kısaca bu scripti anlatayım. :
  • /home altında "xfce4-desktop.xml" dosyaları arıyor. Bulduklarında sed komutu ile ilgili yerleri düzeltiyor. Yani varsayılan resim yolu yapıyor.

chmod 755 /home/afad-tema/DEBIAN/postinst

Paketimizin içeriği hazır. Şimdi derleyeyim yani deb haline çevirelim.

Dep haline çevirme:

Ben bu iş için yine script yazdım.

vi /home/afad-tema.sh


touch afad-tema/DEBIAN/control
boyut=$(du -s afad-tema | cut -f 1)
versiyon=$(date +'%y.%m.%d')
echo """Package: afad-tema
Version: $versiyon
Installed-Size: $boyut
Maintainer: Enes Mucahit OZTURK <enesmozturk@gmail.com>
Architecture: amd64
Description: Afad Kurumsal Tema
   Masaustu font ve resimleri degistirme
""" > afad-tema/DEBIAN/control

touch afad-tema/DEBIAN/md5sums
cd afad-tema
find ./ -type f ! -regex '.*?DEBIAN.*' -exec md5sum {} \; > DEBIAN/md5sums
cd ..
dpkg-deb -Zgzip --build afad-tema
mv afad-tema.deb afad-tema_$(date +'%y.%m.%d')_amd64.deb 

Scriptimizi çalışır hale getirip çalıştıralım.
chmod 777 /home/afad-tema.sh
/home/afad-tema.sh

Script için bazı bilgiler vereyim:
  • ilk kısım /home/afad-tema/DEBIAN/control isimli dosyayı oluşturuyor. İçine Echo ile:
    • Paket adını veriyor
    • kolaylık olsun diye yıl-ay-gun şeklinde versiyon bilgisi ekliyor.
    • otomatik paket boyutunu ekliyor
    • Üretici bilgisi ekliyor
    • Paket tipi ekliyor. amd64 dışında makine kalmadı
    • Açıklama ekliyor
  • 2. kısım  /home/afad-tema/DEBIAN/md5sums isimli dosyayı oluşturuyor.
  • 3. kısım esas konumuz olan dep paketini üretiyor.
  • 4. kısım paket adını uygun formata çeviriyor.

Artık elimizde afad-tema_21.01.11_amd64.deb isimli paketimiz var. Hayırlı olsun.


Client tarafına kurulum:


İstediğimiz pardus makinada:
 "dpkg -i afad-tema_21.01.11_amd64.deb" şeklinde kurabiliriz.
"dpkg -I afad-tema_21.01.11_amd64.deb" şeklinde control dosyasına bakabiliriz

root@Pardus:/home# dpkg -I afad-tema_21.01.19_amd64.deb
 yeni Debian paketi, sürüm 2.0.
 boyut 7986562 bayt: denetim arşivi=861 bayt.
     211 bayt,     8 satır      control
     817 bayt,    10 satır      md5sums
     456 bayt,     5 satır   *  postinst
 Package: afad-tema
 Version: 21.01.19
 Installed-Size: 10052
 Maintainer: Enes Mucahit OZTURK <enesmozturk@gmail.com>
 Architecture: amd64
 Description: Afad Kurumsal Tema
    Masaustu font ve resimleri degistirme



Paketin proje halini buradan indirebilirsiniz.













Hiç yorum yok:

Yorum Gönder