DPKG-DEB İle Debian Paketi Oluşturma

Duygu Ölmez - Apr 7 '20 - - Dev Community

Paket uygulamların derlenmiş halini ya da kaynak kodlarını, kofigürasyon dosyalarını, resimlerini ve kurulum komutları da dahil olmak üzere tüm dosyalarını içeren arşivlenmiş bir dosyadır. Uygulama paketleri Windows işletim sistemlerinde .exe; Ubuntu, Pardus gibi Debian tabanlı işletimlerinde .deb, Fedora, CentOS gibi RedHat tabanlı işletim sistemlerinde .rpm uzantılıdır.
Bu yazıda debian tabanlı işletim sistemlerinde dpkg-dep paketi ile paket oluşturacağız.

1- Gerekli paketler indirilir.

sudo apt install dkpg-deb

2- Uygulama hazırlanır

Uygulamanız için bir dizin oluşturulur. Uygulama dizininde DEBIAN adında bir dizin daha oluşturulur. Bu dizin içerisinde paket ile ilgili dosyalar ve kurulum betikleri olacak.

mkdir ilk-uygulamam

Bulunduğu kullanıcı ile terminal ekranından aldığı girdiği ekrana yazdıran, diyorki adında bashscirpt betiği yazılır.

echo """
#!/bin/bash
girdi=\$1
echo \$USER' diyor ki: '\$girdi
""" > diyorki

2- Uygulama dosyalarının gerekli dizinlere taşınması

Paket yüklenirken sıkıştırılmış dosya içerisindekileri kök dizininde açar. Yani uygulama dizini içerisine oluşturacağınız hiyerarşi, ğaketinizi yüklediğiniz işletim sisteminin kök dizininde de oluşacaktır. Örneğin uygulamanızı yükledikten sonra betiğinizin /opt altında olmasını istiyorsanız, betiğinizi ilk-uygulamam/opt/ içerisine taşımanız gerekmektedir.
Linux işletim sistemlerinde çalıştırılabilir uygulamarın bulunduğu dizinler vardır. Uygulamanızı bu dizinlerden birisine taşıyıp çalıştırılabilir bayrağı verirseniz, ls ya da cd komutları gibi kullanabilir hale getirirsiniz. Betiğimizi bunlardan birisine çıkaracak çekilde taşıyalım.

echo $PATH
mkdir -p ilk-uygulamam/usr/local/bin/
cp diyorki ilk-uygulamam/usr/local/bin/

3- Paket için gerekli dizin ve klasörler oluşturulur

mkdir ilk-uygulamam/DEBIAN
touch ilk-uygulamam/DEBIAN/control
touch ilk-uygulamam/DEBIAN/md5sums

4- Control dosyası düzenlenir

DEBIAN içerisine oluşturulacak Control dosyadasında paket ile ilgili geliştiren yayınlanma tarihi gibi temel bilgiler bulunur.

touch ilk-uygulamam/DEBIAN/control
boyut=$(du -s diyorki | cut -f 1)
versiyon=$(date +'%Y%m%d-%H%M%S')
tarih=$(date +'%d/%m/%Y-%H:%M:%S')
echo """Package: diyorki
Version: $versiyon
Installed-Size: $boyut
Maintainer: Duygu Ölmez <xxx@yyy.com>
Date : $tarih
Architecture: amd64
Description: Diyorki uygulaması
   Aldığı değeri ekrana yazdıran uygulama
""" > ilk-uygulamam/DEBIAN/control

Package paketinizin adı
Version paketin versiyonunu belirtir. Kurulu paketler güncellenirken bu bilgi önemlidir.
Installed-Size paket yüklendiğinde ne kadar yer kaplayacağını belirtir. du komutu belirtilen dizin ve altında bulunanların botutunu gösterir. -s parametresi ile yalnızca belirtilen dizinin toplam boyutunu gösterir. cut komutu ekran çıktısındaki belirtilen sütunu döndürür.
Date paketin oluşturulma tarihidir. date komutu ile istenilen formatta tarih çıktısı alınır. %d/%m/%Y-%H:%M:%S Gün/Ay/Yıl-Saat:Dakika:Saniye formatında çıktı verir. Paket versiyonları belirlenirken de belirlenen bir formatta tarih belirlenerek betiklerinizi otomatize edebilirsiniz.
Architecture hangi mimarilerde çalıştığını belirtir.
Maintainer Geliştirici hakkında bilgi verir.
Description Paket hakkındaki açıklamalar bu alana yazılır.

4- Uygulama dosyalarının hashleri dosyaya yazdırılır

Her bir dosyanın hash bilgileri bir dosyaya yazdırılır. Bu şekilde dosyalarda güncelleme olup olmadığı kontrol edilebilir.

find ./ -type f ! -regex '.*?DEBIAN.*' -exec md5sum {} \; > ilk-uygulamam/DEBIAN/md5sums

4- Kurulum öncesi ve sonrası çalışacak betikler oluşturulur

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

Uygulamamız kurulduktan sonra betiğimize çalışırılabilir flagini koyabilmek için postinst dosyasına bu komutu yazıyoruz.

echo "chmod +x /usr/local/bin/diyorki" > ilk-uygulamam/DEBIAN/postinst
chmod +x ilk-uygulamam/DEBIAN/postinst

5- Paketin oluşturulması

Aşağıdaki komutla paket oluşturulur

dpkg-deb -Zgzip --build ilk-uygulamam
ls -la
-rw-r--r--  1 pardus pardus   53 Apr  7 16:10 diyorki
drwxr-xr-x  4 pardus pardus 4096 Apr  7 16:01 ilk-uygulamam
-rw-r--r--  1 pardus pardus  894 Apr  7 16:14 ilk-uygulamam.deb

Bu şekilde uygulamarınızı deb paketleri haline getirebilirsiniz.

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .