Ero sivun ”Deb-paketin tekeminen” versioiden välillä

Siirry navigaatioon Siirry hakuun
5 033 merkkiä lisätty ,  22. huhtikuuta 2007
välitallennus
(alkua, jatkan huomenna (päivällä), nyt nukkumaan)
 
(välitallennus)
Rivi 41: Rivi 41:
Paketin luova työkalu päättelee paketin tiedostot siten, että ohjelma asennetaan sen valvonnassa väliaikaiseen alihakemistoon. Yleensä tämä alihakemisto on <tt>debian/paketin_nimi</tt>, jonne paketti asennetaan aivan normaalisti: esimerkiksi Hellon binääri menisi hakemistoon <tt>debian/hello-2.2/usr/bin/hello</tt>.
Paketin luova työkalu päättelee paketin tiedostot siten, että ohjelma asennetaan sen valvonnassa väliaikaiseen alihakemistoon. Yleensä tämä alihakemisto on <tt>debian/paketin_nimi</tt>, jonne paketti asennetaan aivan normaalisti: esimerkiksi Hellon binääri menisi hakemistoon <tt>debian/hello-2.2/usr/bin/hello</tt>.


[[Autoconf]]ia käyttävien pakettien kanssa (pääasiassa ohjelmat, jotka asennetaan komennolla <tt>./configure && make && make isntall</tt>) paketin luoma työkalu osaa hoitaa tämän automaattisesti, eikä sinun tarvitse tässä vaiheessa tehdä mitään. Kuten huomasit asentaessamme ohjelmaa oppaan alussa, annoimme configure-skriptille parametrin <tt>--prefix=/hakemisto/jonne/ohjelma/asennetaan</tt>. Paketoija antaa configurelle samalla tavalla sopivan parametrin, jolloin ohjelma asentuu oikeaan paikkaan.
[[Autoconf]]ia käyttävien pakettien kanssa (pääasiassa ohjelmat, jotka asennetaan komennolla <tt>./configure && make && make install</tt>) paketin luoma työkalu osaa hoitaa tämän automaattisesti, eikä sinun tarvitse tässä vaiheessa tehdä mitään. Kuten huomasit asentaessamme ohjelmaa oppaan alussa, annoimme configure-skriptille parametrin <tt>--prefix=/hakemisto/jonne/ohjelma/asennetaan</tt>. Paketoija antaa configurelle samalla tavalla sopivan parametrin, jolloin ohjelma asentuu oikeaan paikkaan.


=== Mitä jos ohjelma ei käytä autoconfia? ===
=== Mitä jos ohjelma ei käytä autoconfia? ===
Rivi 93: Rivi 93:


=== copyright ===
=== copyright ===
Paketin tekijänoikeuksista kerrotaan tiedostossa <tt>debian/copyright</tt>. Tämän tiedoston muoto on periaatteessa vapaa, mutta hyvän tiedoston saa muokkaamalla dh_maken luomaa. Tässä tiedostosta tulee käydä ilmi paketin luoja, alkuperäinen tekijä ja ohjelman tekijänoikeustiedot (esim. GPL-lisenssin alainen).




=== changelog ===
=== changelog ===
dh_make luo seuraavanlaisen pohjan <tt>debian/changelog</tt>-tiedostolle: (rivinumerot lisätty)
1 hello (2.2-1) unstable; urgency=low
2
3  * Initial release (Closes: #nnnn)  <nnnn is the bug number of your ITP>
3
4  -- Heikki Mäntysaari <heikkim@gmail.com>  Sat, 21 Apr 2007 23:59:27 +0300
</pre>
Rivillä 1 on aluksi paketin nimi (hello) ja versionumero (2.2-1). Seuraavana on jakelun nimi, johon paketti kuuluu (Debianilla on stable, testing ja unstable -jakelut). Unstable on yleensä hyvä. Viimeisenä on tieto paketin kiireellisyydestä (urgency), yleensä "low" on sille oikea arvo.


Tämän jälkeen seuraavilla riveillä on itse muutosloki (engl. ''changelog''). Rivin alussa on kaksi välilyöntiä ja tähti (*). Viimeisnä (rivillä 4) on tieto paketin tekijästä. Tämän rivin alussa on yksi välilyönti.


=== rules ===
=== rules ===
Tiedosto <tt>debian/rules</tt> on [[Makefile]]n tapainen tiedosto, jonka perusteella varsinainen paketti luodaan. Tämän tiedoston perusteella ohjelma käännetään ja asennetaan hakemistoon <tt>debian/paketin_nimi</tt>, tässä tapauksessa <tt>debian/hello</tt>. Tähän hakemistoon asentuvien tiedostojen perusteella luodaan varsinainen paketti.


Koska Hello käyttää autoconfia, osaa paketin luova työkalu tehdä tarvittavat asetukset itse, eikä meidän periaatteessa tarvitse edes koskea <tt>rules</tt>-tiedostoon. Katsotaan nyt kuitenkin sitä malliksi, sillä vähänkin monimutkaisempien pakettien kohdalla sitä on muokattava. Dh_maken luoma malli on seuraava: (rivinumerot lisätty)
<pre>
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 # These are used for cross-compiling and for saving the configure script
14 # from having to guess our platform (since we know it already)
15 DEB_HOST_GNU_TYPE  ?= $(shell dpkg-architecture -qDEB_HOST_GNU_TYPE)
16 DEB_BUILD_GNU_TYPE  ?= $(shell dpkg-architecture -qDEB_BUILD_GNU_TYPE)
17
18
19 CFLAGS = -Wall -g
20
21 ifneq (,$(findstring noopt,$(DEB_BUILD_OPTIONS)))
22        CFLAGS += -O0
23 else
24        CFLAGS += -O2
25 endif
26
27 config.status: configure
28        dh_testdir
29        # Add here commands to configure the package.
30        ./configure --host=$(DEB_HOST_GNU_TYPE) --build=$(DEB_BUILD_GNU_TYPE) --prefix=/usr \
31 --mandir=\$${prefix}/share/man --infodir=\$${prefix}/share/info CFLAGS="$(CFLAGS)" LDFLAGS="-Wl,-z,defs"
32
33
34 build: build-stamp
35
36 build-stamp:  config.status
37        dh_testdir
38
39        # Add here commands to compile the package.
40        $(MAKE)
41        #docbook-to-man debian/hello.sgml > hello.1
42
43        touch $@
44
45 clean:
46        dh_testdir
47        dh_testroot
48        rm -f build-stamp
49
50        # Add here commands to clean up after the build process.
51        -$(MAKE) distclean
52 ifneq "$(wildcard /usr/share/misc/config.sub)" ""
53        cp -f /usr/share/misc/config.sub config.sub
54 endif
55 ifneq "$(wildcard /usr/share/misc/config.guess)" ""
56        cp -f /usr/share/misc/config.guess config.guess
57 endif
58
59
60        dh_clean
61
62 install: build
63        dh_testdir
64        dh_testroot
65        dh_clean -k
66        dh_installdirs
67
68        # Add here commands to install the package into debian/hello.
69        $(MAKE) DESTDIR=$(CURDIR)/debian/hello install
70
71
72 # Build architecture-independent files here.
73 binary-indep: build install
74 # We have nothing to do by default.
75
76 # Build architecture-dependent files here.
77 binary-arch: build install
78        dh_testdir
79        dh_testroot
80        dh_installchangelogs ChangeLog
81        dh_installdocs
82        dh_installexamples
83 #      dh_install
84 #      dh_installmenu
85 #      dh_installdebconf
86 #      dh_installlogrotate
87 #      dh_installemacsen
88 #      dh_installpam
89 #      dh_installmime
90 #      dh_python
91 #      dh_installinit
92 #      dh_installcron
93 #      dh_installinfo
94        dh_installman
95        dh_link
96        dh_strip
97        dh_compress
98        dh_fixperms
99 #      dh_perl
100 #      dh_makeshlibs
101        dh_installdeb
102        dh_shlibdeps
103        dh_gencontrol
104        dh_md5sums
105        dh_builddeb
106
107 binary: binary-indep binary-arch
108 .PHONY: build clean binary-indep binary-arch binary install
</pre>


=== .ex-päätteiset tiedostot ===
=== .ex-päätteiset tiedostot ===

Navigointivalikko