dh_make ile Debian Paketi Oluşturma

netutils adında bir dizin oluşturalım.

 

$ mkdir netutils

Dizinimize girelim.

 

$ cd netutils

 

dh-make işlemlerini yapmak için ilgili paketi kuralım.

 

$ sudo apt-get install dh-make

 

Örnek dosyalar ile debian adında bir dizin oluşturmak için aşağıdaki komutu girelim.

 

$ dh_make \

--native \

--single \

--packagename netutils_1.0.0 \

--email ramazanaltintop@protonmail.com

 

debian dizininde oluşan dosyaları listeleyelim

 

$ find debian/ | sort

 

Boş bir paket oluşturalım.

 

$ dpkg-buildpackage

 

gpg: “Ramazan Altıntop <ramazanaltintop@protonmail.com>” atlandı: No secret key

gpg: dpkg-sign.OiLqrMxm/netutils_1.0.0.dsc: clear-sign failed: No secret key

dpkg-buildpackage: error: failed to sign .dsc file

Anahtar ile ilgili problem yaşadığım için aşağıdaki şekilde komutumu tekrar giriyorum.

 

$ dpkg-buildpackage -kramazanaltintop@protonmail.com

 

Bir önceki dizinimizde oluşturduğumuz dosyaları listeleyelim.

 

$ ls -l ../

 

.tar.xz: kaynak paketidir. netutils/ dizininde yer alan dizin veya dosyalar bu kaynak paketinde arşivlidir.

.deb: Yüklenebilen bir debian paketidir.

.dsc, .changes: İmza dosyaları, tüm dosyaların şifreli imzaları bulunur.

Debian paketinin içeriğini inceleyelim.

 

$ dpkg-deb -c ../netutils_1.0.0_amd64.deb

 

Debian arşivini netutils_extracted adlı yeni bir dizine çıkartmak için aşağıdaki komutu kullanalım ve çıkarılan dizini inceleyelim.

 

$ dpkg-deb -x ../netutils_1.0.0_amd64.deb ../netutils_extracted

 

 

$ find ../netutils_extracted

 

Şimdi bu boş paketi sistemimize yükleyelim.

 

$ sudo dpkg -i ../netutils_1.0.0_amd64.deb

 

Sistemimizde kurulu olan bu paket hakkındaki bilgileri aşağıdaki komut ile elde edebiliriz.

 

$ dpkg -l | grep netutils

 

ii netutils 1.0.0 amd64 <insert up to 60 chars description>

İstenilen paketin durumu(i=install, r=remove, p=purge): i

Güncel paket durumu:(n=not installed, i=installed): i

Paket adı: netutils

Versiyon: 1.0.0

Mimari: amd64

Açıklama: <insert up to 60 chars description>

Paketi yüklediğimiz için artık aşağıdaki komutla sistemimizde bu debian paket içeriğini listeleyebiliriz.

Gerekli dizinlerimizi oluşturup örnek scriptimizi oluşturalım. Scriptimize çalışma iznini ayarlayalım.

 

$ mkdir -p /files/usr/bin

 

 

$ touch /files/usr/bin/ipaddr

 

 

$ chmod +x /files/usr/bin/ipaddr

 

 

$ nano /files/usr/bin/ipaddr

 

 

#!/bin/bash

 

 

curl --silent 'https://api.ipify.org?format=json' | jq .ip –raw-output

 

dpkg-buildpackage komutunu kullandığımız zaman files dizininde pakete dahil edilmesi için debian/install dosyasını şu şekilde düzenlemeliyiz.

 

$ nano debian/install

 

 

files/usr/* usr

 

Şimdi changelog dosyasını düzenleyerek bu pakette yapmış olduğumuz değişiklikleri ifade edelim. Bu değişiklikle paketi 1.1.0’a yükselteceğiz.

 

$ dch -im

 

Bu komutu çalıştırabilmemiz için devscripts paketinin kurulu olması gerekiyor.

İlgili paketimizi kuralım.

 

$ sudo apt-get install devscripts

 

 

$ dch -im

 

vi editörünü kullanalım. (2)

Güncel versiyon için yeni bir paket oluşturalım.

 

$ dpkg-buildpackage -kramazanaltintop@protonmail.com

 

Güncel sürümü sistemimize kuralım.

 

$ sudo dpkg -i ../netutils_1.1.0_amd64.deb

 

Sistemimizde kurulu olan paketimiz hakkında bilgileri elde edelim.

 

$ dpkg -l | grep netutils

 

ipaddr scriptini çalıştırmak istediğimde bağımlılık hatası alıyorum. O zaman yeni bir güncelleme ile paketime bu bağımlılıkları eklemeliyim.

Kontrol dosyamızı düzenleyelim ve gerekli bağımlılıkları (jq, curl), açıklamaları ekleyelim.

 

$ nano debian/control

 

changelog dosyamızı düzenleyelim.

 

$ dch -im

 

Yeni versiyonumuz için yeni paket oluşturalım.

 

$ dpkg-buildpackage -kramazanaltintop@protonmail.com

 

Paketimizi yükleyelim.

 

$ sudo dpkg -i ../netutils_1.2.0_amd64.deb

 

Öncelikle paketimizin durumunu gözden geçirelim.

 

$ dpkg -l | grep netutils

 

iU netutils 1.2.0 amd64 Network Management Tools

Yüklü faket paketlenmemiş olduğunu fark ediyoruz.

i = installed

U = UNPACKED

Bu iki paketin başarıyla kurulması için aşağıdaki komutlardan herhangi birini kullanabilirsiniz.

 

$ sudo apt-get -f install

 

 

$ sudo apt-get install --fix-broken

 

Paketimizin durumunu tekrar gözden geçirelim.

 

$ dpkg -l | grep netutils

 

Güncelleme işleminide başarıyla gerçekleştirdik.

Şimdi test edelim.

 

$ ipaddr

 

Yararlandığım kaynak; https://blog.heckel.io/2015/10/18/how-to-create-debian-package-and-debian-repository/