DEV Community

Ali Orhun Akkirman for Açıklab

Posted on • Edited on

3

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

"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

Billboard image

The Next Generation Developer Platform

Coherence is the first Platform-as-a-Service you can control. Unlike "black-box" platforms that are opinionated about the infra you can deploy, Coherence is powered by CNC, the open-source IaC framework, which offers limitless customization.

Learn more

Top comments (0)

A Workflow Copilot. Tailored to You.

Pieces.app image

Our desktop app, with its intelligent copilot, streamlines coding by generating snippets, extracting code from screenshots, and accelerating problem-solving.

Read the docs

👋 Kindness is contagious

Explore a sea of insights with this enlightening post, highly esteemed within the nurturing DEV Community. Coders of all stripes are invited to participate and contribute to our shared knowledge.

Expressing gratitude with a simple "thank you" can make a big impact. Leave your thanks in the comments!

On DEV, exchanging ideas smooths our way and strengthens our community bonds. Found this useful? A quick note of thanks to the author can mean a lot.

Okay