SlideShare a Scribd company logo
1 of 19
Download to read offline
Giriş
Paket Sistemi Nedir ve Faydaları
Linux Sistemlerde Bilinen Paket Yönetim Sistemleri
Linux Sistemlerde Bilinen Paket Türleri
Geliştirme için Kullanılacak Araçlar
Debian Tabanlı Sistemler için Paket Oluşturma
Debian (.deb) Paketi Nedir ?
Bağımlılık Nedir ?
Debian (.deb) Paketi Oluşturmak için Ön Gereksinimler
Paket Seçimi
Kaynak Koddan Kurulum
Debian (.deb) Paketi Oluşturma
Debian (.deb) Paketini Test Etmek
Varolan Bir Debian (.deb) Paketini Güncelleme
Manuel Debian (.deb) Paketi Oluşturma
Control dosyası
Preinst dosyası
Postinst dosyası
Postrm & Prerm dosyaları
Test Aşaması
Dizin Yapısını Görüntülemek
Yazar Hakkında
Giriş
Bu makalede tüm kullanıcıların anlayabileceği şekilde bir debian paketinin nasıl
hazırlanacağına değineceğim. Debian tabanlı sistemlerde hali hazırdaki base paket
deposunda çok geniş bir paket seti olmasına rağmen, bazen olmayan bir uygulamayı
yükleme ihtiyacı hasıl olabiliyor. Böyle bir durumda uygulamayı kaynak koddan
kurabileceğiniz gibi, uygulamayı .deb paketi haline getirmek sureti ile de paket yöneticisi
üzerinden doğrudan kurabilirsiniz.
Ayrıca, bazen de paket deposunda yer alan bir paketin kurulum değerleri bizler için yeterli
olmayabilir dolayısı ile kendi paketimizi hazırlamak isteriz. Örneğin, squid3 debian paket
depolarında var ve kuruluma hazır fakat bu kurulum ile squid için ihtiyaç duyabileceğimiz
sslbump​ özelliği gelmiyor, bir seçeneğiniz kaynak koddan kurmak iken diğer bir seçenek ise
bunu paket olarak hazırlamak.
Paket Sistemi Nedir ve Faydaları
Linux kullanıcıları ve sistem yöneticileri gereksinim duydukları programları, driver vb. sistem
araçları ile bağımlılıklarını kurmak için paket deposundan faydalanırlar.
Kullanıcıların bir uygulamayı kolay kurup yönetmesi için, ( güncelleme, kaldırma, versiyon
tabiki vb.) oluşturulan hazır kurulumlar paket olarak ifade edilmektedir.
Örneğin, linux tabanlı işletim sisteminize ( ubuntu, debian vb. ) chrome uygulamasını kurmak
istediğinizde, google’ın chrome için indirme adresini bulmak, sisteme indirmek ve ön
gereksinimleri tamamlandıktan sonra kurmak için vakit kaybetmenize gerek olmadan, hali
hazırda paket depolarında yer alan hazır kurulum paketinden faydalanarak kurmak ciddi
zaman kazandırır ve olası hataların önüne geçer. ​“apt-get install chromium”​ ile kurmak
saniyeler sürer.
Linux Sistemlerde Bilinen Paket Yönetim
Sistemleri
● APT, ( Advenced Package Tool ) :​ APT ‘nin amacı ise debian tabanlı linux
dağıtımlarını kullanan kullanıcıların hayatını kolaylaştırmak ve sistem paket
yönetiminin daha iyi anlaşılır bir şekilde yapılmasını sağlamaktır.
● YUM, ( Yellowdog Updater Modified ) :​ Red Hat türevi işletim sistemlerinde paket
yönetimi için kullanılmaktadır. Yum paket yönetimi özellikleri arasında ​paket kurmak​,
paket kaldırmak​, ​paket bilgisini görüntülemek​, ​güncelleme​, ​paket yükseltmek
gibi özellikler yer almaktadır.
● APTITUDE :​ Bu paket yöneticisi ise eskilerde özellikle bağımlılık çözerek kaldırma
işlemlerinde daha işlevsel aynı zamanda iyi bir paket yöneticisiydi. Bu paket
yöneticisi ( apt, yum vb.) diğer paket yöneticiler arasında çok fazla farklar
bulunmamaktadır. Bazı ufak tefek kullanım değişikliği haricinde hepsi aynı işlevi
görmektedirler.
● PKG : ​FreeBSD 10 işletim sistemi ile yeni gelen paket yönetimidir. Bu paket yönetim
aracının özellikleri arasında, ​paket kurmak​, ​kaldırmak​, ​güncellemek​, ​paketi
kilitlemek ​gibi özellikler yer almaktadır.
Linux Sistemlerde Bilinen Paket Türleri
Aşağıda linux türevi sistemlerde sık kullanılan paket türleri yer almaktadır.
● .rpm :​ Bu paket türü Red Hat tarafından linux için geliştirilmiş aynı zamanda birçok
güçlü özellikleri nedeniyle birçok linux dağıtımına uyarlanmıştır.
● .deb :​ Bu paket türü ise debian tabanlı linux işletim sistemleri için oluşturulmuş bir
paket türüdür.
Geliştirme için Kullanılacak Araçlar
Aşağıda bir ​.deb ​paketi hazırlamak için gerekli olan araçların ne işe yaradıkları anlatılmıştır.
● dpkg-dev : ​Debian kaynak paketlerini açmak (unpack), derlemek (build), karşıya
yükleme (upload), için gerekli araçları içerir.
● file :​ Bu araç bir dosyanın türünü belirlemek için kullanılır. ( file dosya_ismi )
● gcc :​ GNU projesi tarafından üretilen ve çeşitli programlama dillerini destekleyen bir
derleyici sistemidir. Bu paket ayrıca C önişlemcisi ve nesne dosyalarını çevirmek ve
ilintilemek için kullanılan araçları içeren ​binutils​ gibi çeşitli paketlere’de nüfuz eder.
● g++ : ​GNU C++ derleyicisi, eğer program C++ ile yazılmışsa gereklidir.
● libc6-dev :​ GCC ‘nin nesne dosyaları oluştururken ilintilemesi gereken C
kütüphaneleri ve başlık dosyaları.
● make :​ Genellikle bir programın derlenmesi, kurulması, sistemden kaldırılması,
derlenmiş olan dosyaları silmesi gibi işlemlerde kullanılır.
● patch :​ Bu araç farklılıklar listesi içeren bir dosyayı alır ( ​diff​ uygulaması tarafından
oluşturulmuş ) ve onu orjinal dosyaya uygular, sonucunda da yamalı sürüm üretilir.
● perl :​ Genellikle linux türevi sistemlerde en çok kullanılan betik dillerinden biridir.
● devscripts ​: Bu paket, paket bakımcılarına yardımcı olabilecek bazı betikler
içermektedir.
● fakeroot :​ Bu araç yapım derleme aşamasının bazı yerlerinde root gibi
davranmanıza izin vermektedir.
● gnupg :​ Paketleri sayısal olarak imzalamayı sağlayan bir araçtır.
● pbuilder : ​Bu paket chroot ortamını oluşturmak ve bakımını yapmak için gerekli
paketleri içerir.
● Lintian :​ Debian paketi yaptıktan sonra genel hataları bilmenizi sağlayan ve bulduğu
hataları açıklayan debian paket denetimcisidir.
● Linda :​ Buda bir başka debian paket denetimcisidir.
● dh-make ve debhelper :​ ​dh-make​ örnek paketinizin iskeletini oluşturmak için
gereklidir ve paketi oluştururken ‘de ​debhelper​ araçlarından bazılarını kullanacaktır.
Debian Tabanlı Sistemler için Paket Oluşturma
Debian (.deb) Paketi Nedir ?
Debian paketleri, ilgili komutları ya da özellikleri uygulamak için gerekli tüm dosyaları içeren
paketlerdir.
Debian paketleri ikiye ayrılır;
● Binary packages :​ Bu paket içerisinde çalıştırılabilir dosyalar, konfigürasyon
dosyaları, man/info sayfaları ve diğer dokümanlar bulunur. İkili paketler genellikle
.deb uzantısı ile ayırt edilir ve dpkg komutu ile kurulum yapılır.
● Source packages :​ Kaynak paketleri, bu paketin yapısını belirten .dsc dosyası,
orjinal kaynak kodunu arşiv içerisinde bulunduran .orig.tar.gz dosyası ve dosyadaki
debian-spesifik değişiklikleri içeren .diff.gz dosyasından oluşan paketlerdir.
Bağımlılık Nedir ?
Bağımlılık o paketin çalışabilmesi/derlenebilmesi için gereken paketlerdir.
İki çeşit bağımlılık vardır;
● Build Dependency : ​Paketin derlenebilmesi için gereken paketler.
● Runtime Dependency :​ Paketin çalışabilmesi için gereken paketler.
Debian (.deb) Paketi Oluşturmak için Ön Gereksinimler
Bir debian paketi hazırlamak için bazı ek paketlerin sisteme kurulması gerekmektedir.
Paketlerin sisteme düzgün bir şekilde yüklendiğinden emin olunuz. Öncelikle sistem
depolarını güncelleyip ardından güncellemeleri aldıktan sonra ikinci komutu kullanarak
gerekli araçlar sisteme kurulabilir.
NOT : ​Paketlerin düzgün bir şekilde sisteme kurulduklarından emin olunuz. Bu komutu
kullanarak kontrol edebilirsiniz (​ dpkg -s paket_ismi​ ).
root# ​apt-get update ; apt-get upgrade -y
root# ​aptitude install build-essential binutils fakeroot lintian debhelper dh-make devscripts patch
libc6-dev file checkinstall makefile
Paket Seçimi
Bir ​.deb​ paketi hazırlamadan önce aşağıdaki kontrolleri yapmanızı öneriyorum. Bu adımları
eksiksiz tamamladığınızdan emin olun.
● Hazırlanacak paketin debian depolarında olup olmadığını kontrol edebilirsiniz. Paket
depolarında aramak için ( ​apt-cache search paket_ismi ​) komutunu kullanabilir.
Eğer paket paket var ise direkt ( ​apt-get install paket_ismi )​ ile sisteme
kurabilirsiniz.
● Hazırlanacak programın ne tür bir lisansa sahip olduğunu kontrol edebilirsiniz. Özel
bir lisansa sahip ise programın sahibinden bizzat izin almanız gerekir. Fakat
programın lisansı GNU GPL veya GPL lisansı ise program üzerinde istediğinizi
yapabilirsiniz ancak kaynak kodu kapatmamak şartıyla. Daha fazla bilgi için ​bakınız​.
● Hazırlanacak programın .deb uzantılı paketin debian depolarına girmesini
sağlayabilirsiniz. Bunun için​ ​debiandevel@lists.debian.org​ mail listesi üzerinden
görüşebilirsiniz.
● Programın sistem için bir güvenlik zafiyeti oluşturmadığından emin olunuz. Eğer
güvenlik zafiyeti var ise programı .deb paketine dönüştürdükten sonra, linux tabanlı
işletim sistemlerine direkt kurulursa o sistem için bir güvenlik zafiyeti oluşturacaktır.
Kaynak Koddan Kurulum
Bu makalede örnek olarak kullanılan araç ​bzip2​ aracıdır. Bu örneğimde ​bzip2 ​aracını
kaynak koddan sisteme kurup daha sonra bunu ​.deb ​paketi haline getirmek yer alıyor.
Bu makaleyi yazarken tüm çalışmaları aşağıdaki işletim sistemi üzerinde gerçekleştirdim.
Farklı linux dağıtımlarında, komutlar ve bağımlılıklar değişiklik gösterebilir.
Kullanılan işletim sistemi özellikleri;
Distribütör ID :​ Debian
Açıklama :​ Debian GNU/Linux 8.1 (jessie)
Sürüm :​ 8.1
Kod adı :​ jessie
Başlayalım
İlk önce herhangi bir dizin içerisinde kurulum adında bir dizin oluşturulur ve içerisine girilir
hemen ardından örnek olarak kullanılacak araç indirilir. Bu örnekte ​/home​ dizini içerisinde
kurulum​ adında bir dizin oluşturulmuştur ve içerisine girilmiştir, ardından araç indirilmiştir.
root#​ cd /home/ ; mkdir kurulum ; cd kurulum
root# ​wget http://www.bzip.org/1.0.6/bzip2-1.0.6.tar.gz
Sisteme kurulacak olan aracı ​tar​ komutu ile kurulum adlı dizin içerisine açalım ve açılan
dizine girelim.
root# ​tar xvf bzip2-1.0.6.tar.gz
root#​ cd bzip2-1.0.6
Genellikle tüm programların kaynak kodu ile birlikte ​INSTALL​ ve ​README​ dosyaları
gelmektedir. Bir programın ne işe yaradığını, nasıl çalıştığını, nasıl kurulacağını,
bağımlılıkları gibi bilgileri bilmiyorsanız bu dosyaları okumanızda fayda var.
NOT :​ Aşağıdaki adımları uygularken ​bzip2-1.0.6/ ​dizini içerisinde olmalısınız.
root# ​ make
root#​ make install
Debian (.deb) Paketi Oluşturma
Sisteme kurduğumuz bzip2 aracını .deb paketine dönüştürmek için aşağıdaki komutu
kullanabiliriz. ​Aşağıdaki menüde değişiklik yapmak istediğimiz bilgiye ait numarayı girerek
ilgili alanı düzenleyebiliriz. Bir şey değiştirmek istemiyorsak doğrudan ​enter​ tuşuna basarak
devam edebiliriz.
NOT : ​Burada ​dh_make​ komutunu kullanmadım, çünkü çok eskide kaldı onun yerine
debmake​, ​checkinstall​ araçları daha rahat, kullanışlı olduğu için bu aracı kullanacağım.
root#​ checkinstall -D make install
*****************************************
**** Debian package creation selected ***
*****************************************
This package will be built according to these values:
0 - Maintainer: [ ucribrahim@gmail.com ]
1 - Summary: [ Benim örnek .deb paketim. ]
2 - Name: [ bzip2 ]
3 - Version: [ 1.0.6 ]
4 - Release: [ 1 ]
5 - License: [ GPL ]
6 - Group: [ checkinstall ]
7 - Architecture: [ amd64 ]
8 - Source location: [ bzip2-1.0.6 ]
9 - Alternate source location: [ ]
10 - Requires: [ ]
11 - Provides: [ bzip2 ]
Enter a number to change any of them or press ENTER to continue:
Installing with make install...
========================= ​Installation results​ ===========================
if ( test ! -d /usr/local/bin ) ; then mkdir -p /usr/local/bin ; fi
if ( test ! -d /usr/local/lib ) ; then mkdir -p /usr/local/lib ; fi
if ( test ! -d /usr/local/man ) ; then mkdir -p /usr/local/man ; fi
chmod a+r /usr/local/man/man1/bzmore.1
chmod a+r /usr/local/man/man1/bzdiff.1
echo ".so man1/bzgrep.1" > /usr/local/man/man1/bzegrep.1
======================== ​Installation successful ​==========================
Copying documentation directory...
./
./LICENSE
./README.XML.STUFF
./README.COMPILATION.PROBLEMS
./README
./CHANGES
Copying files to the temporary directory...OK
Compressing man pages...OK
Building file list...OK
Deleting temp dir...OK
**********************************************************************
Done. The new package has been installed and saved to
/home//kurulum/bzip2-1.0.6/bzip2_1.0.6-1_amd64.deb
You can remove it from your system anytime using:
​dpkg -r bzip2
***********************************************************************
Yukarıdaki çıktıda gördüğünüz üzere bzip2 paketimiz hazırlanmış demektir. Hazırladığımız
.deb paketine ​/home/kurulum/bzip2-1.0.6/bzip2_1.0.6-1_amd64.deb ​yolundan ulaşabiliriz.
Silmek istersek ​dpkg -r bzip2​ komutunu kullanabiliriz.
Debian (.deb) Paketini Test Etmek
Hazırladığımız .deb paketini diğer bir debian tabanlı işletim sistemine ​scp​ aracını vb.
araçlarına kullanarak gönderebilirsiniz ve aşağıdaki komutu kullanarak sisteme
hazırladığımız paketi kurabilir, test edebiliriz. Bunun sonunda zamandan tasavvuf etmiş
olacağız ve her seferinden kaynak koddan kurma derdimiz olmayacak.
root# ​dpkg -i bzip2_1.0.6-1_amd64.deb
Varolan Bir Debian (.deb) Paketini Güncelleme
Hazırladığımız .deb paketinin güncellemesini almak istersek aşağıdaki komutu kullanabiliriz.
root#​ apt-get install apt-file -y
root# ​apt-file update bzip2_1.0.6-1_amd64.deb
Manuel Debian (.deb) Paketi Oluşturma
Bu bölümde ise herhangi bir aracın kaynak kodunu kullanmadan, kendi dosyalarımızı
oluşturup bash ile bu dosyaların içerisine gerekli olan komutları yazıp, bize ait bir .deb paketi
hazırlayacağız.
Konuya başlamadan önce kullanacağımız dosyaların ne işe yaradıklarına bakalım;
DEBIAN/control :​ Bu dosya yazmış olduğumuz uygulamanın ismini, versiyonunu, boyutu,
açıklama, bağımlılıklarının yazıldığı dosyadır. Bu dosyanın içeriği aşağıdaki gibidir.
Package :​ Uygulamanın adı.
Version : ​Uygulamanının versiyon numarası.
Source :​ Uygulamanın adı yazılabilir.
Section :​ Uygulamanın hangi kategoriye girdiği.
Priority :​ Uygulamanın sistem için gerekliliği.
Maintainer :​ Geliştiricini mail adresi veya ismi.
Architecture :​ Hangi mimariler için olduğu.
Depends :​ Hangi paketlere bağımlılık duyduğu. Burada paket isimlerini virgül (,) ile
ayırıyoruz.
Description :​ Uygulamanın ne ile alakalı olduğunu veren ufak bir yazı yazılabilir.
DEBIAN/preinst : ​Bu dosya uygulama kurulurken çalışan ilk dosyadır. Bu dosyanın içine
genellikle güncelleme yapılırken yedek alma komutları yazılır. Bu komutları bash ile vb. bir
başka dil ile yazabilirsiniz.
DEBIAN/postinst : ​Bu dosya ise preinst dosyasından sonra çalışan bir dosyadır. Bu
dosyanın içerisine uygulamayı kurduktan sonra yapılacak işlemler için komutlar yazılır.
DEBIAN/postrm or DEBIAN/prerm: ​Bu iki dosyadan herhangi birisi ise uygulamanın
sistemden kaldırmak için yazacağınız komutların olduğu dosyalardır.
DEBIAN/copyright :​ Debian için bu dosya bir paket hakkında lisans bilgisini içermektedir.
Debian Özgür Yazılım Rehberi ​sitesinden lisans dağıtımı kısmını inceleyebilirsiniz.
DEBIAN/rules : ​Debian paketiniz için bir ​Makefile​ dosyasıdır. Bir debian paketi dpkg
komutu ile kurulurken bu dosyadaki bilgilere göre kurulur.
DEBIAN/changelog : ​Bu dosya, programın gelişimini anlatan bir seyir defteridir. Programın
kaynağından bağımsız bir şeyler yaptıysanız veya bazı hataları giderdi iseniz bu dosyanın
içerisine yazabilirsiniz.
DEBIAN/readme & DEBIAN/install : ​Bu iki dosya kullanıcıları bilgilendirmek için
kullanılmaktadır. Genellikle bu dosyanın içerisine programın nasıl kurulacağını veya ne işe
yaradığını yazabilirsiniz.
Başlayalım
İlk önce​ /home​ dizini içerisinde ​deneme​ adında bir dizin oluşturulur.
root# ​mkdir /home/ibrahim/deneme
ardından ​dosya.tar.gz​ adlı bir dosya oluşturun içerisinde bir tane ​test.txt​ dosya olsun. Daha
sonra aşağıdaki komut kullanılarak ​deneme​ adlı dizin içerisinde ​tmp​ adında bir dizin
oluşturulur ve oluşturulan ​dosya.tar.gz​ dosyasını oluşturduğumuz bu ​tmp​ dizini içerisine
atılır.
NOT :​ tar.gz dosyası gerekli olan yere atıldıktan sonra açılmamalıdır. Dosyanın içeriğini
görmek isterseniz​ tar tf dosya.tar.gz​ komutu kullanılabilir.
root# ​mkdir /home/ibrahim/deneme/tmp
root# ​cp /home/dosya.tar.gz /home/ibrahim/deneme/tmp/
Daha sonra aşağıdaki komut kullanılarak ​/home/ibrahim/deneme/​ adlı dizin içerisine
DEBIAN​ (​DEBIAN adı ile oluşturulmalıdır!)​ adında bir klasör oluşturulur. Hemen ardından
oluşturduğumuz ​DEBIAN​ dizini içerisine girip, gerekli olan dosyalar oluşturulur.
root# ​mkdir /home/ibrahim/deneme/DEBIAN
root# ​cd /home/ibrahim/deneme/DEBIAN
root# ​touch control postinst prerm
root# ​ls -l
Control dosyası
Bu dosya uygulamanın ismini, versiyonunu, boyutu, bağımlılıkları gibi bilgilerin yazıldığı
dosyadır. Bu dosyanın içeriği aşağıdaki gibidir. Aşağıdaki gibi yazdıktan sonra​ CTRL+O
kombinasyonuna basıp ardından ​enter​ tuşuna basarak kaydedilir ardından çıkmak için ise
CTRL+X ​kombinasyonuna basabilirsiniz.
NOT : ​Bu alanda kendinize göre yeni alanlar ekleyebilir veya üzerlerinde değişiklik
yapabilirsiniz.
root# ​nano control
Package: deneme
Version: 1.1.1
Architecture: all
Essential: no
Section: web
Priority: optional
Depends: php5 (>=2.3), php5-mysql
Maintainer: İbrahim UÇAR
Description: Bu benim örnek .deb paketim.
Preinst dosyası
Bu dosya ise, uygulama kurulurken çalışan ilk dosyadır. Genellikle bu dosyanın içerisine
güncelleme yapılırken veya yedek alma gibi komutlar yazılır. Bu dosya benim örneğimde
olmadığı için bu dosyayı kullanmayacağım. Bir uygulamanın güncellemesinin kontrol
edilmesi istiyorsanız bu dosyayı mutlaka oluşturup gerekli olan komut yazmanız gerekir.
Postinst dosyası
Bu dosya ( preinst ) dosyasından sonra çalışan dosyadır. Bu dosyanın içerisine uygulama
kurulduktan sonra yapılacak işlemler yazılır. Aşağıda bash ile yazılmış örnek komutlar
bulunmaktadır. Kısaca açıklamak gerekirse, paket sisteme kurulduktan sonra​ /tmp​ dizini
içerisine deneme adında bir dizin oluşturulacak, ardından bir üst dizinde yer alan
dosya.tar.gz ​adlı dosyayı oluşturulan ​/tmp/deneme​ adlı dizin içerisine açacaktır.
root# ​nano postinst
#!/bin/sh
DOSYA=dosya.tar.gz
DIZIN=deneme
mkdir -p "/tmp/$DIZIN"
tar xf "/tmp/$DOSYA" -C "/tmp/$DIZIN/"
Postrm & Prerm dosyaları
Bu iki dosya isimleri birbirinden farklı fakat aynı işlevi görmektedirler. Bu iki dosyadan
herhangi birisinin içerisine uygulamayı sistemden kaldırmak için komutlar yazacağız.
Aşağıdaki bash komutlarını prerm adlı dosyanın içerisine yazıyoruz. Bir kullanıcı ​( dpkg -r,
apt-get remove ) ​komutları kullanıp bir programı sistemden kaldırınca çalışacak olan dosya
aşağıdaki gibidir.
NOT :​ Benim örneğimde ​/tmp/deneme​ adlı dizini silmek yer almaktadır. Ve ona göre bash
komutu yazılmıştır.
root# ​nano prerm
#!/bin/sh
if [ "$1" = "remove" ]; then
rm -rf /tmp/deneme
fi
Şimdi ise .deb paketi nasıl oluşturulur bunu inceleyeceğiz. Aşağıdaki komutlardan herhangi
birisini kullanarak .deb paketi oluşturma işlemini tamamlamış olacağız ve elimizde kendimize
ait bir debian paketi olacaktır.
● Birinci komutta varolan dizin ismi ile .deb paketinin oluşturulmasını sağladık.
● İkinci komutta ise farklı bir isim belirterek verilen isim ile oluşturulmasını sağladık.
root# ​dpkg-deb --build /home/ibrahim/deneme/
dpkg-deb: building package `deneme' in `deneme.deb'.
root# ​ls
deneme ​deneme.deb
root# ​dpkg-deb --build /home/ibrahim/deneme/ deneme.1.2.3.deb
dpkg-deb: building package `deneme' in `deneme.1.2.3.deb'.
root# ​ls
deneme ​deneme.1.2.3.deb
Oluşturmuş olduğumuz .deb paketini sisteme kurmak istersek aşağıdaki komutu
kullanabiliriz.
root# ​dpkg -i deneme.deb
veya
root# ​dpkg -i deneme.1.2.3.deb
Eğer sisteme kurduğumuz paketi silmek istersek aşağıdaki komutu kullanabiliriz.
root# ​dpkg -r deneme.deb
veya
root# ​dpkg -r deneme.1.2.3.deb
Test Aşaması
Bu aşamada ise elle yapmış olduğumuz .deb paketinin çalışıp/çalışmadığının kontrolünü
yapacağız. Aşağıdaki adımları takip edebilirsiniz.
Aşağıdaki komutu kullandıktan sonra ​/tmp/​ dizini içerisine ​deneme​ adlı bir dizin
oluşturulacak ardından ​dosya.tar.gz ​dosyası ​/tmp/deneme​ adlı dizin içerisine açılacaktır.
Eğer bu adımlar eksik ise herhangi bir yerde bir hata yapmış olabilirsiniz. Aşağıda görüldüğü
üzere herhangi bir problem yok başarılı bir şekilde gerekli olan dosya gerekli olan yere
açılmıştır.
root# ​dpkg -i deneme.1.2.3.deb
( Reading database ... 130889 files and directories currently installed.)
Preparing to unpack deneme.1.2.3.deb ...
Unpacking deneme (1.4.2) ...
Setting up deneme (1.4.2) …
root# ​ls -alh /tmp/deneme/ibrahimucar/
-rwxrwxr-x 1 ibrahim ibrahim 67 Nov 6 04:37 test.txt
Eğer kurmuş olduğumuz bu .deb paketini sistemden kaldırmak istersek aşağıdaki komutu
kullanabiliriz. Daha sonra​ /tmp/deneme/ibrahimucar​ dizini içerisine bakabiliriz ve öyle bir
dosyanın var olmadığını görebiliriz.
root# ​dpkg -r deneme.1.2.3
( Reading database ... 130889 files and directories currently installed.)
Preparing to unpack deneme.1.2.3.deb ...
Unpacking deneme (1.4.2) ...
Setting up deneme (1.4.2) …
root# ​ls -alh /tmp/deneme/ibrahimucar/
ls: cannot access /tmp/deneme/ibrahimucar/: No such file or directory
Dizin Yapısını Görüntülemek
Son olarak tüm işlemler bittikten sonra oluşturduğumuz dizinin yapısını görmek istersek
aşağıdaki komutu kullanabiliriz.
root# ​tree deneme
├── DEBIAN
│ ├── conffiles
│ ├── control
│ ├── postinst
│ └── prerm
└── tmp
└── dosya.tar.gz
2 directories, 5 files
Yazar Hakkında
Yazar: İbrahim UÇAR
İlk Yayımlanma Tarih: 16.01.2017
İletişim Bilgileri;
● ucribrahim@gmail.com
● twitter.com/ucribrahim
● lifeoverlinux.com

More Related Content

What's hot

What's hot (20)

Unix Denetim Dokümanı
Unix Denetim DokümanıUnix Denetim Dokümanı
Unix Denetim Dokümanı
 
Linux'a Giris ve VirtualBox a Ubuntu Kurulumu
Linux'a Giris ve VirtualBox a Ubuntu KurulumuLinux'a Giris ve VirtualBox a Ubuntu Kurulumu
Linux'a Giris ve VirtualBox a Ubuntu Kurulumu
 
Linux Kullanım Rehberi
Linux Kullanım RehberiLinux Kullanım Rehberi
Linux Kullanım Rehberi
 
Linux 101
Linux 101Linux 101
Linux 101
 
Linux sunum
Linux sunumLinux sunum
Linux sunum
 
Linux101
Linux101Linux101
Linux101
 
BTRisk Adli Bilişim Eğitimi Sunumu
BTRisk Adli Bilişim Eğitimi SunumuBTRisk Adli Bilişim Eğitimi Sunumu
BTRisk Adli Bilişim Eğitimi Sunumu
 
Linux Sistem Yönetimi
Linux Sistem YönetimiLinux Sistem Yönetimi
Linux Sistem Yönetimi
 
Komut Satırıdından Arch Linux Kurulumu(Manuel Çekirdek Derlemesi Dahil)
Komut Satırıdından Arch Linux Kurulumu(Manuel Çekirdek Derlemesi Dahil)Komut Satırıdından Arch Linux Kurulumu(Manuel Çekirdek Derlemesi Dahil)
Komut Satırıdından Arch Linux Kurulumu(Manuel Çekirdek Derlemesi Dahil)
 
Linux101 - Standart Gi̇rdi-Çıktı
Linux101 - Standart Gi̇rdi-ÇıktıLinux101 - Standart Gi̇rdi-Çıktı
Linux101 - Standart Gi̇rdi-Çıktı
 
Introduction to BASH and Terminal
Introduction to BASH and TerminalIntroduction to BASH and Terminal
Introduction to BASH and Terminal
 
Ubuntu Linux
Ubuntu LinuxUbuntu Linux
Ubuntu Linux
 
Mehmetözcan 20102846
Mehmetözcan 20102846Mehmetözcan 20102846
Mehmetözcan 20102846
 
Linux101
Linux101Linux101
Linux101
 
Bilgi Sistemleri Güvenliği Metasploit
Bilgi Sistemleri Güvenliği MetasploitBilgi Sistemleri Güvenliği Metasploit
Bilgi Sistemleri Güvenliği Metasploit
 
Ubuntu sunum...
Ubuntu   sunum...Ubuntu   sunum...
Ubuntu sunum...
 
Siber Güvenlik 3.hafta
Siber Güvenlik 3.haftaSiber Güvenlik 3.hafta
Siber Güvenlik 3.hafta
 
Sızma Testi ve Güvenlik Denetlemeleri - Temel Linux Bilgisi
Sızma Testi ve Güvenlik Denetlemeleri - Temel Linux BilgisiSızma Testi ve Güvenlik Denetlemeleri - Temel Linux Bilgisi
Sızma Testi ve Güvenlik Denetlemeleri - Temel Linux Bilgisi
 
Kali linux
Kali linuxKali linux
Kali linux
 
Kali ile Linux'e Giriş | IntelRAD
Kali ile Linux'e Giriş | IntelRADKali ile Linux'e Giriş | IntelRAD
Kali ile Linux'e Giriş | IntelRAD
 

Viewers also liked

Red-Hat 7 Yeni Güvenlik Duvarı : firewalld
Red-Hat 7 Yeni Güvenlik Duvarı : firewalldRed-Hat 7 Yeni Güvenlik Duvarı : firewalld
Red-Hat 7 Yeni Güvenlik Duvarı : firewalldİbrahim UÇAR
 
İş Ortamlarına Saldırı Tespit Sisteminin Kurulması
İş Ortamlarına Saldırı Tespit Sisteminin Kurulmasıİş Ortamlarına Saldırı Tespit Sisteminin Kurulması
İş Ortamlarına Saldırı Tespit Sisteminin Kurulmasıİbrahim UÇAR
 
How to Build Package in Linux Based Systems.
How to Build Package in Linux Based Systems.How to Build Package in Linux Based Systems.
How to Build Package in Linux Based Systems.İbrahim UÇAR
 
Linux Yaz Kampı 2016 pfSense Firewall ve Router Eğitim Dökümanı
Linux Yaz Kampı 2016 pfSense Firewall ve Router Eğitim DökümanıLinux Yaz Kampı 2016 pfSense Firewall ve Router Eğitim Dökümanı
Linux Yaz Kampı 2016 pfSense Firewall ve Router Eğitim Dökümanıİbrahim UÇAR
 
BİLGİSAYAR AĞLARI VE İNTERNET
BİLGİSAYAR AĞLARI VE İNTERNETBİLGİSAYAR AĞLARI VE İNTERNET
BİLGİSAYAR AĞLARI VE İNTERNETsemravural
 
İşletim Sistemleri ve Dosya Yönetimi
İşletim Sistemleri ve Dosya Yönetimiİşletim Sistemleri ve Dosya Yönetimi
İşletim Sistemleri ve Dosya YönetimiSakarya Üniversitesi
 
Pfsense başlangıç
Pfsense başlangıçPfsense başlangıç
Pfsense başlangıçsmartpro
 
HTTPS Ne Kadar Güvenlidir?(sslstrip)
HTTPS Ne Kadar Güvenlidir?(sslstrip)HTTPS Ne Kadar Güvenlidir?(sslstrip)
HTTPS Ne Kadar Güvenlidir?(sslstrip)BGA Cyber Security
 
Nessus Kullanım Kitapçığı
Nessus Kullanım KitapçığıNessus Kullanım Kitapçığı
Nessus Kullanım KitapçığıBGA Cyber Security
 
Beyaz Şapkalı Hacker CEH Eğitimi - Bölüm 10, 11, 12
Beyaz Şapkalı Hacker CEH Eğitimi - Bölüm 10, 11, 12Beyaz Şapkalı Hacker CEH Eğitimi - Bölüm 10, 11, 12
Beyaz Şapkalı Hacker CEH Eğitimi - Bölüm 10, 11, 12BGA Cyber Security
 
Beyaz Şapkalı Hacker CEH Eğitimi - Bölüm 13, 14, 15
Beyaz Şapkalı Hacker CEH Eğitimi - Bölüm 13, 14, 15Beyaz Şapkalı Hacker CEH Eğitimi - Bölüm 13, 14, 15
Beyaz Şapkalı Hacker CEH Eğitimi - Bölüm 13, 14, 15BGA Cyber Security
 
Beyaz Şapkalı Hacker CEH Eğitimi - Bölüm 19
Beyaz Şapkalı Hacker CEH Eğitimi - Bölüm 19Beyaz Şapkalı Hacker CEH Eğitimi - Bölüm 19
Beyaz Şapkalı Hacker CEH Eğitimi - Bölüm 19BGA Cyber Security
 
Beyaz Şapkalı Hacker CEH Eğitimi - Bölüm 4, 5, 6
Beyaz Şapkalı Hacker CEH Eğitimi - Bölüm 4, 5, 6Beyaz Şapkalı Hacker CEH Eğitimi - Bölüm 4, 5, 6
Beyaz Şapkalı Hacker CEH Eğitimi - Bölüm 4, 5, 6BGA Cyber Security
 
Beyaz Şapkalı Hacker CEH Eğitimi - Bölüm 7, 8, 9
Beyaz Şapkalı Hacker CEH Eğitimi - Bölüm 7, 8, 9Beyaz Şapkalı Hacker CEH Eğitimi - Bölüm 7, 8, 9
Beyaz Şapkalı Hacker CEH Eğitimi - Bölüm 7, 8, 9BGA Cyber Security
 
Beyaz Şapkalı Hacker CEH Eğitimi - Bölüm 1, 2, 3
Beyaz Şapkalı Hacker CEH Eğitimi - Bölüm 1, 2, 3Beyaz Şapkalı Hacker CEH Eğitimi - Bölüm 1, 2, 3
Beyaz Şapkalı Hacker CEH Eğitimi - Bölüm 1, 2, 3BGA Cyber Security
 
Beyaz Şapkalı Hacker CEH Eğitimi - Bölüm 16, 17, 18
Beyaz Şapkalı Hacker CEH Eğitimi - Bölüm 16, 17, 18Beyaz Şapkalı Hacker CEH Eğitimi - Bölüm 16, 17, 18
Beyaz Şapkalı Hacker CEH Eğitimi - Bölüm 16, 17, 18BGA Cyber Security
 

Viewers also liked (17)

Red-Hat 7 Yeni Güvenlik Duvarı : firewalld
Red-Hat 7 Yeni Güvenlik Duvarı : firewalldRed-Hat 7 Yeni Güvenlik Duvarı : firewalld
Red-Hat 7 Yeni Güvenlik Duvarı : firewalld
 
İş Ortamlarına Saldırı Tespit Sisteminin Kurulması
İş Ortamlarına Saldırı Tespit Sisteminin Kurulmasıİş Ortamlarına Saldırı Tespit Sisteminin Kurulması
İş Ortamlarına Saldırı Tespit Sisteminin Kurulması
 
How to Build Package in Linux Based Systems.
How to Build Package in Linux Based Systems.How to Build Package in Linux Based Systems.
How to Build Package in Linux Based Systems.
 
Linux Yaz Kampı 2016 pfSense Firewall ve Router Eğitim Dökümanı
Linux Yaz Kampı 2016 pfSense Firewall ve Router Eğitim DökümanıLinux Yaz Kampı 2016 pfSense Firewall ve Router Eğitim Dökümanı
Linux Yaz Kampı 2016 pfSense Firewall ve Router Eğitim Dökümanı
 
Tabletsunu
TabletsunuTabletsunu
Tabletsunu
 
BİLGİSAYAR AĞLARI VE İNTERNET
BİLGİSAYAR AĞLARI VE İNTERNETBİLGİSAYAR AĞLARI VE İNTERNET
BİLGİSAYAR AĞLARI VE İNTERNET
 
İşletim Sistemleri ve Dosya Yönetimi
İşletim Sistemleri ve Dosya Yönetimiİşletim Sistemleri ve Dosya Yönetimi
İşletim Sistemleri ve Dosya Yönetimi
 
Pfsense başlangıç
Pfsense başlangıçPfsense başlangıç
Pfsense başlangıç
 
HTTPS Ne Kadar Güvenlidir?(sslstrip)
HTTPS Ne Kadar Güvenlidir?(sslstrip)HTTPS Ne Kadar Güvenlidir?(sslstrip)
HTTPS Ne Kadar Güvenlidir?(sslstrip)
 
Nessus Kullanım Kitapçığı
Nessus Kullanım KitapçığıNessus Kullanım Kitapçığı
Nessus Kullanım Kitapçığı
 
Beyaz Şapkalı Hacker CEH Eğitimi - Bölüm 10, 11, 12
Beyaz Şapkalı Hacker CEH Eğitimi - Bölüm 10, 11, 12Beyaz Şapkalı Hacker CEH Eğitimi - Bölüm 10, 11, 12
Beyaz Şapkalı Hacker CEH Eğitimi - Bölüm 10, 11, 12
 
Beyaz Şapkalı Hacker CEH Eğitimi - Bölüm 13, 14, 15
Beyaz Şapkalı Hacker CEH Eğitimi - Bölüm 13, 14, 15Beyaz Şapkalı Hacker CEH Eğitimi - Bölüm 13, 14, 15
Beyaz Şapkalı Hacker CEH Eğitimi - Bölüm 13, 14, 15
 
Beyaz Şapkalı Hacker CEH Eğitimi - Bölüm 19
Beyaz Şapkalı Hacker CEH Eğitimi - Bölüm 19Beyaz Şapkalı Hacker CEH Eğitimi - Bölüm 19
Beyaz Şapkalı Hacker CEH Eğitimi - Bölüm 19
 
Beyaz Şapkalı Hacker CEH Eğitimi - Bölüm 4, 5, 6
Beyaz Şapkalı Hacker CEH Eğitimi - Bölüm 4, 5, 6Beyaz Şapkalı Hacker CEH Eğitimi - Bölüm 4, 5, 6
Beyaz Şapkalı Hacker CEH Eğitimi - Bölüm 4, 5, 6
 
Beyaz Şapkalı Hacker CEH Eğitimi - Bölüm 7, 8, 9
Beyaz Şapkalı Hacker CEH Eğitimi - Bölüm 7, 8, 9Beyaz Şapkalı Hacker CEH Eğitimi - Bölüm 7, 8, 9
Beyaz Şapkalı Hacker CEH Eğitimi - Bölüm 7, 8, 9
 
Beyaz Şapkalı Hacker CEH Eğitimi - Bölüm 1, 2, 3
Beyaz Şapkalı Hacker CEH Eğitimi - Bölüm 1, 2, 3Beyaz Şapkalı Hacker CEH Eğitimi - Bölüm 1, 2, 3
Beyaz Şapkalı Hacker CEH Eğitimi - Bölüm 1, 2, 3
 
Beyaz Şapkalı Hacker CEH Eğitimi - Bölüm 16, 17, 18
Beyaz Şapkalı Hacker CEH Eğitimi - Bölüm 16, 17, 18Beyaz Şapkalı Hacker CEH Eğitimi - Bölüm 16, 17, 18
Beyaz Şapkalı Hacker CEH Eğitimi - Bölüm 16, 17, 18
 

Similar to Linux Türevi İşletim Sistemlerinde Paket Hazırlama.

Git, Github, Versiyon Kontrolü 101
Git, Github, Versiyon Kontrolü 101Git, Github, Versiyon Kontrolü 101
Git, Github, Versiyon Kontrolü 101OnurSercanYlmaz
 
Açık Kaynak Kodlu Yazılım Geliştirme
Açık Kaynak Kodlu Yazılım GeliştirmeAçık Kaynak Kodlu Yazılım Geliştirme
Açık Kaynak Kodlu Yazılım GeliştirmeSerkan Kaba
 
Kubuntu IşLetim Sistemleri
Kubuntu IşLetim SistemleriKubuntu IşLetim Sistemleri
Kubuntu IşLetim Sistemleriismailkilic
 
Git Sürüm Takip Sistemi
Git Sürüm Takip SistemiGit Sürüm Takip Sistemi
Git Sürüm Takip Sistemiözge Barbaros
 
Acik kaynak program_kurulumu_mseml
Acik kaynak program_kurulumu_msemlAcik kaynak program_kurulumu_mseml
Acik kaynak program_kurulumu_msemlmimarsinantl
 
GNU/Linux Masaüstü Kullanımı
GNU/Linux Masaüstü KullanımıGNU/Linux Masaüstü Kullanımı
GNU/Linux Masaüstü Kullanımıgulsah_kose
 
Abapgit kurulum kullanım
Abapgit kurulum kullanımAbapgit kurulum kullanım
Abapgit kurulum kullanımEliflknurNACAR
 
Ag konf scriptleri_mseml
Ag konf scriptleri_msemlAg konf scriptleri_mseml
Ag konf scriptleri_msemlmimarsinantl
 
Linux İşletim Sistemi - Güncelleme-2018
Linux İşletim Sistemi - Güncelleme-2018Linux İşletim Sistemi - Güncelleme-2018
Linux İşletim Sistemi - Güncelleme-2018Murat KARA
 
Development of Dynamic Engine and Graphical User Interface Software for Railw...
Development of Dynamic Engine and Graphical User Interface Software for Railw...Development of Dynamic Engine and Graphical User Interface Software for Railw...
Development of Dynamic Engine and Graphical User Interface Software for Railw...Mahmut Bulut
 
Android mimari-cekirdek-binding-scheduler
Android mimari-cekirdek-binding-schedulerAndroid mimari-cekirdek-binding-scheduler
Android mimari-cekirdek-binding-schedulerErcan Pinar
 

Similar to Linux Türevi İşletim Sistemlerinde Paket Hazırlama. (20)

Git, Github, Versiyon Kontrolü 101
Git, Github, Versiyon Kontrolü 101Git, Github, Versiyon Kontrolü 101
Git, Github, Versiyon Kontrolü 101
 
Açık Kaynak Kodlu Yazılım Geliştirme
Açık Kaynak Kodlu Yazılım GeliştirmeAçık Kaynak Kodlu Yazılım Geliştirme
Açık Kaynak Kodlu Yazılım Geliştirme
 
Kubuntu IşLetim Sistemleri
Kubuntu IşLetim SistemleriKubuntu IşLetim Sistemleri
Kubuntu IşLetim Sistemleri
 
Pfe101 unite01
Pfe101 unite01Pfe101 unite01
Pfe101 unite01
 
Git Sürüm Takip Sistemi
Git Sürüm Takip SistemiGit Sürüm Takip Sistemi
Git Sürüm Takip Sistemi
 
Puppet ile Linux Sistem Yönetimi Otomasyonu
Puppet ile Linux Sistem Yönetimi OtomasyonuPuppet ile Linux Sistem Yönetimi Otomasyonu
Puppet ile Linux Sistem Yönetimi Otomasyonu
 
Acik kaynak program_kurulumu_mseml
Acik kaynak program_kurulumu_msemlAcik kaynak program_kurulumu_mseml
Acik kaynak program_kurulumu_mseml
 
GNU/Linux Masaüstü Kullanımı
GNU/Linux Masaüstü KullanımıGNU/Linux Masaüstü Kullanımı
GNU/Linux Masaüstü Kullanımı
 
Abapgit kurulum kullanım
Abapgit kurulum kullanımAbapgit kurulum kullanım
Abapgit kurulum kullanım
 
Ag konf scriptleri_mseml
Ag konf scriptleri_msemlAg konf scriptleri_mseml
Ag konf scriptleri_mseml
 
Tizen
TizenTizen
Tizen
 
Linux İşletim Sistemi - Güncelleme-2018
Linux İşletim Sistemi - Güncelleme-2018Linux İşletim Sistemi - Güncelleme-2018
Linux İşletim Sistemi - Güncelleme-2018
 
Kabuk / bash proglama
Kabuk / bash  proglamaKabuk / bash  proglama
Kabuk / bash proglama
 
Sunu (1)
Sunu (1)Sunu (1)
Sunu (1)
 
Git Sunumu
Git SunumuGit Sunumu
Git Sunumu
 
Development of Dynamic Engine and Graphical User Interface Software for Railw...
Development of Dynamic Engine and Graphical User Interface Software for Railw...Development of Dynamic Engine and Graphical User Interface Software for Railw...
Development of Dynamic Engine and Graphical User Interface Software for Railw...
 
Rust'a Giriş v1
Rust'a Giriş v1Rust'a Giriş v1
Rust'a Giriş v1
 
final
finalfinal
final
 
Git 101
Git 101Git 101
Git 101
 
Android mimari-cekirdek-binding-scheduler
Android mimari-cekirdek-binding-schedulerAndroid mimari-cekirdek-binding-scheduler
Android mimari-cekirdek-binding-scheduler
 

Linux Türevi İşletim Sistemlerinde Paket Hazırlama.

  • 1. Giriş Paket Sistemi Nedir ve Faydaları Linux Sistemlerde Bilinen Paket Yönetim Sistemleri Linux Sistemlerde Bilinen Paket Türleri Geliştirme için Kullanılacak Araçlar Debian Tabanlı Sistemler için Paket Oluşturma Debian (.deb) Paketi Nedir ? Bağımlılık Nedir ? Debian (.deb) Paketi Oluşturmak için Ön Gereksinimler Paket Seçimi Kaynak Koddan Kurulum Debian (.deb) Paketi Oluşturma Debian (.deb) Paketini Test Etmek Varolan Bir Debian (.deb) Paketini Güncelleme Manuel Debian (.deb) Paketi Oluşturma Control dosyası Preinst dosyası Postinst dosyası Postrm & Prerm dosyaları Test Aşaması Dizin Yapısını Görüntülemek Yazar Hakkında
  • 2. Giriş Bu makalede tüm kullanıcıların anlayabileceği şekilde bir debian paketinin nasıl hazırlanacağına değineceğim. Debian tabanlı sistemlerde hali hazırdaki base paket deposunda çok geniş bir paket seti olmasına rağmen, bazen olmayan bir uygulamayı yükleme ihtiyacı hasıl olabiliyor. Böyle bir durumda uygulamayı kaynak koddan kurabileceğiniz gibi, uygulamayı .deb paketi haline getirmek sureti ile de paket yöneticisi üzerinden doğrudan kurabilirsiniz. Ayrıca, bazen de paket deposunda yer alan bir paketin kurulum değerleri bizler için yeterli olmayabilir dolayısı ile kendi paketimizi hazırlamak isteriz. Örneğin, squid3 debian paket depolarında var ve kuruluma hazır fakat bu kurulum ile squid için ihtiyaç duyabileceğimiz sslbump​ özelliği gelmiyor, bir seçeneğiniz kaynak koddan kurmak iken diğer bir seçenek ise bunu paket olarak hazırlamak. Paket Sistemi Nedir ve Faydaları Linux kullanıcıları ve sistem yöneticileri gereksinim duydukları programları, driver vb. sistem araçları ile bağımlılıklarını kurmak için paket deposundan faydalanırlar. Kullanıcıların bir uygulamayı kolay kurup yönetmesi için, ( güncelleme, kaldırma, versiyon tabiki vb.) oluşturulan hazır kurulumlar paket olarak ifade edilmektedir. Örneğin, linux tabanlı işletim sisteminize ( ubuntu, debian vb. ) chrome uygulamasını kurmak istediğinizde, google’ın chrome için indirme adresini bulmak, sisteme indirmek ve ön gereksinimleri tamamlandıktan sonra kurmak için vakit kaybetmenize gerek olmadan, hali hazırda paket depolarında yer alan hazır kurulum paketinden faydalanarak kurmak ciddi zaman kazandırır ve olası hataların önüne geçer. ​“apt-get install chromium”​ ile kurmak saniyeler sürer.
  • 3. Linux Sistemlerde Bilinen Paket Yönetim Sistemleri ● APT, ( Advenced Package Tool ) :​ APT ‘nin amacı ise debian tabanlı linux dağıtımlarını kullanan kullanıcıların hayatını kolaylaştırmak ve sistem paket yönetiminin daha iyi anlaşılır bir şekilde yapılmasını sağlamaktır. ● YUM, ( Yellowdog Updater Modified ) :​ Red Hat türevi işletim sistemlerinde paket yönetimi için kullanılmaktadır. Yum paket yönetimi özellikleri arasında ​paket kurmak​, paket kaldırmak​, ​paket bilgisini görüntülemek​, ​güncelleme​, ​paket yükseltmek gibi özellikler yer almaktadır. ● APTITUDE :​ Bu paket yöneticisi ise eskilerde özellikle bağımlılık çözerek kaldırma işlemlerinde daha işlevsel aynı zamanda iyi bir paket yöneticisiydi. Bu paket yöneticisi ( apt, yum vb.) diğer paket yöneticiler arasında çok fazla farklar bulunmamaktadır. Bazı ufak tefek kullanım değişikliği haricinde hepsi aynı işlevi görmektedirler. ● PKG : ​FreeBSD 10 işletim sistemi ile yeni gelen paket yönetimidir. Bu paket yönetim aracının özellikleri arasında, ​paket kurmak​, ​kaldırmak​, ​güncellemek​, ​paketi kilitlemek ​gibi özellikler yer almaktadır.
  • 4. Linux Sistemlerde Bilinen Paket Türleri Aşağıda linux türevi sistemlerde sık kullanılan paket türleri yer almaktadır. ● .rpm :​ Bu paket türü Red Hat tarafından linux için geliştirilmiş aynı zamanda birçok güçlü özellikleri nedeniyle birçok linux dağıtımına uyarlanmıştır. ● .deb :​ Bu paket türü ise debian tabanlı linux işletim sistemleri için oluşturulmuş bir paket türüdür. Geliştirme için Kullanılacak Araçlar Aşağıda bir ​.deb ​paketi hazırlamak için gerekli olan araçların ne işe yaradıkları anlatılmıştır. ● dpkg-dev : ​Debian kaynak paketlerini açmak (unpack), derlemek (build), karşıya yükleme (upload), için gerekli araçları içerir. ● file :​ Bu araç bir dosyanın türünü belirlemek için kullanılır. ( file dosya_ismi ) ● gcc :​ GNU projesi tarafından üretilen ve çeşitli programlama dillerini destekleyen bir derleyici sistemidir. Bu paket ayrıca C önişlemcisi ve nesne dosyalarını çevirmek ve ilintilemek için kullanılan araçları içeren ​binutils​ gibi çeşitli paketlere’de nüfuz eder. ● g++ : ​GNU C++ derleyicisi, eğer program C++ ile yazılmışsa gereklidir. ● libc6-dev :​ GCC ‘nin nesne dosyaları oluştururken ilintilemesi gereken C kütüphaneleri ve başlık dosyaları. ● make :​ Genellikle bir programın derlenmesi, kurulması, sistemden kaldırılması, derlenmiş olan dosyaları silmesi gibi işlemlerde kullanılır. ● patch :​ Bu araç farklılıklar listesi içeren bir dosyayı alır ( ​diff​ uygulaması tarafından oluşturulmuş ) ve onu orjinal dosyaya uygular, sonucunda da yamalı sürüm üretilir. ● perl :​ Genellikle linux türevi sistemlerde en çok kullanılan betik dillerinden biridir.
  • 5. ● devscripts ​: Bu paket, paket bakımcılarına yardımcı olabilecek bazı betikler içermektedir. ● fakeroot :​ Bu araç yapım derleme aşamasının bazı yerlerinde root gibi davranmanıza izin vermektedir. ● gnupg :​ Paketleri sayısal olarak imzalamayı sağlayan bir araçtır. ● pbuilder : ​Bu paket chroot ortamını oluşturmak ve bakımını yapmak için gerekli paketleri içerir. ● Lintian :​ Debian paketi yaptıktan sonra genel hataları bilmenizi sağlayan ve bulduğu hataları açıklayan debian paket denetimcisidir. ● Linda :​ Buda bir başka debian paket denetimcisidir. ● dh-make ve debhelper :​ ​dh-make​ örnek paketinizin iskeletini oluşturmak için gereklidir ve paketi oluştururken ‘de ​debhelper​ araçlarından bazılarını kullanacaktır.
  • 6. Debian Tabanlı Sistemler için Paket Oluşturma Debian (.deb) Paketi Nedir ? Debian paketleri, ilgili komutları ya da özellikleri uygulamak için gerekli tüm dosyaları içeren paketlerdir. Debian paketleri ikiye ayrılır; ● Binary packages :​ Bu paket içerisinde çalıştırılabilir dosyalar, konfigürasyon dosyaları, man/info sayfaları ve diğer dokümanlar bulunur. İkili paketler genellikle .deb uzantısı ile ayırt edilir ve dpkg komutu ile kurulum yapılır. ● Source packages :​ Kaynak paketleri, bu paketin yapısını belirten .dsc dosyası, orjinal kaynak kodunu arşiv içerisinde bulunduran .orig.tar.gz dosyası ve dosyadaki debian-spesifik değişiklikleri içeren .diff.gz dosyasından oluşan paketlerdir. Bağımlılık Nedir ? Bağımlılık o paketin çalışabilmesi/derlenebilmesi için gereken paketlerdir. İki çeşit bağımlılık vardır; ● Build Dependency : ​Paketin derlenebilmesi için gereken paketler. ● Runtime Dependency :​ Paketin çalışabilmesi için gereken paketler.
  • 7. Debian (.deb) Paketi Oluşturmak için Ön Gereksinimler Bir debian paketi hazırlamak için bazı ek paketlerin sisteme kurulması gerekmektedir. Paketlerin sisteme düzgün bir şekilde yüklendiğinden emin olunuz. Öncelikle sistem depolarını güncelleyip ardından güncellemeleri aldıktan sonra ikinci komutu kullanarak gerekli araçlar sisteme kurulabilir. NOT : ​Paketlerin düzgün bir şekilde sisteme kurulduklarından emin olunuz. Bu komutu kullanarak kontrol edebilirsiniz (​ dpkg -s paket_ismi​ ). root# ​apt-get update ; apt-get upgrade -y root# ​aptitude install build-essential binutils fakeroot lintian debhelper dh-make devscripts patch libc6-dev file checkinstall makefile
  • 8. Paket Seçimi Bir ​.deb​ paketi hazırlamadan önce aşağıdaki kontrolleri yapmanızı öneriyorum. Bu adımları eksiksiz tamamladığınızdan emin olun. ● Hazırlanacak paketin debian depolarında olup olmadığını kontrol edebilirsiniz. Paket depolarında aramak için ( ​apt-cache search paket_ismi ​) komutunu kullanabilir. Eğer paket paket var ise direkt ( ​apt-get install paket_ismi )​ ile sisteme kurabilirsiniz. ● Hazırlanacak programın ne tür bir lisansa sahip olduğunu kontrol edebilirsiniz. Özel bir lisansa sahip ise programın sahibinden bizzat izin almanız gerekir. Fakat programın lisansı GNU GPL veya GPL lisansı ise program üzerinde istediğinizi yapabilirsiniz ancak kaynak kodu kapatmamak şartıyla. Daha fazla bilgi için ​bakınız​. ● Hazırlanacak programın .deb uzantılı paketin debian depolarına girmesini sağlayabilirsiniz. Bunun için​ ​debiandevel@lists.debian.org​ mail listesi üzerinden görüşebilirsiniz. ● Programın sistem için bir güvenlik zafiyeti oluşturmadığından emin olunuz. Eğer güvenlik zafiyeti var ise programı .deb paketine dönüştürdükten sonra, linux tabanlı işletim sistemlerine direkt kurulursa o sistem için bir güvenlik zafiyeti oluşturacaktır.
  • 9. Kaynak Koddan Kurulum Bu makalede örnek olarak kullanılan araç ​bzip2​ aracıdır. Bu örneğimde ​bzip2 ​aracını kaynak koddan sisteme kurup daha sonra bunu ​.deb ​paketi haline getirmek yer alıyor. Bu makaleyi yazarken tüm çalışmaları aşağıdaki işletim sistemi üzerinde gerçekleştirdim. Farklı linux dağıtımlarında, komutlar ve bağımlılıklar değişiklik gösterebilir. Kullanılan işletim sistemi özellikleri; Distribütör ID :​ Debian Açıklama :​ Debian GNU/Linux 8.1 (jessie) Sürüm :​ 8.1 Kod adı :​ jessie Başlayalım İlk önce herhangi bir dizin içerisinde kurulum adında bir dizin oluşturulur ve içerisine girilir hemen ardından örnek olarak kullanılacak araç indirilir. Bu örnekte ​/home​ dizini içerisinde kurulum​ adında bir dizin oluşturulmuştur ve içerisine girilmiştir, ardından araç indirilmiştir. root#​ cd /home/ ; mkdir kurulum ; cd kurulum root# ​wget http://www.bzip.org/1.0.6/bzip2-1.0.6.tar.gz Sisteme kurulacak olan aracı ​tar​ komutu ile kurulum adlı dizin içerisine açalım ve açılan dizine girelim. root# ​tar xvf bzip2-1.0.6.tar.gz root#​ cd bzip2-1.0.6
  • 10. Genellikle tüm programların kaynak kodu ile birlikte ​INSTALL​ ve ​README​ dosyaları gelmektedir. Bir programın ne işe yaradığını, nasıl çalıştığını, nasıl kurulacağını, bağımlılıkları gibi bilgileri bilmiyorsanız bu dosyaları okumanızda fayda var. NOT :​ Aşağıdaki adımları uygularken ​bzip2-1.0.6/ ​dizini içerisinde olmalısınız. root# ​ make root#​ make install Debian (.deb) Paketi Oluşturma Sisteme kurduğumuz bzip2 aracını .deb paketine dönüştürmek için aşağıdaki komutu kullanabiliriz. ​Aşağıdaki menüde değişiklik yapmak istediğimiz bilgiye ait numarayı girerek ilgili alanı düzenleyebiliriz. Bir şey değiştirmek istemiyorsak doğrudan ​enter​ tuşuna basarak devam edebiliriz. NOT : ​Burada ​dh_make​ komutunu kullanmadım, çünkü çok eskide kaldı onun yerine debmake​, ​checkinstall​ araçları daha rahat, kullanışlı olduğu için bu aracı kullanacağım. root#​ checkinstall -D make install ***************************************** **** Debian package creation selected *** ***************************************** This package will be built according to these values: 0 - Maintainer: [ ucribrahim@gmail.com ] 1 - Summary: [ Benim örnek .deb paketim. ] 2 - Name: [ bzip2 ] 3 - Version: [ 1.0.6 ] 4 - Release: [ 1 ] 5 - License: [ GPL ] 6 - Group: [ checkinstall ] 7 - Architecture: [ amd64 ] 8 - Source location: [ bzip2-1.0.6 ] 9 - Alternate source location: [ ] 10 - Requires: [ ] 11 - Provides: [ bzip2 ]
  • 11. Enter a number to change any of them or press ENTER to continue: Installing with make install... ========================= ​Installation results​ =========================== if ( test ! -d /usr/local/bin ) ; then mkdir -p /usr/local/bin ; fi if ( test ! -d /usr/local/lib ) ; then mkdir -p /usr/local/lib ; fi if ( test ! -d /usr/local/man ) ; then mkdir -p /usr/local/man ; fi chmod a+r /usr/local/man/man1/bzmore.1 chmod a+r /usr/local/man/man1/bzdiff.1 echo ".so man1/bzgrep.1" > /usr/local/man/man1/bzegrep.1 ======================== ​Installation successful ​========================== Copying documentation directory... ./ ./LICENSE ./README.XML.STUFF ./README.COMPILATION.PROBLEMS ./README ./CHANGES Copying files to the temporary directory...OK Compressing man pages...OK Building file list...OK Deleting temp dir...OK ********************************************************************** Done. The new package has been installed and saved to /home//kurulum/bzip2-1.0.6/bzip2_1.0.6-1_amd64.deb You can remove it from your system anytime using: ​dpkg -r bzip2 *********************************************************************** Yukarıdaki çıktıda gördüğünüz üzere bzip2 paketimiz hazırlanmış demektir. Hazırladığımız .deb paketine ​/home/kurulum/bzip2-1.0.6/bzip2_1.0.6-1_amd64.deb ​yolundan ulaşabiliriz. Silmek istersek ​dpkg -r bzip2​ komutunu kullanabiliriz.
  • 12. Debian (.deb) Paketini Test Etmek Hazırladığımız .deb paketini diğer bir debian tabanlı işletim sistemine ​scp​ aracını vb. araçlarına kullanarak gönderebilirsiniz ve aşağıdaki komutu kullanarak sisteme hazırladığımız paketi kurabilir, test edebiliriz. Bunun sonunda zamandan tasavvuf etmiş olacağız ve her seferinden kaynak koddan kurma derdimiz olmayacak. root# ​dpkg -i bzip2_1.0.6-1_amd64.deb Varolan Bir Debian (.deb) Paketini Güncelleme Hazırladığımız .deb paketinin güncellemesini almak istersek aşağıdaki komutu kullanabiliriz. root#​ apt-get install apt-file -y root# ​apt-file update bzip2_1.0.6-1_amd64.deb
  • 13. Manuel Debian (.deb) Paketi Oluşturma Bu bölümde ise herhangi bir aracın kaynak kodunu kullanmadan, kendi dosyalarımızı oluşturup bash ile bu dosyaların içerisine gerekli olan komutları yazıp, bize ait bir .deb paketi hazırlayacağız. Konuya başlamadan önce kullanacağımız dosyaların ne işe yaradıklarına bakalım; DEBIAN/control :​ Bu dosya yazmış olduğumuz uygulamanın ismini, versiyonunu, boyutu, açıklama, bağımlılıklarının yazıldığı dosyadır. Bu dosyanın içeriği aşağıdaki gibidir. Package :​ Uygulamanın adı. Version : ​Uygulamanının versiyon numarası. Source :​ Uygulamanın adı yazılabilir. Section :​ Uygulamanın hangi kategoriye girdiği. Priority :​ Uygulamanın sistem için gerekliliği. Maintainer :​ Geliştiricini mail adresi veya ismi. Architecture :​ Hangi mimariler için olduğu. Depends :​ Hangi paketlere bağımlılık duyduğu. Burada paket isimlerini virgül (,) ile ayırıyoruz. Description :​ Uygulamanın ne ile alakalı olduğunu veren ufak bir yazı yazılabilir. DEBIAN/preinst : ​Bu dosya uygulama kurulurken çalışan ilk dosyadır. Bu dosyanın içine genellikle güncelleme yapılırken yedek alma komutları yazılır. Bu komutları bash ile vb. bir başka dil ile yazabilirsiniz. DEBIAN/postinst : ​Bu dosya ise preinst dosyasından sonra çalışan bir dosyadır. Bu dosyanın içerisine uygulamayı kurduktan sonra yapılacak işlemler için komutlar yazılır. DEBIAN/postrm or DEBIAN/prerm: ​Bu iki dosyadan herhangi birisi ise uygulamanın sistemden kaldırmak için yazacağınız komutların olduğu dosyalardır. DEBIAN/copyright :​ Debian için bu dosya bir paket hakkında lisans bilgisini içermektedir. Debian Özgür Yazılım Rehberi ​sitesinden lisans dağıtımı kısmını inceleyebilirsiniz.
  • 14. DEBIAN/rules : ​Debian paketiniz için bir ​Makefile​ dosyasıdır. Bir debian paketi dpkg komutu ile kurulurken bu dosyadaki bilgilere göre kurulur. DEBIAN/changelog : ​Bu dosya, programın gelişimini anlatan bir seyir defteridir. Programın kaynağından bağımsız bir şeyler yaptıysanız veya bazı hataları giderdi iseniz bu dosyanın içerisine yazabilirsiniz. DEBIAN/readme & DEBIAN/install : ​Bu iki dosya kullanıcıları bilgilendirmek için kullanılmaktadır. Genellikle bu dosyanın içerisine programın nasıl kurulacağını veya ne işe yaradığını yazabilirsiniz. Başlayalım İlk önce​ /home​ dizini içerisinde ​deneme​ adında bir dizin oluşturulur. root# ​mkdir /home/ibrahim/deneme ardından ​dosya.tar.gz​ adlı bir dosya oluşturun içerisinde bir tane ​test.txt​ dosya olsun. Daha sonra aşağıdaki komut kullanılarak ​deneme​ adlı dizin içerisinde ​tmp​ adında bir dizin oluşturulur ve oluşturulan ​dosya.tar.gz​ dosyasını oluşturduğumuz bu ​tmp​ dizini içerisine atılır. NOT :​ tar.gz dosyası gerekli olan yere atıldıktan sonra açılmamalıdır. Dosyanın içeriğini görmek isterseniz​ tar tf dosya.tar.gz​ komutu kullanılabilir. root# ​mkdir /home/ibrahim/deneme/tmp root# ​cp /home/dosya.tar.gz /home/ibrahim/deneme/tmp/ Daha sonra aşağıdaki komut kullanılarak ​/home/ibrahim/deneme/​ adlı dizin içerisine DEBIAN​ (​DEBIAN adı ile oluşturulmalıdır!)​ adında bir klasör oluşturulur. Hemen ardından oluşturduğumuz ​DEBIAN​ dizini içerisine girip, gerekli olan dosyalar oluşturulur. root# ​mkdir /home/ibrahim/deneme/DEBIAN root# ​cd /home/ibrahim/deneme/DEBIAN root# ​touch control postinst prerm root# ​ls -l
  • 15. Control dosyası Bu dosya uygulamanın ismini, versiyonunu, boyutu, bağımlılıkları gibi bilgilerin yazıldığı dosyadır. Bu dosyanın içeriği aşağıdaki gibidir. Aşağıdaki gibi yazdıktan sonra​ CTRL+O kombinasyonuna basıp ardından ​enter​ tuşuna basarak kaydedilir ardından çıkmak için ise CTRL+X ​kombinasyonuna basabilirsiniz. NOT : ​Bu alanda kendinize göre yeni alanlar ekleyebilir veya üzerlerinde değişiklik yapabilirsiniz. root# ​nano control Package: deneme Version: 1.1.1 Architecture: all Essential: no Section: web Priority: optional Depends: php5 (>=2.3), php5-mysql Maintainer: İbrahim UÇAR Description: Bu benim örnek .deb paketim. Preinst dosyası Bu dosya ise, uygulama kurulurken çalışan ilk dosyadır. Genellikle bu dosyanın içerisine güncelleme yapılırken veya yedek alma gibi komutlar yazılır. Bu dosya benim örneğimde olmadığı için bu dosyayı kullanmayacağım. Bir uygulamanın güncellemesinin kontrol edilmesi istiyorsanız bu dosyayı mutlaka oluşturup gerekli olan komut yazmanız gerekir.
  • 16. Postinst dosyası Bu dosya ( preinst ) dosyasından sonra çalışan dosyadır. Bu dosyanın içerisine uygulama kurulduktan sonra yapılacak işlemler yazılır. Aşağıda bash ile yazılmış örnek komutlar bulunmaktadır. Kısaca açıklamak gerekirse, paket sisteme kurulduktan sonra​ /tmp​ dizini içerisine deneme adında bir dizin oluşturulacak, ardından bir üst dizinde yer alan dosya.tar.gz ​adlı dosyayı oluşturulan ​/tmp/deneme​ adlı dizin içerisine açacaktır. root# ​nano postinst #!/bin/sh DOSYA=dosya.tar.gz DIZIN=deneme mkdir -p "/tmp/$DIZIN" tar xf "/tmp/$DOSYA" -C "/tmp/$DIZIN/" Postrm & Prerm dosyaları Bu iki dosya isimleri birbirinden farklı fakat aynı işlevi görmektedirler. Bu iki dosyadan herhangi birisinin içerisine uygulamayı sistemden kaldırmak için komutlar yazacağız. Aşağıdaki bash komutlarını prerm adlı dosyanın içerisine yazıyoruz. Bir kullanıcı ​( dpkg -r, apt-get remove ) ​komutları kullanıp bir programı sistemden kaldırınca çalışacak olan dosya aşağıdaki gibidir. NOT :​ Benim örneğimde ​/tmp/deneme​ adlı dizini silmek yer almaktadır. Ve ona göre bash komutu yazılmıştır. root# ​nano prerm #!/bin/sh if [ "$1" = "remove" ]; then rm -rf /tmp/deneme fi
  • 17. Şimdi ise .deb paketi nasıl oluşturulur bunu inceleyeceğiz. Aşağıdaki komutlardan herhangi birisini kullanarak .deb paketi oluşturma işlemini tamamlamış olacağız ve elimizde kendimize ait bir debian paketi olacaktır. ● Birinci komutta varolan dizin ismi ile .deb paketinin oluşturulmasını sağladık. ● İkinci komutta ise farklı bir isim belirterek verilen isim ile oluşturulmasını sağladık. root# ​dpkg-deb --build /home/ibrahim/deneme/ dpkg-deb: building package `deneme' in `deneme.deb'. root# ​ls deneme ​deneme.deb root# ​dpkg-deb --build /home/ibrahim/deneme/ deneme.1.2.3.deb dpkg-deb: building package `deneme' in `deneme.1.2.3.deb'. root# ​ls deneme ​deneme.1.2.3.deb Oluşturmuş olduğumuz .deb paketini sisteme kurmak istersek aşağıdaki komutu kullanabiliriz. root# ​dpkg -i deneme.deb veya root# ​dpkg -i deneme.1.2.3.deb Eğer sisteme kurduğumuz paketi silmek istersek aşağıdaki komutu kullanabiliriz. root# ​dpkg -r deneme.deb veya root# ​dpkg -r deneme.1.2.3.deb
  • 18. Test Aşaması Bu aşamada ise elle yapmış olduğumuz .deb paketinin çalışıp/çalışmadığının kontrolünü yapacağız. Aşağıdaki adımları takip edebilirsiniz. Aşağıdaki komutu kullandıktan sonra ​/tmp/​ dizini içerisine ​deneme​ adlı bir dizin oluşturulacak ardından ​dosya.tar.gz ​dosyası ​/tmp/deneme​ adlı dizin içerisine açılacaktır. Eğer bu adımlar eksik ise herhangi bir yerde bir hata yapmış olabilirsiniz. Aşağıda görüldüğü üzere herhangi bir problem yok başarılı bir şekilde gerekli olan dosya gerekli olan yere açılmıştır. root# ​dpkg -i deneme.1.2.3.deb ( Reading database ... 130889 files and directories currently installed.) Preparing to unpack deneme.1.2.3.deb ... Unpacking deneme (1.4.2) ... Setting up deneme (1.4.2) … root# ​ls -alh /tmp/deneme/ibrahimucar/ -rwxrwxr-x 1 ibrahim ibrahim 67 Nov 6 04:37 test.txt Eğer kurmuş olduğumuz bu .deb paketini sistemden kaldırmak istersek aşağıdaki komutu kullanabiliriz. Daha sonra​ /tmp/deneme/ibrahimucar​ dizini içerisine bakabiliriz ve öyle bir dosyanın var olmadığını görebiliriz. root# ​dpkg -r deneme.1.2.3 ( Reading database ... 130889 files and directories currently installed.) Preparing to unpack deneme.1.2.3.deb ... Unpacking deneme (1.4.2) ... Setting up deneme (1.4.2) … root# ​ls -alh /tmp/deneme/ibrahimucar/ ls: cannot access /tmp/deneme/ibrahimucar/: No such file or directory
  • 19. Dizin Yapısını Görüntülemek Son olarak tüm işlemler bittikten sonra oluşturduğumuz dizinin yapısını görmek istersek aşağıdaki komutu kullanabiliriz. root# ​tree deneme ├── DEBIAN │ ├── conffiles │ ├── control │ ├── postinst │ └── prerm └── tmp └── dosya.tar.gz 2 directories, 5 files Yazar Hakkında Yazar: İbrahim UÇAR İlk Yayımlanma Tarih: 16.01.2017 İletişim Bilgileri; ● ucribrahim@gmail.com ● twitter.com/ucribrahim ● lifeoverlinux.com