DEV Community

Ali Orhun Akkirman for Açıklab

Posted on • Edited on

2 1

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

Debian tabanlı sistemler, yazılımların kurulabilmesi için "dpkg" (Debian PacKaGe) isimli yazılım kullanmaktadır. Günümüz kullanımlarında ise daha çok APT (Advanced Package Tool) isimli DPKG'yi yöneten "Paket Yönetim Sistemi" daha fazla duyulmaktadır. Özetle APT (aptitude, dselect, Ubuntu Software Center vb.) DPKG'nin en çok kullanılan önyüzlerinden birisidir. Kendi içerisinde paketlerin kurulması için kullandığı depo mantığı da bulunmaktadır. DPKG ise depo kavramından bağımsız Debian Paket Yapısı ile ilgilenmektedir.

Özet bilgi sonrasında bu yazıda APT ile ilgili bir konuya girilmeyeceğini belirtmek isterim. Bir debian sistemde Debian standartlarına ve paketlerine göre kurulan yazılımları "dpkg -l" komutu ile öğrenebilmektesiniz. Burada gördüğünüz paketlerden herhangi birisi için "-s" komutu kullanarak ilgili paketin detay bilgilerini öğrenebilirsiniz. Örneğin "dpkg -s bash" gibi. Bu çıktı, kontrol dosyası olarak yeni bir paket oluştururken girdiğiniz bilgileri vermektedir. Örnek bir çıktı aşağıdaki gibidir:

Package: bash
Essential: yes
Status: install ok installed
Priority: required
Section: shells
Installed-Size: 1588
Maintainer: Ubuntu Developers 
Architecture: amd64
Multi-Arch: foreign
Version: 4.4.18-2ubuntu1.2
Replaces: bash-completion (<< 20060301-0), bash-doc (<= 2.05-1)
Depends: base-files (>= 2.1.12), debianutils (>= 2.15)
Pre-Depends: libc6 (>= 2.15), libtinfo5 (>= 6)
Recommends: bash-completion (>= 20060301-0)
Suggests: bash-doc
Conflicts: bash-completion (<< 20060301-0)
Conffiles:
 /etc/bash.bashrc 3aa8b92d1dd6ddf4daaedc019662f1dc
 /etc/skel/.bash_logout 22bfb8c1dd94b5f3813a2b25da67463f
 /etc/skel/.bashrc 1f98b8f3f3c8f8927eca945d59dcc1c6
 /etc/skel/.profile f4e81ade7d6f9fb342541152d08e7a97
Description: GNU Bourne Again SHell
 Bash is an sh-compatible command language interpreter that executes
 commands read from the standard input or from a file.  Bash also
 incorporates useful features from the Korn and C shells (ksh and csh).
 Bash is ultimately intended to be a conformant implementation of the
 IEEE POSIX Shell and Tools specification (IEEE Working Group 1003.2).
 .
 The Programmable Completion Code, by Ian Macdonald, is now found in
 the bash-completion package.
Homepage: http://tiswww.case.edu/php/chet/bash/bashtop.html
Original-Maintainer: Matthias Klose
Enter fullscreen mode Exit fullscreen mode

Tüm maddeler için ayrı ayrı değerlendirme yazılabilir ama şuan için minimal gereksinimlerle başka bir pakette neler olabileceğini göstermek istiyorum. Daha doğrusu bir paket geliştirecekseniz aşağıdaki gibi bir "control" dosyası oluşturmanız gerekiyor.

Package: ornekpaket
Version: 1.4.0-b2
Maintainer: Ali Orhun <ali@orhun.org>
Description: Deneme paketi açıklaması
Homepage: https://github.com/aliorhun/deneme
Architecture: amd64
Depends: git, python3 (>=3.5)
Enter fullscreen mode Exit fullscreen mode

Bu kontrol dosyası cebimizde dururken bir debian paketi için nelerin minimum olarak gerektiğini de belirtelim isterseniz. İlgili paket için aşağıdaki gibi bir yapı gerekmektedir.

ornekpaket-1.4.0-b2/          # Ana Dizin
└── DEBIAN/                  # Standart Gerekli Dizin
    └── control                   # Standart Gerekli Dosya
Enter fullscreen mode Exit fullscreen mode

Dolayısıyla anladığımız kadarıyla paketimiz için bir klasör oluşturmamız ve ilgili klasör içinde DEBİAN isimli bir klasör oluşturup içerisine yukarıdaki gibi bir "control" isimli dosya oluşturmanız gerekmektedir.

mkdir -p ornekpaket-1.4.0-b2/DEBIAN
echo """Package: ornekpaket
Version: 1.4.0-b2
Maintainer: Ali Orhun <ali@orhun.org>
Description: Deneme paketi açıklaması
Homepage: https://github.com/aliorhun/deneme
Architecture: amd64
Depends: git, python3 (>=3.5)""" >  ornekpaket-1.4.0-b2/DEBIAN/control
Enter fullscreen mode Exit fullscreen mode

Bu adıma geldiyseniz sadece git ve python3 paketinin yüklenmesini zorunlu tutan bir ornekpaket uygulamasını deb paketi haline getirmek için bir eksiğiniz kalmadı. Bunun için aşağıdaki komut ile paketi oluşturabilirsiniz:

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

Bu komut çıktı olarak ornekpaket-1.4.0-b2.deb isimli dosyayı çıkartır ve kurulmaya hazır bir halde çalıştırılmayı beklemektedir. Paketin içerisindeki bilgileri görmek için ise "-I" parametresini kullanabilirsiniz.

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

Yanlışlıkla "-i" parametresini kullanırsanız paketi kuracağınızı unutmamalısınız. Makalenin başında belirttiğimiz "-s" parametresi ise kurulu paketlerin tam adının yazıldığı durumu içermekte idi. "-I" paramertesi ise ".deb" paketi içindeki bilgilendirmeyi yaptığını unutmayın.

Bu makalede temel bileşenleri anlatmak istediğim için şimdilik yarıda kesiyorum. Makalenin devamında detaylı içerikler eklenecektir. Daha ileri makalelerde ise APT aracı ve depo yönetim süreçlerinden bahsedeceğim.

Image of Datadog

The Future of AI, LLMs, and Observability on Google Cloud

Datadog sat down with Google’s Director of AI to discuss the current and future states of AI, ML, and LLMs on Google Cloud. Discover 7 key insights for technical leaders, covering everything from upskilling teams to observability best practices

Learn More

Top comments (0)

Image of Datadog

Create and maintain end-to-end frontend tests

Learn best practices on creating frontend tests, testing on-premise apps, integrating tests into your CI/CD pipeline, and using Datadog’s testing tunnel.

Download The Guide

👋 Kindness is contagious

Discover a treasure trove of wisdom within this insightful piece, highly respected in the nurturing DEV Community enviroment. Developers, whether novice or expert, are encouraged to participate and add to our shared knowledge basin.

A simple "thank you" can illuminate someone's day. Express your appreciation in the comments section!

On DEV, sharing ideas smoothens our journey and strengthens our community ties. Learn something useful? Offering a quick thanks to the author is deeply appreciated.

Okay