Debian tabanlı sistemler için paket oluşturma - 2

Ali Orhun Akkirman - Mar 3 '20 - - Dev Community

"Debian tabanlı sistemler için paket oluşturma - 1" 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
Enter fullscreen mode Exit fullscreen mode

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.

echo """#!/bin/bash
echo "kuracağım" >> /opt/ornek.txt
""" >  ornekpaket-1.4.0-b2/DEBIAN/preinst
Enter fullscreen mode Exit fullscreen mode
echo """#!/bin/bash
echo "kurdum" >> /opt/ornek.txt
""" >  ornekpaket-1.4.0-b2/DEBIAN/postinst
Enter fullscreen mode Exit fullscreen mode
echo """#!/bin/bash
echo "sileceğim" >> /opt/ornek.txt
""" >  ornekpaket-1.4.0-b2/DEBIAN/prerm
Enter fullscreen mode Exit fullscreen mode
echo """#!/bin/bash
echo "sildim" >> /opt/ornek.txt
""" >  ornekpaket-1.4.0-b2/DEBIAN/postrm
Enter fullscreen mode Exit fullscreen mode

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.

cp binarydosya ornekpaket-1.4.0-b2/usr/bin/uygulama
Enter fullscreen mode Exit fullscreen mode
ornekpaket-1.4.0-b2/
└── DEBIAN/
└── usr/bin/uygulama      # Uygulama için gerekli herhangi bir dosya
Enter fullscreen mode Exit fullscreen mode

veya

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
Enter fullscreen mode Exit fullscreen mode
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
Enter fullscreen mode Exit fullscreen mode

Bu adımlardan sonra, ilk yazıda gördüğümüz şekilde build etmemiz gerekmektedir:

dpkg -b ornekpaket-1.4.0-b2 ./ornekpaket-1.4.0-b2.deb
Enter fullscreen mode Exit fullscreen mode

veya

dpkg-deb --build ornekpaket-1.4.0-b2.deb
Enter fullscreen mode Exit fullscreen mode

Ex nihilo nihil fit

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