dh_make ile Debian Paketi Oluşturma
3 min read![](https://i0.wp.com/anadolupanteri.net/wp-content/uploads/2019/08/dh-make-6.png?fit=776%2C445&ssl=1)
netutils adında bir dizin oluşturalım.
Dizinimize girelim.
dh-make işlemlerini yapmak için ilgili paketi kuralım.
Örnek dosyalar ile debian adında bir dizin oluşturmak için aşağıdaki komutu girelim.
debian dizininde oluşan dosyaları listeleyelim
Boş bir paket oluşturalım.
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.
Bir önceki dizinimizde oluşturduğumuz dosyaları listeleyelim.
.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.
Debian arşivini netutils_extracted adlı yeni bir dizine çıkartmak için aşağıdaki komutu kullanalım ve çıkarılan dizini inceleyelim.
Şimdi bu boş paketi sistemimize yükleyelim.
Sistemimizde kurulu olan bu paket hakkındaki bilgileri aşağıdaki komut ile elde edebiliriz.
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.
dpkg-buildpackage komutunu kullandığımız zaman files dizininde pakete dahil edilmesi için debian/install dosyasını şu şekilde düzenlemeliyiz.
Ş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.
Bu komutu çalıştırabilmemiz için devscripts paketinin kurulu olması gerekiyor.
İlgili paketimizi kuralım.
Güncel versiyon için yeni bir paket oluşturalım.
Güncel sürümü sistemimize kuralım.
Sistemimizde kurulu olan paketimiz hakkında bilgileri elde edelim.
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.
changelog dosyamızı düzenleyelim.
Yeni versiyonumuz için yeni paket oluşturalım.
Paketimizi yükleyelim.
Öncelikle paketimizin durumunu gözden geçirelim.
Paketimizin durumunu tekrar gözden geçirelim.
Güncelleme işleminide başarıyla gerçekleştirdik.
Şimdi test edelim.
Yararlandığım kaynak; https://blog.heckel.io/2015/10/18/how-to-create-debian-package-and-debian-repository/
$ mkdir netutils
![](https://i0.wp.com/anadolupanteri.net/wp-content/uploads/2019/08/dh-make-1.png?resize=640%2C100&ssl=1)
$ cd netutils
![](https://i0.wp.com/anadolupanteri.net/wp-content/uploads/2019/08/dh-make-2.png?resize=640%2C72&ssl=1)
$ sudo apt-get install dh-make
![](https://i0.wp.com/anadolupanteri.net/wp-content/uploads/2019/08/dh-make-3.png?resize=640%2C383&ssl=1)
$ dh_make \ --native \ --single \ --packagename netutils_1.0.0 \ --email ramazanaltintop@protonmail.com
![](https://i0.wp.com/anadolupanteri.net/wp-content/uploads/2019/08/dh-make-4.png?resize=640%2C261&ssl=1)
$ find debian/ | sort
![](https://i0.wp.com/anadolupanteri.net/wp-content/uploads/2019/08/dh-make-5.png?resize=640%2C369&ssl=1)
$ dpkg-buildpackage
![](https://i0.wp.com/anadolupanteri.net/wp-content/uploads/2019/08/dh-make-6.png?resize=640%2C367&ssl=1)
$ dpkg-buildpackage -kramazanaltintop@protonmail.com
![](https://i0.wp.com/anadolupanteri.net/wp-content/uploads/2019/08/dh-make-7.png?resize=640%2C353&ssl=1)
$ ls -l ../
![](https://i0.wp.com/anadolupanteri.net/wp-content/uploads/2019/08/dh-make-8.png?resize=640%2C167&ssl=1)
$ dpkg-deb -c ../netutils_1.0.0_amd64.deb
![](https://i0.wp.com/anadolupanteri.net/wp-content/uploads/2019/08/dh-make-9.png?resize=640%2C129&ssl=1)
$ dpkg-deb -x ../netutils_1.0.0_amd64.deb ../netutils_extracted
$ find ../netutils_extracted
![](https://i0.wp.com/anadolupanteri.net/wp-content/uploads/2019/08/dh-make-10.png?resize=640%2C160&ssl=1)
$ sudo dpkg -i ../netutils_1.0.0_amd64.deb
![](https://i0.wp.com/anadolupanteri.net/wp-content/uploads/2019/08/dh-make-11.png?resize=640%2C98&ssl=1)
$ dpkg -l | grep netutilsii 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>
![](https://i0.wp.com/anadolupanteri.net/wp-content/uploads/2019/08/dh-make-12.png?resize=640%2C51&ssl=1)
![](https://i0.wp.com/anadolupanteri.net/wp-content/uploads/2019/08/dh-make-13.png?resize=640%2C132&ssl=1)
$ 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
![](https://i0.wp.com/anadolupanteri.net/wp-content/uploads/2019/08/dh-make-14.png?resize=640%2C65&ssl=1)
![](https://i0.wp.com/anadolupanteri.net/wp-content/uploads/2019/08/dh-make-15.png?resize=640%2C341&ssl=1)
$ nano debian/install
files/usr/* usr
![](https://i0.wp.com/anadolupanteri.net/wp-content/uploads/2019/08/dh-make-16.png?resize=640%2C21&ssl=1)
$ dch -im
![](https://i0.wp.com/anadolupanteri.net/wp-content/uploads/2019/08/dh-make-18.png?resize=640%2C35&ssl=1)
$ sudo apt-get install devscripts
![](https://i0.wp.com/anadolupanteri.net/wp-content/uploads/2019/08/dh-make-19.png?resize=640%2C345&ssl=1)
$ dch -imvi editörünü kullanalım. (2)
![](https://i0.wp.com/anadolupanteri.net/wp-content/uploads/2019/08/dh-make-20.png?resize=640%2C142&ssl=1)
![](https://i0.wp.com/anadolupanteri.net/wp-content/uploads/2019/08/dh-make-21.png?resize=640%2C342&ssl=1)
$ dpkg-buildpackage -kramazanaltintop@protonmail.com
![](https://i0.wp.com/anadolupanteri.net/wp-content/uploads/2019/08/dh-make-22.png?resize=640%2C379&ssl=1)
$ sudo dpkg -i ../netutils_1.1.0_amd64.deb
![](https://i0.wp.com/anadolupanteri.net/wp-content/uploads/2019/08/dh-make-23.png?resize=640%2C77&ssl=1)
$ dpkg -l | grep netutils
![](https://i0.wp.com/anadolupanteri.net/wp-content/uploads/2019/08/dh-make-24.png?resize=640%2C50&ssl=1)
![](https://i0.wp.com/anadolupanteri.net/wp-content/uploads/2019/08/dh-make-25.png?resize=640%2C76&ssl=1)
$ nano debian/control
![](https://i0.wp.com/anadolupanteri.net/wp-content/uploads/2019/08/dh-make-26.png?resize=640%2C21&ssl=1)
![](https://i0.wp.com/anadolupanteri.net/wp-content/uploads/2019/08/dh-make-27.png?resize=640%2C341&ssl=1)
$ dch -im
![](https://i0.wp.com/anadolupanteri.net/wp-content/uploads/2019/08/dh-make-28.png?resize=640%2C344&ssl=1)
$ dpkg-buildpackage -kramazanaltintop@protonmail.com
![](https://i0.wp.com/anadolupanteri.net/wp-content/uploads/2019/08/dh-make-29.png?resize=640%2C341&ssl=1)
$ sudo dpkg -i ../netutils_1.2.0_amd64.deb
![](https://i0.wp.com/anadolupanteri.net/wp-content/uploads/2019/08/dh-make-30.png?resize=640%2C217&ssl=1)
$ dpkg -l | grep netutilsiU 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
![](https://i0.wp.com/anadolupanteri.net/wp-content/uploads/2019/08/dh-make-31.png?resize=640%2C309&ssl=1)
$ dpkg -l | grep netutils
![](https://i0.wp.com/anadolupanteri.net/wp-content/uploads/2019/08/dh-make-32.png?resize=640%2C59&ssl=1)
$ ipaddr
![](https://i0.wp.com/anadolupanteri.net/wp-content/uploads/2019/08/dh-make-33.png?resize=640%2C44&ssl=1)