Gönderen: YuXeL  Son güncelleme :2005-02-16 03:07:06 Sayaç : 376729

Debian Paket Yapımı :.

Önsöz

© 2004 Osman Yüksel <yuxel (~) sonsuzdongu (.) com>
Bu döküman, GNU GPL lisansının 2 ve sonraki sürümleri koşullarında dağıtılabilir.
Dökümandakilerin uygulanmasından çıkacak sorunlardan yazar sorumlu tutulamaz.
Son Güncellenme : 15-11-2004

İçerik


1 Başlangıç

Debian'ı en popüler dağıtımlardan birisi yapan şüphesiz ki paket yönetim sistemidir. Neredeyse tüm paketleri resmi depolardan (http://www.debian.org) veya gayri resmi yansılardan (http://www.apt-get.org) edinmek mümkün. Ancak bazen istediğiniz programı istediğiniz koşullarda paketlenmiş olarak bulamıyorsunuz. Bu durumda kendiniz kaynak koddan derlemek zorunda kalıyorsunuz. Daha sonraki kullanımlar veya arkadaşlarınızla paylaşmak için bu derleme işlemini bir paket olarak kenarda köşede bekletmek isteyebilirsiniz. Bu belge adım adım bir debian paketi yapmayı anlatacaktır.

1.1 Gerekli Programlar

Bir debian paketi yapmak için bir kaç araca ihtiyacınız olacak. Bunları
	apt-get install build-essential lintian debhelper dh-make devscripts fakeroot
komutuyla kurun. Burada build-essential, C kütüphanesi, gcc, g++, make, dpkg-dev gibi geliştirme ilgili programlarını; debhelper ise perl,coreutils, file, binutils, po-debconf gibi debian/rules dosyasını düzenlerken kullanılabilecek programları kurar.
Bunların yanında developers-reference ve debian-policy gibi güzel belgeleri de kurabilirsiniz.

2 Program Seçimi

2.1 Program Seçimi

Bir programı paketlemeden önce düşünmeniz gereken bir kaç nokta var;
  • Program dağıtımda var mı, yok mu ?
    * Bunu apt-cache search program_adi şeklinde bir aramayla görebilirsiniz.
  • Programı paketleme ile uğraşan başka birileri var mı?
    * http://www.de.debian.org/devel/wnpp/being_packaged adresinden üzerinde çalışılan paketlerin listesini bulabilirsiniz.
  • Programın bir lisansı olmalı!
    * Mümkünse Debian Özgür Yazılım Rehberi'ne uygun bir lisansı olan bir programı paketleyin. Eğer bu lisanslardan birine uymuyorsa ancak paketlenmesinde/dağıtılmasında bir sorun yok ise yine de bu programı paketleyebilirsiniz. Bu lisanslara /usr/share/common-licenses/ altından ulaşabilirsiniz.
  • Program root haklarını kullanacak bir güvenlik açığına, setuid,setgid gibi özniteliklere sahip olmamalı veya root hakkı ile port açan bir arka plan programı (deamon) olmamalı.
  • Belgelendirmesi iyi olmalı ve kodları anlaşılır olmalı.
  • Program sorunsuz çalışmalı ve bir çok kez denenmeli.

2.2 Programı edinme ve deneme

Programınızı belirledikten sonra kaynak kodunu edinin.Genelde unix programları .tgz, .gz, .bz2 gibi sıkıştırılmış paketlerde gelirler. Paketi ev dizininiz içinde bir klasöre (örn: ~/paket/ ) içine açın. Daha sonra (genelde) bu klasör içinde bir klasör daha bulacaksınız ( örn : ~/paket/beedon-0.1.9 ) bu klasör içinde kurulumu anlatan INSTALL veya README gibi dosyalar olacaktır. Kurulumda alınacak parametreleri ve kurulumun inceliklerini bu belgelerden öğrenebilirsiniz. Genelde kaynak koddaki programlar /usr/local/* altına kurulumak ister. Ancak bu genelde sadece kaynakktan kurulan programlar için yerel bir klasördür. Paketleme için kaynak kodu düzenlemeniz veya `rules` dosyasını düzenlemeniz gerekebilir.
Çoğu program bir `configure` betiği ile gelir. Daha sonra `make` ve `make install` ile kurulum tamamlanır.
Şimdi siz de INSTALL veya README'de anlatılan şekilde parametreler ile
./configure
make
make install
komutları ile kurulumu deneyin. Program kurulduktan sonra çalışıp çalışmadığını kontrol edin.

2.3 Paket isimlendirme ve sürüm numarası

Programı paketlemeye temiz bir kaynak koddan başlamalısınız. Dizine açtığınız klasör adını <paket_adı>-<sürüm_no> şeklinde değiştirin (örn : beedon-0.1.9). Eğer klasor birden fazla kelime içeriyorsa bunları birleştirin (örn : foo bar 1.19 -> foobar-1.19 )

2.4 Debianlaştırma

Program dizininde
export DEBEMAIL="[email protected]"
export DEBFULLNAME="Osman Yuksel"
ile paket sağlayıcı(maintainer) bilgilerini girin. Daha sonra da
dh_make
komutunu verin. Burada sizden oluşturmak istediğiniz paketin tipini (tek binary, çoklu binary, kütüphane, veya kernel modulü) seçmeniz isteniyor. Bunu da seçip "debianlaştırma" işlemini bitiriyorsunuz.

3 debian/ klasörü altındaki dosyalar

3.1 `control` dosyası

Bu dosya, paket yönetim sistemi için gerekli bilgileri düzenlememizi sağlar,dosya içeriği aşağıdaki gibidir
Source: beedon						#program adı
Section: unknown					#ilgili bölüm
Priority: optional					#öncelik
Maintainer: Osman Yuksel <[email protected]>	#paket sağlayıcısı bilgileri
Build-Depends: debhelper (>= 4.0.0)			#bağımlılıkları
Standards-Version: 3.6.0				#uygun standartlar

Package: beedon						#paket adı
Architecture: any					#mimari
Depends: ${shlibs:Depends}, ${misc:Depends}		#bağımlılıkları
Description: <insert up to 60 chars description>	#kısa açıklama
 <insert long description, indented with spaces>	#uzun açıklama
* # ile başlayan kelimeler açıklamalardır. Bunlara göre önündeki değerleri değiştirebilirsiniz.
Section
Debian bölümlere ayrılmıştır; main(özgür yazılımlar), non-free(özgür olmayan yazılım), contrib (özgür olmayan bir yazılıma bağımlılığı olan yazılım) . Bu bölümler de ortak olarak
'admin'		->yönetim programları 
'base'		->temel araçlar 
'devel'		->geliştirme araçları 
'doc'		->belgelendirme 
'libs'		->kütüphaneler 
'mail'		->e-posta  
'net'		->ağ araçları ve arka plan programları(deamons)
'x11'		->yukarıdaki kategorilere uymayan X(Grafik Ortam) programları
şeklinde bölümlere ayrılır. Bunların kombinasyonundan bir "Section" parametresi hazırlayabilirsiniz. main/base , non-free/net v.s.
Depends
Bu bölüme paketin bağımlı olduğu paketler yazılır. Aynı şekilde bu bölüme paketin "gerektirdiği", "önerdiği", "önceden önerdiği(predepends)", "çakıştığı", "sağladığı " ve "yerine geçtiği" paketleri de belirleyebiliriz.
  • Depends
    Burda paketin bağımlı olduğu paketler yazılır
  • Reccommends
    Paket için bağımlı olmayan ancak kullanımı gerekli paketler.
  • Suggests
    Paket için gerekli olmayan ancak kullanımı önerilen paketler.
  • Pre-Depends
    Bu "Depends" den daha güçlüdür. Eğer paket daha önceden düzgün kurulup yapılandırılmamışsa bu paket kurulumaz. Bunun kullanımı pek önerilmez
  • Conflicts
    Kurulum sırasında kurulumu çakışan paketler
  • Provides
    Bazı paketler bir paketin görevini üstlenebilir, örn: exim, postfix, qmail farklı sunuculardır, ancak debian'da tek bir "mail sunucu" vardır ve örneğin exim üstüne kurulan bir postfix bu görevi devralır, daha fazla bilgi için /usr/share/doc/debian-policy/virtual-package-names-list.txt.gz dosyasına göz atın.
  • Replaces
    Kurulumdan sonra paket başka bir paketin yerini alabilir.(örn: libqt-mt, libqt'nin yerini alabilir)
Sonuçta
       Depends: sinek (>= 3.1), bocek (= 2.2)
       Conflicts: f4l
       Suggests: lale
       Recommends: muhasebeci (>> 0.1)
       Replaces: beelog (<= 0.1)
gibi bir kullanım olabilir
Description
Burada paket hakkında genel bir bilgi verilir. Ilk satır paketi tanımlayan satırdır, diğer satırlar ise detaylı anlatım için kullanılır. Örnek kullanım
       Description: Beedon bir içerik yönetim sistemidir
       Beedon gelişimi sürmekte olan, PHP ile yazılmış bir içerik yönetim sistemidir.
       MySQL veritabanı ile çalışmaktadır. Çoklu dil destekli ve modüler bir yapıdadır.
gibi olabilir

3.2 `copyright` dosyası

Bu dosya, paket hakkındaki lisans bilgilerini içerir. dh_make öntanımlı olarak
	This package was debianized by Osman Yuksel <[email protected]> on
	Sun, 14 Nov 2004 22:36:43 +0200.
	
	It was downloaded from <fill in ftp site>
	
	Copyright:

	Upstream Author(s): <put author(s) name and email here>

	License:

	<Must follow here>
gibi bir copyright dosyası oluşturur. Eğer program Debian Özgür Yazılım Rehberi'ne uygun bir lisansa sahipse, /usr/share/common-licenses/ altındaki bu dosyalara bağ verebilirsiniz. Örnek copyright dosyası aşağıdaki gibi olabilir;
	This package was debianized by Osman Yuksel <[email protected]> on
	Sun, 14 Nov 2004 22:36:43 +0200.
	
	It was downloaded from http://www.beedon.org
	
	Copyright:

	Upstream Author(s): sman Yuksel <[email protected]>

	License:

	Bu yazılım, GNU Genel Kamu Lisansı (GPL) koşullarına uygun olarak dağıtılabilir.
	GPL lisansına /usr/share/common-licenses/GPL dosyasından ulaşabilirsiniz

3.3 `changelog` dosyası

Bu dosya, yazılımın gelişimini anlatan bir seyir defteridir. Dosyaya özel bir biçimde değişiklikleri kaydedebilirsiniz.
dh_make öntanımlı olarak
	beeedon (0.1.9-1) unstable; urgency=low

  	* Initial Release.

 	-- Osman Yuksel <[email protected]>  Sun, 14 Nov 2004 22:36:43 +0200
gibi bir dosya oluşturur. Örnek changelog dosyası aşağıdaki gibi olabilir;
	beeedon (0.1.9-1) unstable; urgency=low

  	*Çoklu dil destekli, cookie destekli yeni sürüm duyruldu (alfa9)
        *Altyapı çok dilli olacak şekilde değiştirilmeye başlandı (alfa9 pre)
	*Modülleri, blokları ve menü'yü yönetim için yönetim modülü eklendi (alfa8)
	*Haber modülü ve son 10 haberi gösteren blok eklendi (alfa7)
	*Yönetim paneli oluşturuldu (alfa5)
	*Kullanıcı için blok oluşturuldu. (alfa4)
	*Kullanıcı modülü oluşturuldu. (alfa3)
	*Kurulum uygulaması oluşturuldu. (alfa2)
	*ilk html şablon oluşturuldu. 
 	
	-- Osman Yuksel <[email protected]>  Sun, 14 Nov 2004 22:36:43 +0200

3.4 `rules` dosyası

Bu dosya paketin kurulumunda rol alan Makefile gibidir. dh_make'in öntanımlı oluştuduğu dosyaya bir göz atalım.
1 #!/usr/bin/make -f
2 # -*- makefile -*-
3 # Sample debian/rules that uses debhelper.
4 # This file was originally written by Joey Hess and Craig Small.
5 # As a special exception, when this file is copied by dh-make into a
6 # dh-make output file, you may use that output file without restriction.
7 # This special exception was added by Craig Small in version 0.37 of dh-make.
8 
9 # Uncomment this to turn on verbose mode.
10 #export DH_VERBOSE=1
11
12
13
14
15 CFLAGS = -Wall -g
16 
17 ifneq (,$(findstring noopt,$(DEB_BUILD_OPTIONS)))
18 	CFLAGS += -O0
19 else
20 	CFLAGS += -O2
21 endif
22 
23 configure: configure-stamp
24 configure-stamp:
25 	dh_testdir
26 	# Add here commands to configure the package.
27 
28 	touch configure-stamp
29 
30 
31 build: build-stamp
32 
33 build-stamp: configure-stamp 
34 	dh_testdir
35 
36 	# Add here commands to compile the package.
37 	$(MAKE)
38 	#docbook-to-man debian/beedon.sgml > beedon.1
39 
40 	touch build-stamp
41 
42 clean:
43 	dh_testdir
44 	dh_testroot
45 	rm -f build-stamp configure-stamp
46 
47 	# Add here commands to clean up after the build process.
48 	-$(MAKE) clean
49 
50 	dh_clean 
51 
52 install: build
53 	dh_testdir
54 	dh_testroot
55 	dh_clean -k 
56 	dh_installdirs
57 
58 	# Add here commands to install the package into debian/beedon.
59 	$(MAKE) install DESTDIR=$(CURDIR)/debian/beedon
60 
61 
62 # Build architecture-independent files here.
63 binary-indep: build install
64 # We have nothing to do by default.
65 
66 # Build architecture-dependent files here.
67 binary-arch: build install
68 	dh_testdir
69 	dh_testroot
70 	dh_installchangelogs 
71 	dh_installdocs
72 	dh_installexamples
73 #	dh_install
74 #	dh_installmenu
75 #	dh_installdebconf	
76 #	dh_installlogrotate
77 #	dh_installemacsen
78 #	dh_installpam
79 #	dh_installmime
80 #	dh_installinit
81 #	dh_installcron
82 #	dh_installinfo
83 	dh_installman
84 	dh_link
85 	dh_strip
86 	dh_compress
87 	dh_fixperms
88 #	dh_perl
89 #	dh_python
90 #	dh_makeshlibs
91 	dh_installdeb
92 	dh_shlibdeps
93 	dh_gencontrol
94 	dh_md5sums
95 	dh_builddeb
96 
97 binary: binary-indep binary-arch
98 .PHONY: build clean binary-indep binary-arch binary install configure
(satır numaralarını ben ekledim)
15 ile 21. satırlar arasındaki seçenekler, derleme seçenekleridir. Daha fazla bilgiye Debian Policy'de Bölüm: "11.1 Binaries"'den ulaşabirsiniz.
33 ile 40. satırlar arasındaki seçenekler, oluşturma (build) kuralları içindir. Bu kurallar programın Makefile dosyası ile birlikte çalıştırılırlar.
42 ile 50. satırlar arasındakiler de silme(clean) kuralları içindir.
52 ile 61. satırlar arasındakiler de kurulum (install) kuralları içindir. Bu Makefile içindeki `install` kurallarını çalıştırır ancak programı $(CURDIR)/debian/beedon içine kurar. $(CURDIR) , şu anda bulunduğumuz yerdir.
67 ile 95. satırlar arasındakiler de pakette kullanılacak debhelper eylemlerini belirtir. Örneğin satır 94'teki `dh_md5sums`, paketteki tüm dosyaların md5 hash'lerini almaya yarar. Bu kurallar hakkında daha fazla bilgi için `man debhelper` klavuz sayfasına göz atabilirsiniz
PS: Beedon'da derlenecek herhangi bişey olmadığı için build, clean ve install kurallarını kaldırıp install kuralı olarak dosya kopyalattırabiliriz.

3.5 Diğer dosyalar

Bu dosyalar bir pakette olması zorunlu olmayan ancak bazı olayları kolaylaştırabilen dosyalardır. Bu dosyaları kullanmak istiyorsanız yapmanız gereken birkaç şey var.
  • Dosyaların ne işe yaradığını araştırmak ( Debian Policy ) ve gerekliyse dosyaları düzenlemek
  • Eğer başında veya sonunda .ex uzantısı varsa bunları silmek
  • Eğer gerekliyse `rules` dosyasını düzenlemek
README.Debian -> BeniOku dosyasıdı
conffiles.ex -> Yeni bir program kurarken eski ayar dosyalarınız olabilir ve bu dosyayı korumak isteyebilirsiniz. Debian size bunun için bir fırsat sunuyor. Eğer bir ayar dosyanız var ise bunu conffiles.ex dosyasında belirtebilirsiniz.
cron.d.ex -> Eğer yazılım belli zamanlarda belli işlevleri gerektiriyorsa bu dosyayı düzenleyebilirsiniz.
dirs -> Normal kurulumda oluşmayan ancak ihtiyacımız olacak klasörleri burdan oluşturabiliriz.
docs -> Eğer belgeler varsa burdan belgeleri belirleyebiliriz.
emacsen-*.ex -> Eğer yazılım kurulum sırasında bir Emacs dosyasını destekliyorsa burdan belirtebiliriz.
init.d.ex -> Eğer başlangıçta çalıştırılmasını istediğimiz bir dosya varsa dosyayı burdan duzenleyebiliriz.
manpage.1.ex, manpage.sgml.ex -> Bir klavuz sayfası varsa burdan düzenleyebiliriz.
menu.ex -> Pencere yöneticileri tarafından kullanılan menü girdisi için bu dosyayı düzenleyebiliriz.dh_make öntanımlı olarak
  ?package(beedon):needs="X11|text|vc|wm" section="Apps/see-menu-manual"\
  title="beedon" command="/usr/bin/beedon"
gibi bir girdiye sahip. "section" kısımndaki özellikler için /usr/share/doc/debian-policy/menu-policy.html dosyasına göz atabilirsiniz.
watch.ex -> watch dosyası için `man uscan` ve `man uupdate` klavuz sayfalarına göz atın.
ex.package.doc-base -> Bu klavuz sayfaları ve diğer dökümanlar haricindeki dökümantasyonları düzenlemeye yardımcı olur.
postinst.ex, preinst.ex, postrm.ex, prerm.ex -> Eğer program kurulumundan sonra, kurulumundan önce veya program kaldırdıktan sonra ve kaldırmadan önce yapılacak işlemler varsa bu dosyalarda belirtilir.

4 Paketi Oluşturma

Paket dizini içinde
dpkg-buildpackage -rfakeroot
gibi bir komutla
  • `debian/rules clean` ile temizleme
  • `dpkg-source -b` ile kaynak paketini oluşturma
  • `debian/rules build` ile programı oluşturma(build)
  • `debian/rules binary` ile ikili paketi oluşturma/li>
  • `gnupg` ile kaynak .dcs dosyasını imzalama
  • `dpkg-genchanges` ve `gnupg` ile .changes dosyasına değişiklikleri kaydetme
gibi olayların hepsini yapmış olackasınız.
* Paketteki hataları kontrol etmek için ise oluşan changes dosyasını lintian ile bir test edin.
lintian -i beedon_0.1.9-1_i386.changes

5 Kaynakça

Konular
Ben {122}
Sinema {24}
php/web {44}
Link {58}
Debian {26}
Opera {39}
Müzik {70}
KDE {7}
Qt {12}

[_lang_topics]


Takvim
<  Aralık 2024  >
PSÇPCCtPz
1
2345678
9101112131415
16171819202122
23242526272829
3031


Temalar
dx
darksight
yesilozAskerEdition
yellos
uira
default
opera
greeny
xmas
yesiloz
yesilozHtml5

Es Dost
Altan
Tuğrul
Selçuk
Timu
Mehmet
Ünal
Gökhan
Koray Taylan
Yaşar
Özgür
Orhan
Kemali
Ahmet
Emrah
Kıvanç
BilgiFrekans
Bünyamin
Bedava Site

Gez Gör Arpacık
Opera Türkiye
Uira
Ma"Cess"teleri


Projeler
Beedon
sozluQ
qPod
SourPHP
Ekşigator
Ekşigator-qt
Soccer Madness