acikkaynak.blog_
← tüm yazılar CI/CD & Otomasyon

DPKG-DEB İle Debian Paketi Oluşturma

✍ Emre Karabulut📅 19 Haziran 2020⏱ 3 dakika okuma

DPKG-DEB İle Debian Paketi Oluşturma

debian paketi oluşturma

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.

Açık Kaynak Yazılımları

Duygu Ölmez

debian paketi oluşturma