Sürüm 1.0 Aralık 2006 Ozgur Karatas <ozgur at ozgurkaratas dot com>
Bu belgede evrensel bir işletim sistemi olan Debian GNU\Linux için nasıl .deb paketi hazırlanacağı anlatılmıştır. Belgenin amacı okuyucuları .deb paketinin oluşumu hakkında bilgilendirmek ve debian paket depolarını zenginleştirmeye teşvik etmektir.
Bu belgenin; Nasıl Debian Paketi Yapılır? 1.0 sürümünün telif hakkı Ozgur Karatas'a aittir. Bu belgeyi, Free Software Foundation tarafından yayınlanmış bulunan GNU Özgür Belgeleme Lisansının 1.1 ya da daha sonraki sürümünün koşullarına bağlı kalarak kopyalayabilir, dağıtabilir ve/veya değiştirebilirsiniz. Linux, Linus Torvalds adına kayıtlı bir ticarî isimdir.
Debian bilgisayarınız için özgür bir işletim sistemidir. Bir işletim sistemi bilgisayarınızın çalışmasını sağlayan bir dizi temel program ve araçtan oluşmuş bir yazılım topluluğudur. Debian Linux çekirdeğini (işletim sisteminin çekirdeği) kullanır, ancak temel işletim sistemi araçlarının çoğu GNU projesinden gelmektedir; bu yüzden GNU/Linux olarak adlandırılmıştır. Debian GNU/Linux salt bir işletim sisteminden daha fazlasını sağlar. Paket depoalarında 15490 paket önceden derlenmiş ve kuruluma hazır olarak gelmektedir.
Debian işletim sistemini diğer linux dağıtımlarından ayıran ve popüler kılan araçlardan birisi APT'dir. Açılımı Advanced Package Tool'dur. APT'nin amacı Debian kullanıcılarının hayatını kolaylaştırmak ve sistemin yönetiminin daha iyi, anlaşılır şekilde yapılabilmesini sağlamaktır. APT; Debian geliştiricileri tarafından, Debian projesi için geliştirilmiştir. Önce .tar.gz vardı. Kullanıcılar GNU/Linux sistemlerinde kullandıkları her programı derlemek zorundaydılar. Debian geliştirimi sırasında, kurulu paketlerin yönetimini sağlayacak bir sistemin zorunluluğu hemen görüldü. Bu amaçla geliştirilen sisteme dpkg adı verildi. Sonuçta GNU/Linux dünyası, RedHat'in kendi paket yönetim sistemini geliştirmesinden biraz önce, dpkg ile tanıştı. Hemen ardından GNU/Linux sisteminin geliştiricilerinin kafasında yeni bir ikilem oluştu. Paketlerin hızlı, pratik ve verimli bir yöntemle kurulabilmesini, paket bağımlılıkları yönetimi ve paket güncellemeleri sırasında konfigürasyon dosyalarının güncellenmesini sağlayacak bir araca ihtiyaç vardı. Yine Debian projesi kapsamında ilk ürün ortaya çıktı, APT (Advanced Packaging Tool). Apt daha sonra Connectiva tarafından rpm paketler ile kullanılmak üzere port edildi ve bazı dağıtımlar tarafından da kullanılmaya başlandı.
Aptitude kabiliyet anlamına gelmektedir. Apt için kullanılan birçok komut aynı şekilde aptitude için de geçerlidir. man aptitude komutu ile hakkında detaylı bilgi alınabilir. 1. Gerekli Paketlerin Kurulumu: Bir debian paketi hazırlamak için bazı programlara ihtiyaç vardır. Öncelikle sisteminizde bu paketlerin kurulu olduğundan emin olun. Kurulu değil ise aşağıdaki komutla gerekli programları debian depolarından çekerek kurabilirsiniz. aptitude install buildessential binutils fakeroot lintian debhelper dhmake devscripts 2. Paket Seçimi: Bir program için debian paketi (.deb) oluşturmadan önce birkaç noktaya dikkat etmelisiniz.
Hazırladığınız paketin debian depolarında olup olmadığını kontrol edin.
•
aptcache search paketadı Paketleyeceğiniz programın ne tür bir lisansa sahip olduğunu kontrol edin.
•
Genel olarak GNU\GPL lisansına sahip olması gerekmektedir. Programın sistem için bir güvenlik problemi oluşturmadığından emin olun.
•
Programın yazarı ile bağlantı kurun ve debian depolarına girmesi için debian geliştiricilerine bilgi
•
verin. Genellikle debiandevel@lists.debian.org mail listesinden temas kurabilirsiniz.
3. Paketimizi hazırlamaya başlayalım: Öncelikle kafanızın karışmaması için home dizininiz altında yeni bir dizin oluşturun. root@ozgur:/home/ozgur# cd /home/ozgur/ root@ozgur:/home/ozgur# mkdir package root@ozgur:/home/ozgur# cd package/ Ardından .deb paketini hazırlayacağınız programın kaynak kodunu bu dizin altında açın. root@ozgur:/home/ozgur/package# ls rsyslog1.12.2.tar.gz root@ozgur:/home/ozgur/package# tar zxvf rsyslog1.12.2.tar.gz root@ozgur:/home/ozgur/package# cd rsyslog1.12.2 Genellikle tüm programların kaynak kodu ile birlikte INSTALL ve README dosyaları gelmektedir. Siz programın ne olduğunu, nasıl çalıştığını bilseniz de bu dosyaları okumak için biraz zaman ayırmanız yararınıza olacaktır. Bir program ./configure make ve make install komutları ile sisteminize kurulabilir. Fakat ./configure seçeneği için çeşitli parametreler vardır. Bilgi edinmek için ./configure –help komutunu kullanabilirsiniz.
Programınızın .deb paketini oluşturmadan önce paket ismine ve sürüm numarasına dikkat ediniz. Ayrıca
paket oluştururken bazı paketleyici bilgilerine de ihtiyaç duyulmaktadır.
Bunun aşağıdaki komutlar ile bilgilerinizi export etmelisiniz.
export DEBEMAIL="ozgur@ozgurkaratas.com" export DEBFULLNAME="Ozgur Karatas" Ve bu adımdan sonra sihirli komutumuz olan dh_make komutunu kullanıyoruz. root@ozgur:/home/ozgur/package/rsyslog1.12.2# dh_make Type of package: single binary, multiple binary, library, kernel module or cdbs? [s/m/l/k/b]
dh_make komutundan sonra sizden yukarıdaki gibi bazı bilgiler istenecektir. Burada paketinizin tipini
seçip enter tuşuna bastıktan sonra aşağıdaki gibi bir çıktı karşınıza gelecektir. Bilgiler onaylıyorsanız
enter tuşuna basınız.
Maintainer name : Ozgur Karatas EmailAddress : ozgur@ozgurkaratas.com Date : Thu, 7 Dec 2006 15:40:48 +0200 Package Name : rsyslog Version : 1.12.2 License : blank Type of Package : Single Hit <enter> to confirm:
Bu adımdan sonra bir üst dizinde .orig uzantılı bir dizin oluşacaktır.
root@ozgur:/home/ozgur/package# ls rsyslog1.12.2 rsyslog1.12.2.orig rsyslog1.12.2.tar.gz Ayrıca bulunduğunuz dizinde debian isminde yeni bir dizin de oluşacaktır ve program ile ilgili tüm debian paket bilgileri bu dizin altındaki dosyalarda tutulmaktadır. root@ozgur:/home/ozgur/package/rsyslog1.12.2# cd debian/ root@ozgur:/home/ozgur/package/rsyslog1.12.2/debian# ls changelog cron.d.ex emacsenremove.ex manpage.sgml.ex postrm.ex rsyslogdefault.ex compat dirs emacsenstartup.ex manpage.xml.ex preinst.ex rsyslog.docbase.EX control docs init.d.ex menu.ex prerm.ex rules copyright emacseninstall.ex manpage.1.ex postinst.ex README.Debian watch.ex root@ozgur:/home/ozgur/package/rsyslog1.12.2/debian#
Dilerseniz yeni oluşan debian/ dizini altındaki dosyaların ne işe yaradığını beraber öğrenelim. control dosyası: Paket ile ilgili çeşitli bilgileri içerir. içeriği aşağıdaki gibidir.
root@ozgur:/home/ozgur/package/rsyslog1.12.2/debian# cat control Source: rsyslog Section: main Priority: optional Maintainer: Ozgur Karatas <ozgur@ozgurkaratas.com> BuildDepends: debhelper (>= 5) StandardsVersion: 3.7.2 Package: rsyslog Architecture: any Depends: ${shlibs:Depends}, ${misc:Depends} Description: <insert up to 60 chars description> <insert long description, indented with spaces>
copyright dosyası:
Bu dosya ise programın lisansı hakkında bilgi içermektedir ve default içeriği ise aşağıdaki gibidir.
root@ozgur:/home/ozgur/package/rsyslog1.12.2/debian# cat copyright
This package was debianized by Ozgur Karatas <ozgur@ozgurkaratas.com> on
Thu, 7 Dec 2006 15:40:48 +0200.
It was downloaded from <fill in http/ftp site>
Upstream Author: <put author(s) name and email here>
Copyright: <put the year(s) of the copyright, and the names of the
copyright holder(s) here>
License:
<Put the license of the package here>
The Debian packaging is (C) 2006, Ozgur Karatas <ozgur@ozgurkaratas.com> and
is licensed under the GPL, see `/usr/share/commonlicenses/GPL'.
changelog dosyası:
Bu dosya ise programınızın seyir defteri yol haritası gibidir. Programın kaynağından bağımsız birşeyler
yaptı iseniz veya bazı bug'ları giderdi iseniz bu dosyanın içerisine ekleyebilirsiniz.
rules dosyası:
Bir linux programı kaynak koddan kurulurken ./configure make ve make install komutları işletilir demiştik. Bu komutlar işletilirken program ile beraber gelen Makefile dosyasına göre kurulum tamamlanır. Rules dosyası da debian paketiniz için Makefile dosyasıdır. Hazırladığınız Debian paketi dpkg ile kurulurken bu dosyadaki bilgilere göre kurulur ve benim programıma göre içeriği aşağıdaki gibidir.
root@ozgur:/home/ozgur/package/rsyslog1.12.2/debian# cat rules
#!/usr/bin/make f
# * makefile *
# Sample debian/rules that uses debhelper.
# This file was originally written by Joey Hess and Craig Small.
# As a special exception, when this file is copied by dhmake into a
# dhmake output file, you may use that output file without restriction.
# This special exception was added by Craig Small in version 0.37 of dhmake.
# Uncomment this to turn on verbose mode.
#export DH_VERBOSE=1
CFLAGS = Wall g
ifneq (,$(findstring noopt,$(DEB_BUILD_OPTIONS) ) )
CFLAGS += O0
else
CFLAGS += O2
endif
configure: configurestamp
configurestamp:
dh_testdir
# Add here commands to configure the package.
touch configurestamp
build: buildstamp
buildstamp: configurestamp
dh_testdir
# Add here commands to compile the package.
$(MAKE)
#docbooktoman debian/rsyslog.sgml > rsyslog.1
touch $@
clean:
dh_testdir
dh_testroot
rm f buildstamp configurestamp
# Add here commands to clean up after the build process.
$(MAKE) clean
dh_clean
install: build
dh_testdir
dh_testroot
dh_clean k
dh_installdirs
# Add here commands to install the package into debian/rsyslog.
$(MAKE) install DESTDIR=$(CURDIR)/debian/rsyslog
# Build architectureindependent files here.
binaryindep: build install
# We have nothing to do by default.
# Build architecturedependent files here.
binaryarch: build install
dh_testdir
dh_testroot
dh_installchangelogs
dh_installdocs
dh_installexamples
# dh_install
# dh_installmenu
# dh_installdebconf
# dh_installlogrotate
# dh_installemacsen
# dh_installpam
# dh_installmime
# dh_python
# dh_installinit
# dh_installcron
# dh_installinfo
dh_installman
dh_link
dh_strip
dh_compress
dh_fixperms
# dh_perl
# dh_makeshlibs
dh_installdeb
dh_shlibdeps
dh_gencontrol
dh_md5sums
dh_builddeb
binary: binaryindep binaryarch
.PHONY: build clean binaryindep binaryarch binary install configure
Bu dosyadaki parametreleri programınızın nasıl kurulacağını belirlemek için değişebilirsiniz.
Bizim için gerekli olan önemli dosyalar bunlardır. Diğer dosyaların üzerinde pek fazla durmayacağız.
README.Debian: Beni Oku dosyası
conffiles.ex: Eğer program kurulurken eski ayar dosyanızı korumak istiyorsanız bu dosyayı kullanın.
cron.d.ex: cron işlemlerini bu dosyadan yapabilirsiniz.
dirs: Kurulumla beraber oluşmayan, daha sonra oluşması gereken dizinleri belirlemek için kullanılır.
docs: Programınız ile beraber belgeler de varsa bu dosya ile belirleyin.
emacsen*.ex: Programınız kurulurken Emacs dosyasına ihtiyaç duyuyorsa bu dosya ile belirleyin.
init.d.ex: Sistem açılışında programınız da çalışsın istiyorsanız bu dosyayı düzenleyin.
NOT:
Bir sonraki adıma geçmek için, eğer ihtiyacınızın olmadığını düşündüğünüz bir dosya varsa bunu silmeli
ve dosyaların .ex uzantılarını silmelisiniz. Burada ex (example) örnek dosya olduğunu göstermektedir.
Buraya kadar herşeyi anladı iseniz artık programınızın debian paketini hazırlayabilirsiniz. Bunun için aşağıdaki komutu çalıştırın. dpkgbuildpackage rfakeroot Burada dikkat edilmesi gereken bir konu da Maintainer olarak export etmiş olduğunuz mail adresi için GPG oluşturmuş olmanızdır. export DEBEMAIL="ozgur@ozgurkaratas.com" dpkg; paket oluştururken gpg bilgilerinizi arayacaktır. gpg –listkeys komutu ile listeleyebilirsiniz. Herşey yolunda gitti ise programınız için Debian paketi bir üst dizinde kurulmaya hazırdır. dpkg i paket adı komutu ile paketi kurup, test ederek gözden geçirebilirsiniz.