Debian tabanlı sistemler için paket oluşturma - 2
Tags: debian, package, deb, apt
Published: 2020-03-03 08:30:27

["Debian tabanlı sistemler için paket oluşturma - 1"](https://dev.to/aciklab/debian-tabanli-sistemler-icin-paket-olusturma-1-fnd) yazısında temel düzeyde bir paketin nasıl yapılacağını incelemiştik. Fakat ilgili paket herhangi bir iş yapmamakta. Sadece bağımlılığından dolayı "git" ve "python3" paketinin "3.5" sürümünden büyük bir durumunu bağımlılık olarak yüklemekte idi.

Şimdi kurulum öncesinde, kurulum sonrasında, silme öncesinde ve silme sonrasında bir betik çalıştırmak istersek ne yapacağımızı göreceğiz.

Öncelikle yeni ekleyeceğimiz dosyaları görelim. Bu dosyalar aşağıdaki konumlarına eklenmelidir.

```
ornekpaket-1.4.0-b2/
└── DEBIAN/
    └── control
    └── postinst	# dosya taşıma ve kurulum hemen sonrası
    └── postrm		# silme hemen sonrası
    └── preinst		# dosya taşıma ve kurulum hemen öncesi
    └── prerm		# silme hemen öncesi
```

Bu dosyaların içerisinde herhangi bir betik çalıştırabilirsiniz. Fakat genelikle bash betikleri yazıldığı için dosyaların en üst satırlarında **#!/bin/bash** satırı yazılarak bir sonraki satırdan itibaren istenilen betik yazılmaya başlanır. Bu nedenle özetle aşağıdaki şekilde 4 farklı betik hazırlanabilir.

```bash
echo """#!/bin/bash
echo "kuracağım" >> /opt/ornek.txt
""" >  ornekpaket-1.4.0-b2/DEBIAN/preinst
```

```bash
echo """#!/bin/bash
echo "kurdum" >> /opt/ornek.txt
""" >  ornekpaket-1.4.0-b2/DEBIAN/postinst
```

```bash
echo """#!/bin/bash
echo "sileceğim" >> /opt/ornek.txt
""" >  ornekpaket-1.4.0-b2/DEBIAN/prerm
```

```bash
echo """#!/bin/bash
echo "sildim" >> /opt/ornek.txt
""" >  ornekpaket-1.4.0-b2/DEBIAN/postrm
```

Bu temel özellikler sonrasında en önemli ve aslında GNU/Linux dünyasında kurulum anlamına gelen dosyaların taşınması gerekmektedir. Daha doğrusu eğer uygulamanız tek bir dosya ise bunu **/usr/bin/**'in altına koymak gibi basit bir çözüm yapılabileceği gibi, daha karmaşık yapılar için **/usr/share/uygulamaadi/** şeklinde bir klasör altında çeşitli yapılar kurulabilir. Bu konuda başka yazı da yazmayı planlıyorum.

Bu kısımda hangi formatta oluşturmak istediğinize göre çalıştırılabilir dosya **/usr/bin/** klasörünüz içerisine atmanız gerekmektedir.

```bash
cp binarydosya ornekpaket-1.4.0-b2/usr/bin/uygulama
```

```
ornekpaket-1.4.0-b2/
└── DEBIAN/
└── usr/bin/uygulama		# Uygulama için gerekli herhangi bir dosya
```

veya

```bash
mkdir -p /usr/share/uygulamaadi/bin/
mkdir -p /usr/share/uygulamaadi/conf/
cp binarydosya ornekpaket-1.4.0-b2/usr/share/uygulamaadi/bin/uygulama
cp uygulama.conf ornekpaket-1.4.0-b2/usr/share/uygulamaadi/conf/uygulama.conf
```

```
ornekpaket-1.4.0-b2/
└── DEBIAN/
└── usr/share/uygulamaadi/bin/		# Uygulama için gerekli herhangi bir klasör
    └── uygulama					# Uygulama için gerekli dosya
└── usr/share/uygulamaadi/conf/		# Uygulama için gerekli herhangi bir klasör
    └── uygulama.conf				# Uygulama için gerekli dosya
```

Bu adımlardan sonra, [ilk yazıda](https://dev.to/aciklab/debian-tabanli-sistemler-icin-paket-olusturma-1-fnd) gördüğümüz şekilde build etmemiz gerekmektedir:

```bash
dpkg -b ornekpaket-1.4.0-b2 ./ornekpaket-1.4.0-b2.deb
```
veya
```bash
dpkg-deb --build ornekpaket-1.4.0-b2.deb
```


Ex nihilo nihil fit