/[ddp]/manuals/trunk/maint-guide/maint-guide.pl.sgml
ViewVC logotype

Contents of /manuals/trunk/maint-guide/maint-guide.pl.sgml

Parent Directory Parent Directory | Revision Log Revision Log


Revision 7481 - (show annotations) (download) (as text)
Fri Aug 20 18:59:29 2010 UTC (2 years, 9 months ago) by osamu
File MIME type: text/x-sgml
File size: 114155 byte(s)
UTF-8 conversion and script update
1 <!DOCTYPE debiandoc PUBLIC "-//DebianDoc//DTD DebianDoc//EN" [
2
3 <!-- textual data entities -->
4 <!-- first definition wins in SGML -->
5 <!ENTITY % default SYSTEM "default.ent"> %default;
6
7 ]>
8 <!-- CVS revision of this document "$Revision: 1.22 $" -->
9 <!-- CVS revision of original english document "1.115" -->
10
11 <debiandoc>
12
13 <book>
14
15 <titlepag>
16
17 <title>Podręcznik dla nowych opiekunów pakietów Debiana</title>
18
19 <author>Josip Rodin <email/joy-mg@debian.org/
20 </author>
21 <author>polskie tłumaczenie: Paweł Tęcza <email/ptecza@debianusers.pl/
22 </author>
23 <author>korekta tłumaczenia: Marcin Owsiany <email/porridge@debian.org/
24 </author>
25 <author>wznowienie tłumaczenia: Wojciech Zaręba <email/wojtekz@comp.waw.pl/
26 </author>
27
28 <version>wersja oryginału: 1.2.11, 12-01-2007, wersja tłumaczenia: 1.2.5,
29 27-09-2007</version>
30
31 <copyright>
32 <copyrightsummary>Copyright &copy; 1998-2002 Josip Rodin.</copyrightsummary>
33 <copyrightsummary>Copyright &copy; 2005-2007 Osamu Aoki.</copyrightsummary>
34 <copyrightsummary>Copyright &copy; polskiego tłumaczenia 2002-2004
35 Paweł Tęcza, Marcin Owsiany.</copyrightsummary>
36 <copyrightsummary>Copyright &copy; polskiego tłumaczenia 2007
37 Wojciech Zaręba.</copyrightsummary>
38
39 <p>Ten dokument może być używany zgodnie z zasadami licencji GNU GPL (General
40 Public License) w wersji 2 lub wyższej.
41
42 <p>Do stworzenia tego dokumentu wykorzystano, jako przykłady, następujące
43 dokumenty:
44
45 <p>Making a Debian Package (znany jako Debmake Manual), copyright &copy; 1997
46 Jaldhar Vyas.
47
48 <p>The New-Maintainer's Debian Packaging Howto, copyright &copy; 1997
49 Will Lowe.
50 </copyright>
51
52 </titlepag>
53
54 <toc sect>
55
56 <!-- -------------------------------------------------------------------------->
57
58 <chapt id="start">Rozpoczęcie, jak się należy
59
60 <p>Ten dokument próbuje opisać proces budowania pakietów systemu Debian.
61 Jest on przeznaczony dla zwykłych użytkowników Debiana i tych, którzy chcą
62 zostać deweloperami. Używa zwykłego języka i daje dużo działających przykładów.
63 Stare rzymskie przysłowie mówi <em>Longum iter est per preaecepta,
64 breve et efficax per exempla</em> (Długa jest droga przez nakazy,
65 krótka i skuteczna przez przykłady).
66
67 <p>Jedną z rzeczy sprawiających, że Debian jest wyjątkową dystrybucją Linuksa,
68 jest jego system pakietów. Mimo że istnieje ogromna ilość oprogramowania już
69 spakowanego do formatu Debiana, to czasami zachodzi konieczność
70 zainstalowania programu, który nie posiada swojej paczki. Pewnie się dziwisz,
71 że możesz sam zbudować własne pakiety i myślisz, że to bardzo trudne zadanie.
72 No cóż, jeśli jesteś zupełnym nowicjuszem w Linuksie, to rzeczywiście będziesz
73 miał kłopoty, ale czy gdybyś był żółtodziobem, to czytałbyś teraz ten
74 dokument? :-) Musisz trochę wiedzieć na temat programowania pod Unix'em,
75 ale nie musisz od razu być ekspertem.
76
77 <p>Jedna rzecz jest pewna: aby odpowiednio tworzyć i zarządzać pakietami
78 Debiana konieczne są osobogodziny. Staraj się nie popełniać błędów,
79 gdyż nasz system, aby działać, wymaga od opiekunów zarówno kompetencji
80 technicznych jak i rzetelności.
81
82 <p>Ten dokument wyjaśni wszystkie kroki potrzebne do zbudowania pakietu
83 (choć niektóre z nich mogą na początku wydać się nieistotne) i pomoże Ci
84 stworzyć Twój pierwszy pakiet. Dzięki niemu nabierzesz trochę doświadczenia,
85 które przyda Ci się w trakcie budowania następnych wydań pakietu, a później może
86 również do tworzenia innych paczek.
87
88 <p>Najnowsza wersja tego dokumentu powinna być zawsze dostępna bezpośrednio
89 na stronie <url name="http://www.debian.org/doc/maint-guide/"
90 id="http://www.debian.org/doc/maint-guide"> oraz w pakiecie
91 `<package>maint-guide</package>'. Polskie tłumaczenie jest również dostępne
92 w pakiecie `<package>maint-guide-pl</package>'.
93
94 <sect id="needprogs">Programy, których potrzebujesz do dewelopmentu
95
96 <p>Zanim zaczniesz cokolwiek robić, powinieneś upewnić się, że masz
97 zainstalowanych kilka dodatkowych pakietów niezbędnych do dewelopmentu.
98 Zwróć uwagę, że na poniższej liście nie ma żadnych pakietów oznaczonych
99 jako `niezbędne' (essential) lub `wymagane' (required). Po prostu
100 zakładamy, że masz już je zainstalowane.
101
102 <p>Ta wersja podręcznika została uaktualniona z myślą o pakietach
103 wchodzących w skład Debiana 2.2 (`potato') oraz 3.0 (`woody').
104
105 <p>Następujące pakiety wchodzą w skład standardowej instalacji Debiana,
106 więc prawdopodobnie masz je (i dodatkowe pakiety, od których one zależą)
107 już zainstalowane. Mimo to powinieneś sprawdzić ich status za pomocą
108 polecenia `dpkg -s &lt;pakiet&gt;`.
109
110 <list>
111
112 <item><package>dpkg-dev</package> - pakiet zawierający narzędzia niezbędne do
113 rozpakowywania, budowania i wysyłania pakietów źródłowych Debiana
114 (więcej informacji znajdziesz na stronie podręcznika <manref name="dpkg-source"
115 section="1">).
116
117 <item><package>file</package> - przydatny program do określania typu pliku
118 (zobacz <manref name="file" section="1">).
119
120 <item><package>gcc</package> - kompilator GNU języka C, niezbędny gdy Twój
121 program, tak jak większość programów, został napisany w języku C
122 (zobacz <manref name="gcc" section="1">).
123 Pakiet ten jest powiązany z kilkoma innymi pakietami, takimi jak
124 <package>binutils</package>, który zawiera zestaw programów służących
125 do asemblacji i konsolidacji plików wynikowych (zobacz
126 `info binutils` w pakiecie <package>binutils-doc</package>) i
127 <package>cpp</package>, zawierający preprocesor języka C (zobacz
128 <manref name="cpp" section="1">).
129
130 <item><package>g++</package> - kompilator GNU języka C++, niezbędny gdy Twój program
131 został napisany w języku C++ (zobacz <manref name="g++" section="1">).
132
133 <item><package>libc6-dev</package> - biblioteki języka C i pliki nagłówkowe
134 kompilatora gcc niezbędne do konsolidacji plików wynikowych
135 (zobacz `info libc` w pakiecie <package>glibc-doc</package>).
136
137 <item><package>make</package> - na ogół proces tworzenia programu składa się z
138 szeregu kroków. Zamiast ciągłego powtarzania w kółko tych samych komend,
139 możesz posłużyć się programem, który automatyzuje cały proces. Jedyne co
140 musisz zrobić, to stworzyć plik(i) `Makefile' (zobacz `info make`).
141
142 <item><package>patch</package> - bardzo użyteczne narzędzie służące do
143 tworzenia łat, czyli utworzonych przez program diff plików z różnicami
144 pomiędzy plikami źródłowymi, i tworzenia w ten sposób "załatanych" (poprawionych)
145 wersji programów (zobacz <manref name="patch" section="1">).
146
147 <item><package>perl</package> - Perl jest jednym z najczęściej stosowanych
148 interpretowanych języków skryptowych w systemach kompatybilnych z systemem
149 Unix. Często określany jest jako "Uniksowy scyzoryk z piłą łańcuchową"
150 (po angielsku znacznie zabawniej: Unix's Swiss Army Chainsaw) - zobacz
151 <manref name="perl" section="1">.
152 </list>
153
154 <p>Najprawdopodobniej przydadzą się również następujące pakiety:
155
156 <list>
157
158 <item><package>autoconf</package> i <package>automake</package> - wiele
159 nowszych programów używa skryptów konfiguracyjnych i plików Makefile
160 przetworzonych za pomocą takich narzędzi (zobacz `info autoconf`
161 i `info automake`).
162
163 <item><package>dh-make</package> i <package>debhelper</package> - pakiet
164 dh-make jest niezbędny do stworzenia szablonu naszego przykładowego pakietu.
165 Używa on do tworzenia pakietów niektórych narzędzi z pakietu debhelper.
166 Pakiety te nie są niezbędne do budowania paczek, ale są <strong>bardzo</strong>
167 zalecane, szczególnie nowym opiekunom. Dzięki nim o wiele łatwiej rozpocząć
168 proces budowania pakietu i kontrolować go później (zobacz <manref name="dh_make"
169 section="1">, <manref name="debhelper" section="1"> i plik
170 /usr/share/doc/debhelper/README).
171
172 <item><package>devscripts</package> - pakiet zawierający parę użytecznych
173 i pomocnych dla opiekuna skryptów, które nie są jednakże niezbędne do budowania
174 pakietów (więcej informacji znajdziesz w pliku /usr/share/doc/devscripts/README.gz).
175
176 <item><package>fakeroot</package> - narzędzie, które pozwala "udawać" bycie
177 administratorem systemu (rootem). Uprawnienia administratora są niezbędne
178 w niektórych etapach procesu budowania pakietu (zobacz <manref name="fakeroot"
179 section="1">).
180
181 <item><package>gnupg</package> - narzędzie umożliwiające cyfrowe
182 <em>podpisanie</em> pakietów. Jest to szczególnie ważne, gdy zamierzasz
183 rozpowszechniać swój pakiet, a na pewno będziesz musiał to zrobić, gdyby Twój
184 pakiet miał być włączony do dystrybucji Debiana (zobacz <manref name="gpg"
185 section="1">).
186
187 <item><package>g77</package> - kompilator GNU języka Fortran 77,
188 niezbędny gdy Twój program został napisany w języku Fortran (zobacz
189 <manref name="g77" section="1">).
190
191 <item><package>gpc</package> - kompilator GNU języka Pascal, niezbędny gdy Twój
192 program został napisany w języku Pascal. Warty odnotowania w tym miejscu
193 jest również pakiet <package>fp-compiler</package> (Free Pascal Compiler),
194 który także nadaje się do tego celu (zobacz <manref name="gpc" section="1">
195 i <manref name="ppc386" section="1">).
196
197 <item><package>xutils</package> - niektóre programy, głównie dla X11,
198 używają tych narzędzi do wygenerowania plików Makefile z zestawu
199 makro-funkcji (zobacz <manref name="imake" section="1">
200 i <manref name="xmkmf" section="1">).
201
202 <item><package>lintian</package> - program służący do sprawdzania poprawności
203 pakietów Debiana. Poinformuje Cię, gdy w zbudowanej paczce znajdzie
204 błędy i wyjaśni ich przyczynę (zobacz <manref name="lintian" section="1">
205 oraz /usr/share/doc/lintian/lintian.html/index.html).
206
207 <item><package>pbuilder</package> - ten pakiet zawiera programy, które
208 są używane do tworzenia i zarządzania środowiskiem chroot. Budowanie
209 pakietów Debiana w tym środowisku weryfikuje poprawność zależności
210 i zapobiega powstawaniu błędów FTBFS (zobacz <manref name="pbuilder"
211 section="8"> i <manref name="pdebuild" section="1">).
212
213 </list>
214
215 <p>Poniżej wymieniamy <em>bardzo ważną</em> dokumentację,
216 która powinna być przeczytana razem z tym podręcznikiem:
217
218 <list>
219
220 <item><package>debian-policy</package> - Polityka Debiana opisuje strukturę
221 i zawartość archiwum Debiana, sprawy dotyczące sposobu projektowania systemu
222 operacyjnego, FHS (Standard Hierarchii Systemu Plików - Filesystem Hierarchy
223 Standard), który mówi, gdzie powinny się znajdować pliki i katalogi itd.
224 Dla Ciebie najważniejszy jest opis wymagań, które musi spełnić każdy pakiet,
225 aby mógł być włączony do dystrybucji (zobacz &debian-policy;).
226
227 <item><package>developers-reference</package> - opisuje wszystkie zagadnienia
228 nie związane z technicznymi szczegółami procesu tworzenia pakietów,
229 a więc strukturę archiwum, sposób zmian nazw pakietów, procedurę ich
230 osierocania i adopcji, umieszczania pakietów w archiwum Debiana, również
231 nie będąc opiekunem danego pakietu (Non-Maintainer Upload - NMU),
232 jak zarządzać błędami, najlepsze praktyki dotyczące pakowania,
233 kiedy i gdzie umieszczać pakiet itd. (zobacz &developers-reference;).
234 </list>
235
236 <p>Powyższe krótkie opisy służą jedynie jako wprowadzenie do opisu
237 każdego z pakietów. Zanim przejdziesz dalej, prosimy gruntownie zapoznać
238 się z dokumentacją do każdego z programów, a przynajmniej z ich standardowym
239 użyciem. Być może wydaje Ci się to teraz trudne, ale później będziesz
240 <em>bardzo</em> zadowolony z przeczytania tej dokumentacji.
241
242 <p>Uwaga: pakiet <package>debmake</package> zawiera niektóre programy
243 zbliżone funkcjonalnie do dh-make, ale ten dokument <strong>nie</strong>
244 omawia jego użycia, ponieważ jest on <em>przestarzały</em>.
245
246 <sect id="debiandeveloper">Oficjalny Deweloper Debiana
247
248 <p>Po zbudowaniu swojego pierwszego pakietu (albo w czasie budowania)
249 być może zechcesz zostać oficjalnym Deweloperem Debiana, aby wprowadzić
250 swój pakiet do kolejnej dystrybucji (jeśli program jest użyteczny, to
251 czemu nie?).
252
253 <p>Nie możesz zostać oficjalnym Deweloperem Debiana w ciągu jednej
254 nocy, gdyż do tego potrzebne jest coś więcej, niż umiejętności
255 techniczne. Niech Cię to jednak nie zniechęca. Możesz wysłać swój
256 pakiet, jeśli jest użyteczny dla innych, jako opiekun sponsorowany
257 przez zapisanie się na
258 <url name="stronie Nowych Opiekunów" id="&nm-home;">.
259 Sponsor jest oficjalnym Deweloperem Debiana, który pomaga opiekunom
260 włączać pakiety do archiwum Debiana. Więcej o procedurze przyjmowania
261 nowych opiekunów jest na stronie
262 <url id="&mentors-faq;" name="debian-mentors FAQ">.
263
264 <p>Zwracamy uwagę, że nie ma potrzeby tworzenia nowego pakietu, aby
265 stać się oficjalnym Deweloperem Debiana. Rozwój istniejących pakietów
266 jest również drogą mogącą prowadzić do zostania oficjalnym Deweloperem.
267
268 <sect id="otherinfo">Inne informacje
269
270 <p>Istnieją dwa rodzaje pakietów, jakie możesz stworzyć: źródłowe i binarne.
271 Pakiet źródłowy zawiera kod, który możesz skompilować, aby otrzymać binarną
272 postać programu. Pakiet binarny zawiera natomiast już gotowy do użycia
273 program. Prosimy nie mylić takich pojęć, jak źródło programu i pakiet źródłowy!
274 Więcej szczegółów na temat terminologii jest w innych podręcznikach.
275
276 <p>W Debianie termin `opiekun' (maintainer) oznacza osobę, która tworzy
277 pakiety (pakuje programy), `autor' (upstream author) - osobę, która tworzy program,
278 a `zewnętrzny opiekun' (upstream maintainer) - osobę, która aktualnie opiekuje
279 się programem, pozostając poza projektem Debian. Zwykle autor i zewnętrzny
280 opiekun są tą samą osobą - czasem nawet tą samą osobą jest opiekun.
281 Jeśli napisałeś jakiś program i chcesz, żeby wszedł w skład Debiana,
282 przyślij swoje zgłoszenie i zostań opiekunem.
283
284 <!-- -------------------------------------------------------------------------->
285
286 <chapt id="first">Pierwsze kroki
287
288 <sect id="choose">Wybierz swój program
289
290 <p>Prawdopodobnie wybrałeś już pakiet, który chcesz zbudować. Pierwszą rzeczą,
291 którą powinieneś zrobić, to sprawdzić, czy pakiet znajduje się już
292 w dystrybucji, przy pomocy programu <prgn>aptitude</prgn>.
293 Jeśli używasz dystrybucji 'stabilnej', zapewne najlepiej przejść do
294 <url name="strony wyszukiwania pakietów" id="http://www.debian.org/distrib/packages">.
295
296 <p>Jeśli pakiet już istnieje, to cóż, zainstaluj go! :-) Jeśli przypadkiem
297 jest on osierocony (jego opiekunem jest "Debian QA Group"), to być może
298 możesz się nim zaopiekować.
299
300 <p>Sprawdź na stronie
301 <url name="Pakietów Rokujących i Wymagających Pracy" id="http://www.debian.org/devel/wnpp/">
302 i stronach powiązanych ostatni status adopcji/osierocenia pakietu.
303
304 <p>Jeśli możesz zaadoptować pakiet, pobierz jego źródła (poleceniem
305 <tt>apt-get source nazwa_pakietu</tt>) i przetestuj go. Niestety ten
306 dokument nie zawiera informacji na temat adopcji pakietów. Za to
307 nie musisz męczyć się, rozpracowując działanie danego pakietu, gdyż
308 ktoś już wcześniej dokonał wstępnych ustawień. Ale czytaj dalej, bo
309 poniższe porady będą z pewnością wartościowe również dla Ciebie.
310
311 <p>Jeśli pakiet jest nowy i chciałbyś, żeby został włączony do dystrybucji
312 Debiana, wykonaj poniższe instrukcje:
313
314 <list>
315 <item>sprawdź na stronie <url name="lista pakietów w opracowaniu"
316 id="http://www.de.debian.org/devel/wnpp/being_packaged">, czy ktoś już nie
317 pracuje nad tym pakietem. Jeśli ktoś już to robi, to możesz się z nim
318 skontaktować, jeśli sądzisz, że mógłbyś mu pomóc. Jeśli nie - znajdź
319 jakiś inny interesujący Cię program, który nie ma jeszcze swojego opiekuna.
320 </item>
321
322 <item>program <strong>musi</strong> mieć licencję i, jeśli to możliwe,
323 najlepiej zgodną z <url name="Wytycznymi Debiana dotyczącymi Wolnego
324 Oprogramowania" id="http://www.debian.org/social_contract.html#guidelines">
325 oraz <strong>nie może</strong> wymagać pakietów spoza sekcji main
326 do kompilacji lub wykonania, bo jest to niezgodne z Polityką Debiana.
327 Jeśli nie zgadza się to z którąś z powyższych zasad, program może być
328 włączony do sekcji `contrib' lub `non-free', zależnie od sytauacji.
329 Gdy nie jesteś pewny, do której sekcji można włączyć program, wyślij tekst
330 licencji na listę <email>debian-legal@lists.debian.org</email>
331 i poproś o poradę.
332 </item>
333
334 <item>program z pewnością <strong>nie</strong> powinien być uruchamiany
335 z ustanowionym identyfikatorem administratora systemu (setuid root), a
336 jeszcze lepiej - nie powinien potrzebować ustanowionego żadnego
337 identyfikatora użytkownika lub grupy.</item>
338
339 <item>program nie powinien być demonem ani innym programem umieszczanym
340 w katalogu */sbin, ani nie powinien otwierać portu jako administrator
341 systemu.</item>
342
343 <item>program powinien mieć binarną, wykonywalną formę, biblioteki są
344 trudniejsze w utrzymaniu.</item>
345
346 <item>program powinien być dobrze udokumentowany, a kod
347 zrozumiały (np. nie zagmatwany).</item>
348
349 <item>powinieneś skontaktować się z autorem(ami) programu, aby sprawdzić
350 czy zgadzają się na jego zapakowanie. Ważną rzeczą jest możliwość
351 konsultacji z autorem w razie wystąpienia jakichś specyficznych problemów.
352 Nie próbuj pakować oprogramowania, którym się nikt nie zajmuje.</item>
353
354 <item>i na końcu, choć wcale nie jest to najmniej ważne, musisz wiedzieć jak
355 program działa i wypróbować go przez pewien czas.</item>
356 </list>
357
358 <p>Oczywiście powyższe zalecenia to po prostu zabezpieczenia, które mają
359 na celu uchronić Cię przed gniewem użytkowników, gdy zrobisz coś źle w
360 jakimś demonie z ustanowionym identyfikatorem użytkownika...
361 Gdy nabierzesz już więcej doświadczenia, będziesz mógł pakować
362 nawet takie programy, ale nawet najbardziej doświadczeni deweloperzy
363 konsultują się na liście dyskusyjnej Mentorów Debiana, gdy mają
364 jakieś wątpliwości. Ludzie stamtąd z pewnością chętnie pomogą.
365
366 <p>Więcej informacji na te tematy znajdziesz w dokumencie Developer's
367 Reference.
368
369 <sect id="getit">Weź program i wypróbuj go
370
371 <p>Pierwszą rzeczą, którą powinieneś zrobić, to odnalezienie i pobranie
372 oryginalnego pakietu. Zakładam, że już masz plik źródłowy, który pobrałeś
373 ze strony domowej jego autora. Źródła z wolnym oprogramowaniem dla Uniksa
374 są zwykle rozprowadzane w formacie tar/gzip, z rozszerzeniem
375 .tar.gz. Pliki te na ogół zawierają podkatalog o nazwie program-wersja,
376 w którym znajdują się wszystkie pliki źródłowe. Jeśli źródła wybranego przez
377 Ciebie programu są rozprowadzane w innego rodzaju archiwum (na przykład pliki
378 kończące się na ".Z" lub ".zip"), to wypakuj je przy pomocy odpowiedniego
379 narzędzia. Gdy nie jesteś pewien, jak zrobić to poprawnie, zapytaj
380 (po angielsku) na liście dyskusyjnej Mentorów Debiana (wskazówka:
381 temat `file archive.extension`).
382
383 <p>Jako przykładu będziemy używać programu o nazwie `gentoo' - menadżera
384 plików dla systemu X Windows, który wykorzystuje bibliotekę GTK+. Zwróć
385 uwagę, że program ten jest już zapakowany i znacznie się zmienił od czasu,
386 gdy pisany był ten tekst.
387
388 <p>W swoim katalogu domowym utwórz podkatalog o nazwie 'debian', 'deb' lub
389 jakkolwiek uważasz za właściwe (np. po prostu <file>~/gentoo/</file>
390 jest w tym przypadku dobrym rozwiązaniem). Umieść w nim pobrane archiwum
391 i rozpakuj je (za pomocą `tar xzf gentoo-0.9.12.tar.gz`). Upewnij się, że nie
392 ma żadnych błędów, nawet jakichś nieistotnych, ponieważ najprawdopodobniej
393 pojawią się problemy w czasie rozpakowywania w systemach innych użytkowników,
394 których narzędzia do wypakowywania mogą, ale nie muszą, ignorować takie
395 nieprawidłowości.
396
397 <p>Teraz w katalogu tym powinieneś mieć podkatalog o nazwie
398 `gentoo-0.9.12'. Wejdź do niego i <strong>dokładnie</strong> przeczytaj
399 znajdującą się tam dokumentację. Zwykle powinny tam być pliki o nazwach
400 README*, INSTALL*, *.lsm lub *.html. Odszukaj w dokumentacji instrukcji,
401 jak poprawnie skompilować i zainstalować program (najprawdopodobniej będą
402 one zakładać, że chcesz zainstalować program do katalogu /usr/local/bin;
403 ale Ty nie rób tak, więcej o tym w rozdziale <ref id="destdir">).
404
405 <p>Proces instalacji różni się w zależności od programu, ale wiele
406 nowoczesnych programów jest dostarczanych ze skryptem `configure',
407 który konfiguruje źródła pod Twoim systemem i sprawdza, czy spełniają one
408 warunki niezbędne do poprawnej kompilacji. Po zakończeniu konfiguracji
409 wykonywanej za pomocą polecenia `./configure`, programy są na ogół
410 kompilowane przy użyciu komendy `make`. Niektóre z nich pozwalają także
411 na użycie `make check`, który uruchamia procedurę samosprawdzającą.
412 Instalacja w katalogu przeznaczenia następuje zwykle po wydaniu polecenia
413 `make install`.
414
415 <p>Teraz spróbuj skompilować i uruchomić program, aby upewnić się czy działa
416 on prawidłowo i nic się nie psuje w czasie instalacji lub wykonywania.
417
418 <p>Możesz też zazwyczaj użyć polecenia `make clean` (lub lepiej `make
419 distclean`), aby posprzątać w katalogu, w którym kompilowałeś. Czasem
420 można nawet posłużyć się poleceniem `make uninstall`, które usunie wszystkie
421 zainstalowane pliki.
422
423 <sect id="namever">Nazwa pakietu i jego wersja
424
425 <p>Powinieneś rozpocząć pakowanie z zupełnie wyczyszczonym
426 (ang. pristine - pierwotnym) katalogiem źródłowym, ewentualnie ze świeżo
427 rozpakowanymi źródłami.
428
429 <p>Aby prawidłowo zbudować pakiet, musisz tak zmienić nazwę oryginalnego
430 programu, żeby występowały w niej tylko małe litery (o ile występują tam
431 jakieś wielkie litery). Powinieneś także przenieść katalog ze źródłami do
432 katalogu &lt;nazwa_pakietu&gt;-&lt;wersja&gt;.
433
434 <p>Jeśli nazwa programu składa się z więcej niż jednego wyrazu, to skróć
435 ją do jednego wyrazu albo utwórz skrót. Na przykład program
436 "John's little editor for X" powinien się nazywać johnledx, jle4x lub
437 jakoś tak. Pamiętaj jednak, aby jego długość nie przekraczała jakiejś
438 rozsądnej wartości, np. 20 znaków.
439
440 <p>Sprawdź także dokładnie wersję programu (będzie ona włączona do nazwy
441 pakietu). Jeśli do oznaczenia jego wersji autor nie użył konwencji X.Y.Z,
442 ale posłużył się datą, to Ty również możesz jej użyć do określenia wersji
443 pakietu, poprzedzając ją ciągiem "0.0." (na wypadek gdyby autor
444 programu zdecydował się kiedyś wydać wersję o miło brzmiącym numerze 1.0).
445 Zatem, jeśli datą wydania danej wersji programu było 19 grudnia 1998 r.,
446 to powinieneś oznaczyć jego wersję jako 0.0.19981219.
447
448 <p>Niektóre programy nie są jednak w żaden sposób numerowane. W takich
449 przypadkach powinieneś skontaktować się z zewnętrznym opiekunem, aby
450 dowiedzieć się, czy używa on jakiejś innej metody do oznaczania kolejnych
451 poprawek programu.
452
453 <sect id="dh_make">Wstępna "debianizacja"
454
455 <p>Upewnij się, że jesteś w katalogu ze źródłami programu i wydaj następujące
456 polecenie:
457
458 <p><example>
459 dh_make -e twój.adres@opiekuna.pl -f ../gentoo-0.9.12.tar.gz
460 </example>
461
462 <p>Oczywiście musisz zastąpić ciąg "twój.adres@opiekuna.pl" adresem Twojej
463 skrzynki pocztowej, gdyż zostanie on wpisany do pliku ze zmianami
464 (changelog) i innych plików, oraz zastąpić nazwę pliku
465 nazwą Twojego archiwum źródłowego. Więcej szczegółów znajdziesz
466 na stronie podręcznika <manref name="dh_make" section="1">.
467
468 <p>Trzeba też wprowadzić kilka dodatkowych informacji. Zostaniesz poproszony
469 o podanie typu pakietu, który tworzysz. Gentoo to pojedynczy pakiet binarny
470 - tworzy on tylko plik binarny, a zatem jeden plik .deb. W takim wypadku
471 zaznaczamy pierwszą opcję za pomocą klawisza `s'. Następnie sprawdzamy
472 informacje na ekranie i, jeśli wszystko się zgadza, potwierdzamy je
473 naciskając &lt;enter&gt;.
474
475 <p>Po wykonaniu <prgn>dh_make</prgn> jest tworzona kopia autorskiego
476 archiwum jako <file>gentoo_0.9.12.orig.tar.gz</file>, w katalogu
477 nadrzędnym, w celu dostosowania, jako niedebianowego pakietu
478 pakietu źródłowego, do <file>diff.gz</file>.
479 Nazwa tego pliku ma 2 zasadnicze właściwości:
480
481 <list compact>
482 <item>Nazwa pakietu i wersja są rozdzielone przez "<tt>_</tt>" .
483 <item>Został dodany sufiks "<tt>orig.</tt>" przed "<tt>tar.gz</tt>" .
484 </list>
485
486 <p>Powtórzmy: ponieważ jesteś jeszcze nowym opiekunem, odradzamy
487 Ci tworzenie skomplikowanych pakietów, takich jak:
488 <list compact>
489 <item>wielokrotne pakiety binarne
490 <item>pakiety bibliotek
491 <item>z plików źródłowych innych niż <tt>tar.gz.</tt> lub <tt>tar.bz2</tt>, czy też
492 <item>z archiwów, których zawartość nie może być dystrybuowana.
493 </list>
494
495 <p>Prosimy zauważyć, że powinno się uruchomić program <prgn>dh_make</prgn>
496 <strong>tylko jeden raz</strong>, gdyż nie zachowa się on poprawnie, gdy
497 uruchomisz go ponownie w tym samym już "zdebianizowanym" katalogu. Oznacza
498 to również, że będziesz musiał użyć innej metody, aby wprowadzić
499 w przyszłości nową poprawkę lub nową wersję pakietu. Więcej informacji
500 na ten temat znajdziesz dalej w rozdziale <ref id="update">.
501
502 <!-- -------------------------------------------------------------------------->
503
504 <chapt id="modify">Modyfikacja źródła
505
506 <p>Normalnie programy instalują się w podkatalogach katalogu /usr/local.
507 Pakiety Debiana nie mogą jednak używać tego katalogu, gdyż jest on
508 zarezerwowany do prywatnego użycia przez administratora (lub użytkowników)
509 systemu. Oznacza to, że musisz się przyjrzeć, jak budowany jest Twój program,
510 zwykle za pomocą pliku Makefile. Jest to skrypt programu <manref name="make"
511 section="1"> używanego do automatycznego budowania programu. Więcej szczegółów
512 na temat plików Makefile znajdziesz w rozdziale <ref id="rules">.
513
514 <p>Zwróć też uwagę na to, czy Twój program używa programów GNU
515 <manref name="automake" section="1"> i/lub <manref name="autoconf"
516 section="1">, czyli czy źródła programu zawierają plik Makefile.am i/lub
517 Makefile.in, to je będziesz musiał wtedy modyfikować. Dzieje się tak,
518 ponieważ każde wywołanie programu automake powoduje ponowne utworzenie pliku
519 Makefile.in z informacjami wygenerowanymi z pliku Makefile.am. Także każde
520 wywołanie skryptu ./configure zrobi to samo z plikiem Makefile, na podstawie
521 pliku Makefile.in. Edycja plików Makefile.am wymaga pewnej wiedzy
522 na temat programu automake, możesz o nim poczytać za pomocą komendy `info
523 automake'. Edytowanie plików Makefile.in odbywa się niemal tak samo, jak
524 w przypadku plików Makefile, po prostu trzeba zwracać uwagę na zmienne,
525 tzn. wszystkie łańcuchy otoczone przez znaki `@', dla przykładu zmienna
526 @CFLAGS@ lub @LN_S@ będzie zastępowana odpowiednią wartością przy każdym
527 wywołaniu skryptu ./configure. Przeczytaj dokumentację
528 <file>&autotools-dev;</file>, zanim zaczniesz modyfikacje.
529
530 <p>Zauważ również, że nie ma tu wystarczającego miejsca, aby opisać
531 <em>wszystkie</em> szczegóły na temat poprawiania zewnętrznych źródeł.
532 Przedstawiam tu jedynie kilka problemów, z którymi często można się
533 spotkać.
534
535 <sect id="destdir">Instalacja w podkatalogu
536
537 <p>Wiekszość programów posiada swój własny sposób instalowania się
538 w istniejącej strukturze katalogów systemu. Binaria trafiają do katalogów
539 określonych zmienną środowiskową $PATH, zaś dokumentacja i strony podręcznika
540 są umieszczane w zwykle stosowanych miejscach. Jednakże, jeśli pozwolisz
541 na takie działanie, program może się zainstalować w każdym miejscu systemu.
542 Może sprawić to problemy narzędziom do obsługi pakietów, gdyż nie będą one
543 wiedziały, które pliki należą do Twojej paczki, a które nie.
544
545 <p>Zatem musisz zrobić coś innego: zainstalować swój program w tymczasowym
546 katalogu, z którego narzędzia opiekuna zbudują działający pakiet .deb.
547 Wszystko co zawiera ten katalog, zostanie zainstalowane w systemie
548 użytkowników, gdy zdecydują się oni zainstalować Twój pakiet, z tą tylko
549 różnicą, że program dpkg zainstaluje pliki względem katalogu głównego
550 systemu.
551
552 <p>Ten tymczasowy katalog jest zazwyczaj tworzony wewnątrz Twojego
553 katalogu debian/ w rozpakowanym drzewie ze źródłami. Na ogół ma on nazwę
554 <file>debian/nazwa_pakietu</file>.
555
556 <p>Pamiętaj, że nie wystarczy, żeby program zachowywał się poprawnie,
557 gdy zostanie on zainstalowany się w katalogu debian/nazwa_pakietu. Musi on
558 zachowywać się właściwie także, gdy zostanie umieszczony w głównym katalogu
559 systemu. Zatem nie wolno pozwolić, żeby w plikach pakietu zostały "zaszyte"
560 pełne ścieżki, np. <tt>/home/ja/deb/gentoo-0.9.12/usr/share/gentoo</tt>.
561
562 <p>Sprawa jest prosta, gdy programy używają narzędzia GNU autoconf.
563 Większość z nich posiada pliki Makefile, które domyślnie są ustawione w taki
564 sposób, aby zezwalać na instalację w dowolnym podkatalogu zakładając,
565 że katalog /usr (dla przykładu) jest kanonicznym prefiksem. Gdy zostanie
566 wykryte, że Twój program używa autoconfa, to dh_make ustawi
567 odpowiednie polecenia tak, żeby wszystko zostało zrobione automatycznie.
568 W takich przypadkach możesz nawet ominąć dalsze czytanie tej sekcji.
569 Jednak z innymi programami będziesz miał więcej pracy i prawdopodobnie
570 będziesz musiał przejrzeć i wyedytować pliki Makefile.
571
572 <p>Poniżej znajduje się odpowiednia część pliku Makefile programu gentoo:
573
574 <p><example>
575 # Katalog binariów dla 'make install'
576 BIN = /usr/local/bin
577
578 # Katalog ikon dla 'make install'
579 ICONS = /usr/local/share/gentoo
580 </example>
581
582 <p>Widzimy, że pliki te zostaną zainstalowane w katalogu
583 <file>/usr/local</file>. Zmieńmy zatem ścieżki na następujące:
584
585 <p><example>
586 # Katalog binariów dla 'make install'
587 BIN = $(DESTDIR)/usr/bin
588
589 # Katalog ikon dla 'make install'
590 ICONS = $(DESTDIR)/usr/share/gentoo
591 </example>
592
593 <p>Ale dlaczego właśnie w tym katalogu, a nie w jakimś innym? Ponieważ pakiety
594 Debiana nigdy nie instalują plików w katalogu <file>/usr/local</file>.
595 Ten katalog jest zarezerwowany na potrzeby administratora systemu. W systemie
596 Debian zaś takie pliki trafiają do katalogu <file>/usr</file>.
597
598 <p>Dokładniejsze informacje na temat położenia binariów, ikon, dokumentacji
599 itd. są opisane w dokumencie Filesystem Hierarchy Standard (zobacz
600 w katalogu /usr/share/doc/debian-policy/fhs/). Polecamy Ci przejrzenie tego
601 dokumentu i przeczytanie tych sekcji, które mogą dotyczyć Twojego pakietu.
602
603 <p>Zatem powinniśmy instalować pliki binarne w katalogu /usr/bin, a nie
604 w /usr/local/bin, strony podręcznika w katalogu /usr/share/man/man1, a nie
605 w /usr/local/man/man1 itd. Zauważ, że w pliku Makefile programu gentoo nie
606 wspomniano o jego stronie podręcznika, ale ponieważ Polityka Debiana wymaga,
607 żeby każdy program posiadał taką stronę, to stworzymy ją później
608 i zainstalujemy w katalogu /usr/share/man/man1.
609
610 <p>Niektóre programy nie używają zmiennych w plikach Makefile do definiowania
611 ścieżek, takich jak te powyżej. Oznacza to, że będziesz musiał wyedytować
612 niektóre źródła napisane w języku C i tak je poprawić, aby używały właściwych
613 katalogów. Ale gdzie i czego właściwie szukać? Możesz to odnaleźć wydając
614 polecenie:
615
616 <p><example>
617 grep -nr -e 'usr/local/lib' --include='*.[c|h]' .
618 </example>
619
620 <p>Program grep przeszuka rekursywnie całe drzewo ze źródłami i wypisze
621 nazwy plików i numery linii, gdy odnajdzie szukany wzorzec.
622
623 <p>Wyedytuj te pliki i w odnalezionych liniach zastąp ciąg /usr/local/*
624 ciągiem usr/* &mdash; i to już wszystko. Zrób to uważnie, aby nie zepsuć
625 pozostałej części kodu! :-)
626
627 <p>Następnie powinieneś odnaleźć w pliku Makefile cel `install'
628 (szukaj linii rozpoczynającej się od ciągu "install:') i zmienić wszystkie
629 odniesienia do katalogów innych, niż te zdefiniowane na początku
630 pliku Makefile. Przed zmianą, cel `install' programu gentoo był następujący:
631
632 <p><example>
633 install: gentoo
634 install ./gentoo $(BIN)
635 install icons/* $(ICONS)
636 install gentoorc-example $(HOME)/.gentoorc
637 </example>
638
639 <p>Po wykonaniu zmian wygląda on następująco:
640
641 <example>
642 install: gentoo-target
643 install -d $(BIN) $(ICONS) $(DESTDIR)/etc
644 install ./gentoo $(BIN)
645 install -m644 icons/* $(ICONS)
646 install -m644 gentoorc-example $(DESTDIR)/etc/gentoorc
647 </example>
648
649 <p>Na pewno zauważyłeś, że teraz przed pozostałymi poleceniami w tej
650 regule będzie wykonywana komenda <tt>install -d</tt>. Oryginalny plik
651 Makefile nie miał jej, gdyż zwykle katalog /usr/local/bin i inne katalogi
652 istnieją już w systemie, zanim wyda się polecenie `make install`.
653 Jednakże, gdy instalujemy program do własnego, pustego (lub nawet
654 nie istniejącego) katalogu, to będziemy musieli utworzyć każdy z tych
655 katalogów.
656
657 <p>Możemy również dodać inne rzeczy na końcu tej reguły, na przykład
658 instalację dodatkowej dokumentacji, którą autor programu czasem pomija:
659
660 <p><example>
661 install -d $(DESTDIR)/usr/share/doc/gentoo/html
662 cp -a docs/* $(DESTDIR)/usr/share/doc/gentoo/html
663 </example>
664
665 <p>Uważny czytelnik zauważy, że zmieniliśmy `gentoo' na `gentoo-target' w linii
666 rozpoczynającej się od ciągu `install:'. To jest tzw. poprawka niedotycząca
667 (unrelated bug fix) :-)
668
669 <p>Ilekroć dokonasz zmian, które nie są ściśle związane z pakietem Debiana,
670 poinformuj o nich opiekuna zewnętrznego, aby mógł on je włączyć do następnej
671 wersji programu i by również ktoś inny mógł z nich skorzystać.
672 Pamiętaj także, żeby tworzyć poprawki nie specyficzne dla Debiana,
673 Linuksa (lub nawet Uniksa!) przed ich wysłaniem &mdash; niech będą one
674 przenośne. Dzięki temu Twoje łaty będzie łatwiej nałożyć.
675
676 <p>Zauważ, że nie musisz wysyłać autorowi programu plików debian/*.
677
678 <sect id="difflibs">Nie zgadzające się biblioteki
679
680 <p>Tutaj mamy pewien dość powszechny problem: biblioteki często różnią się
681 pomiędzy platformami. Dla przykładu, plik Makefile może zawierać odwołania
682 do biblioteki, której nie ma Debianie. W takim przypadku musimy zamienić ją
683 na bibliotekę, która jest dostępna w Debianie i służy tym samym celom.
684
685 <p>Jeśli zatem w pliku Makefile (lub Makefile.in) Twojego programu istnieje
686 linia podobna do tej poniżej (i Twój program nie chce się skompilować):
687
688 <p><example>
689 LIBS = -lcurses -lcoś -lcoś_innego
690 </example>
691
692 <p>to zmień ją w pokazany sposób i to powinno pomóc:
693
694 <p><example>
695 LIBS = -lncurses -lcoś -lcoś_innego
696 </example>
697
698 <p>(Autor zdaje sobie sprawę, że to nie jest najlepszy przykład,
699 zważywszy na to, że pakiet libncurses jest teraz dostarczany wraz z
700 dowiązaniem symbolicznym do biblioteki libcurses.so, ale nie mógł wymyślić
701 niczego lepszego. Sugestie będą bardzo mile widziane :-)
702
703 <!-- -------------------------------------------------------------------------->
704
705 <chapt id="dreq">Rzeczy wymagane w katalogu debian/
706
707 <p>W katalogu ze źródłami Twojego programu powstał nowy podkatalog,
708 który nazywa się `debian'. Zawiera on kilka plików, które powinniśmy
709 wyedytować, aby umożliwić działanie pakietu. Najważniejszymi z nich są pliki
710 `control', `changelog', `copyright' i 'rules', które są wymagane
711 w każdym pakiecie.
712
713 <sect id="control">Plik `control'
714
715 <p>Ten plik zawiera różne informacje, których używaja programy <prgn/dpkg/,
716 <prgn/dselect/ oraz inne narzędzia służące do zarządzania pakietem.
717
718 <p>Poniżej przedstawiono plik control utworzony przez program dh_make:
719
720 <p><example>
721 1 Source: gentoo
722 2 Section: unknown
723 3 Priority: optional
724 4 Maintainer: Josip Rodin &lt;joy-mg@debian.org&gt;
725 5 Build-Depends: debhelper (>> 3.0.0)
726 6 Standards-Version: 3.6.2
727 7
728 8 Package: gentoo
729 9 Architecture: any
730 10 Depends: ${shlibs:Depends}
731 11 Description: &lt;insert up to 60 chars description&gt;
732 12 &lt;insert long description, indented with spaces&gt;
733 </example>
734 (dodałem numery linii)
735
736 <p>Linie 1-6 zawierają informacje kontrolne dla pakietu źródłowego.
737
738 <p>Linia 1. zawiera nazwę pakietu źródłowego.
739
740 <p>Linia 2. oznacza sekcję dystrybucji, do której należy pakiet źródłowy.
741
742 <p>Być może zauważyłeś, że Debian jest podzielony na następujące sekcje:
743 `main' (zawiera wolne oprogramowanie), `non-free' (zawiera oprogramowanie,
744 które nie jest wolne) i `contrib' (zawiera wolne oprogramowanie, które
745 zależy od oprogramowania, które nie jest wolne). Dodatkowo każda z sekcji
746 dzieli się na logiczne podsekcje, które skrótowo opisują, do czego służy
747 dany pakiet. Mamy zatem sekcję `admin', która zawiera programy przeznaczone
748 tylko dla administratora systemu, `base' z podstawowymi narzędziami, `devel'
749 z narzędziami programistów, `doc' z dokumentacją, `libs' z bibliotekami,
750 `mail' z programami do obsługi poczty elektronicznej, `net' z aplikacjami
751 sieciowymi i demonami usług sieciowych, `x11' z programami dla systemów X11,
752 które nie pasują nigdzie indziej i wiele innych.
753
754 <p>Zmieńmy ją zatem na x11. Prefiks "main/" jest przyjmowany domyślnie,
755 więc możemy go pominąć.
756
757 <p>Linia 3. opisuje, jak ważne jest to, aby użytkownik zainstalował dany
758 pakiet. Więcej informacji na temat wartości, jakie może przyjmować to pole
759 znajdziesz w podręczniku Polityki Debiana. Dla nowych pakietów zazwyczaj może
760 ono przyjmować wartość "optional".
761
762 <p>Sekcja (Section) i priorytet (Priority) są używane przez nakładki,
763 jak program <prgn/dselect/, które używają ich do sortowania pakietów i wyboru
764 domyślnego zestawu pakietów do zainstalowania. Gdy będziesz umieszczał swój
765 pakiet w archiwum Debiana, wartość tych dwóch pól może być zmieniona przez
766 opiekunów archiwum. W takich przypadkach zostaniesz o tym powiadomiony
767 e-mailem.
768
769 <p>Ponieważ jest to pakiet o normalnym priorytecie i nie jest w konflikcie
770 z innym pakietem, to pozostawiamy tam wartość "optional".
771
772 <p>Linia 4. zawiera imię i nazwisko oraz adres e-mail opiekuna pakietu.
773 Upewnij się, że pole to zawiera wartość odpowiednią dla nagłówka "To: "
774 wiadomości pocztowej, gdyż po umieszczeniu pakietu w archiwum system
775 śledzenia błędów użyje tego pola do wysyłania Ci e-maili ze zgłoszeniami
776 błędów. Nie stosuj przecinków, ampersandów (`&amp;') i nawiasów.
777
778 <p>Linia 5. zawiera listę pakietów wymaganych do zbudowania Twojego
779 pakietu. Niektóre pakiety, na przykład gcc czy make, są założone z góry,
780 więcej szczegółów na temat znajdziesz w pakiecie <package/build-essential/.
781 Jeśli do zbudowania Twojego pakietu jest potrzebny jakiś niestandardowy
782 kompilator lub inne narzędzie, to powinieneś dodać tutaj linię
783 `Build-Depends'. Wpisy są oddzielane od siebie za pomocą przecinków;
784 przeczytaj objaśnienia na temat zależności binariów, aby dowiedzieć się
785 więcej na temat składni tego pola.
786
787 <p>Możesz także użyć w tym miejscu takich pól jak Build-Depends-Indep,
788 Build-Conflicts i innych. Dane te są używane przez oprogramowanie do
789 automatycznego budowania pakietów Debiana w celu stworzenia pakietów
790 binarnych przeznaczonych dla innych platform komputerowych. Więcej
791 informacji na temat zależności budowania pakietów znajdziesz w podręczniku
792 Polityki. Dokument Developers' Reference zawiera szczegóły na temat innych
793 platform (architektur) oraz adaptowania (ang. porting) do nich
794 oprogramowania.
795
796 <p>Poniżej pokazano sztuczkę, dzięki której odszukasz pakiety,
797 których potrzebuje do zbudowania Twój pakiet:
798
799 <example>
800 strace -f -o /tmp/log ./configure
801 # or make instead of ./configure, if the package doesn't use autoconf
802 for x in `dpkg -S $(grep open /tmp/log|\
803 perl -pe 's!.* open\(\"([^\"]*).*!$1!' |\
804 grep "^/"| sort | uniq|\
805 grep -v "^\(/tmp\|/dev\|/proc\)" ) 2>/dev/null|\
806 cut -f1 -d":"| sort | uniq`; \
807 do \
808 echo -n "$x (>=" `dpkg -s $x|grep ^Version|cut -f2 -d":"` "), "; \
809 done
810 </example>
811
812 <p>Aby ręcznie znaleźć kompletny zestaw zależności dla programu
813 <prgn><var>/usr/bin/foo</var></prgn>, wykonaj
814 <example>
815 objdump -p <var>/usr/bin/foo</var> | grep NEEDED
816 </example>
817 a dla każdej znalezionej biblioteki, np. <prgn>libfoo.so.6</prgn>, wykonaj
818 <example>
819 dpkg -S libfoo.so.6
820 </example>
821 Potem tylko weź wersję -dev każdej z nich jako pozycję w `Build-deps'.
822 Jeśli używasz do tego celu <prgn>ldd</prgn>, pokazuje on
823 również zależności niebezpośrednie, co skutkuje zbyt dużą liczbą
824 wykazywanych zależności.
825
826 <p>Tak więc program gentoo wymaga do zbudowania pakietów <package/xlibs-dev/,
827 <package/libgtk1.2-dev/ i <package/libglib1.2-dev/, więc dodajmy je
828 za pakietem <package/debhelper/.
829
830 <p>Linia 6. jest wersją standardów polityki Debiana, którą dany pakiet
831 spełnia, wersję podręcznika Polityki, który czytasz w trakcie tworzenia
832 Twojego pakietu.
833
834 <p>Linia 8. to nazwa pakietu binarnego. Zwykle jest ona taka sama jak nazwa
835 pakietu źródłowego, ale nie musi to być regułą.
836
837 <p>Linia 9. opisuje architekturę procesora, dla którego może być
838 skompilowany pakiet. Pozostawimy w niej "any", gdyż pakiet
839 <manref name="dpkg-gencontrol" section="1"> sam wstawi w tym miejscu
840 odpowiednią wartość dla każdego typu maszyny, na której kompilowany jest
841 pakiet.
842
843 <p>Jeśli Twój pakiet jest niezależny od architektury procesora (dla przykładu
844 skrypt powłoki lub Perla, albo jakiś dokument), wpisz tutaj "all"
845 i poczytaj później w sekcji <ref id="rules"> na temat używania reguły
846 `binary-indep' zamiast `binary-arch' do budowania pakietu.
847
848 <p>Linia 10. pokazuje jedną z najpotężniejszych cech systemu pakietów
849 Debiana. Pakiety mogą znajdować się w różnych relacjach z innymi pakietami.
850 Oprócz pola Depends: mogą też występować pola opisujące inne związki:
851 Recommends:, Suggests:, Pre-Depends:, Conflicts:, Provides: i Replaces:.
852
853 <p>Narzędzia do zarządzania pakietami zwykle zachowują się w ten sam sposób
854 w czasie ustalania relacji między pakietami. Jeśli tak nie jest,
855 zostanie to wkrótce wyjaśnione (zobacz <manref name="dpkg" section="8">,
856 <manref name="dselect" section="8">, <manref name="apt" section="8">,
857 <manref name="aptitude" section="1">, itd.).
858
859 <p>Pola te oznaczają:
860
861 <p><list>
862 <item>Depends: (Wymaga)
863 <p>Pakiet nie zostanie zainstalowany o ile pakiety, których on wymaga nie
864 są już zainstalowane w systemie. Użyj tego pola, gdy Twój program absolutnie
865 nie może być uruchomiony (lub z dużymi trudnościami), jeśli któryś z tych
866 pakietów nie jest obecny w systemie.</item>
867
868 <item>Recommends: (Zaleca)
869 <p>Nakładki takie jak dselect czy aptitude zachęcą Cię do zainstalowania
870 zalecanych pakietów wraz z Twoim pakietem; dselect będzie nawet na to
871 nalegać. Programy dpkg i apt-get jednak zignorują te pole. Użyj go
872 dla pakietów, które nie są niezbędne, ale są zwykle używane razem z Twoim
873 programem.</item>
874
875 <item>Suggests: (Poleca)
876 <p>Gdy użytkownik instaluje Twój program, wszystkie nakładki zachęcą go także
877 do zainstalowania pakietów, które on poleca. Programy dpkg i apt-get nie
878 będą się o to troszczyć. Użyj tego pola dla pakietów, które lepiej działają
879 z Twoim programem, ale nie są dla niego niezbędne.</item>
880
881 <item>Pre-Depends: (Przed-Wymaga)
882 <p>Jest to silniejsza relacja niż Depends:. Pakiet nie zostanie zainstalowany
883 o ile pakiety, od których jest on przed-zależny nie są zainstalowane
884 w systemie i <em>poprawnie skonfigurowane</em>. Używaj tego pola
885 <strong>bardzo</strong> oszczędnie i jedynie po przedyskutowaniu tego na
886 liście debian-devel. Czytaj: nie używaj go nigdy. :-)</item>
887
888 <item>Conflicts: (PowodujeKonflikt)
889 <p>Pakiet nie zostanie zainstalowany, dopóki wszystkie pakiety, które powodują
890 konflikt nie zostaną wcześniej usunięte z systemu. Użyj tego pola, gdy Twój
891 program absolutnie nie może być uruchomiony lub spowoduje jakieś problemy,
892 jeśli jakiś inny pakiet jest obecny w systemie.</item>
893
894 <item>Provides: (Dostarcza)
895 <p>Dla niektórych rodzajów pakietów zostało zdefiniowanych wiele
896 alternatywnych nazw wirtualnych. Pełną listę tych pakietów znajdziesz w pliku
897 /usr/share/doc/debian-policy/virtual-package-names-list.txt.gz. Użyj tego
898 pola, jeśli Twój program dostarcza funkcjonalności istniejącego już pakietu
899 wirtualnego.</item>
900
901 <item>Replaces: (Zastępuje)
902 <p>Użyj tego pola, gdy Twój program zastępuje pliki jakiegoś innego pakietu
903 lub zupełnie zastępuje jakiś pakiet (używane łącznie z polem Conflicts:).
904 Pliki z wymienionych pakietów zostaną nadpisane przez pliki z Twojego
905 pakietu.
906 </item>
907 </list>
908
909 <p>Wszystkie te pola mają jednolitą składnię. Jest to lista nazw pakietów
910 oddzielonych za pomocą przecinka. Nazwy pakietów mogą również być listami
911 alternatywnych nazw pakietów oddzielonych przy pomocy symbolu <tt>|</tt>
912 (symbol potoku).
913
914 <p>Pola mogą ograniczać swoje zastosowanie tylko do szczególnych wersji
915 każdego wymienionego pakietu. Wersje te są umieszczone w nawiasach po każdej
916 nazwie pakietu i powinny zawierać relacje między numerami wersji pakietów.
917 Dozwolonymi relacjami są: <tt>&lt;&lt;</tt>, <tt>&lt;=</tt>, <tt>=</tt>,
918 <tt>&gt;=</tt> i <tt>&gt;&gt;</tt>, odpowiednio: wcześniejszy, wcześniejszy
919 lub równy, dokładnie równy, późniejszy lub równy i późniejszy. Dla przykładu:
920
921 <p><example>
922 Depends: foo (>= 1.2), libbar1 (= 1.3.4)
923 Conflicts: baz
924 Recommends: libbaz4 (>> 4.0.7)
925 Suggests: quux
926 Replaces: quux (<< 5), quux-foo (<= 7.6)
927 </example>
928
929 <p>Ostatnią cechą, o której powinieneś wiedzieć, jest ${shlibs:Depends}.
930 Gdy Twój pakiet zostanie zbudowany i zainstalowany w tymczasowym katalogu,
931 program <manref name="dh_shlibdeps" section="1"> "prześwietli" go
932 w poszukiwaniu binariów i bibliotek, określi jakich
933 bibliotek współdzielonych wymaga i wykryje, w których pakietach się
934 one znajdują, na przykład libc6 lub xlib6g. Następnie program
935 <manref name="dh_gencontrol" section="1"> umieści ich nazwy we właściwym
936 miejscu, więc nie musisz się o to martwić.
937
938 <p>Skoro już wszystko to zostało powiedziane, możemy pozostawić linię 10.
939 w takiej postaci jak teraz i wstawić po niej <tt>Suggests: file</tt>,
940 ponieważ gentoo może użyć niektórych funkcjonalności dostarczanych przez
941 ten program/pakiet.
942
943 <p>Linia 11. jest krótkim opisem pakietu. Większość ekranów tekstowych ma
944 szerokość 80 kolumn, więc nie powinna ona zawierać więcej niż 60 znaków.
945 Ja wpisałem w niej "fully GUI configurable X file manager using GTK+"
946 (w pełni konfigurowalny okienkowy manager plików używający GTK+).
947
948 <p>Od linii 12. zaczyna się dłuższy opis pakietu. Powinien to być akapit
949 z większą liczbą szczegółów na temat pakietu. Pierwsza kolumna każdej linii
950 długiego opisu powinna być pusta. Ponieważ opis ten nie może zawierać pustych
951 linii, wszędzie tam gdzie chciałbyś je wstawić, musisz umieścić znak .
952 (kropka) w kolumnie nr 2. Także na końcu długiego opisu nie może się pojawić
953 więcej niż jedna pusta linia.
954
955 <p>A oto końcowa postać uaktualnionego pliku `control':
956
957 <p><example>
958 1 Source: gentoo
959 2 Section: x11
960 3 Priority: optional
961 4 Maintainer: Josip Rodin &lt;joy-mg@debian.org&gt;
962 5 Build-Depends: debhelper (>> 3.0.0), xlibs-dev, libgtk1.2-dev, libglib1.2-dev
963 6 Standards-Version: 3.5.2
964 7
965 8 Package: gentoo
966 9 Architecture: any
967 10 Depends: ${shlibs:Depends}
968 11 Suggests: file
969 12 Description: fully GUI configurable X file manager using GTK+
970 13 gentoo is a file manager for Linux written from scratch in pure C. It
971 14 uses the GTK+ toolkit for all of its interface needs. gentoo provides
972 15 100% GUI configurability; no need to edit config files by hand and re-
973 16 start the program. gentoo supports identifying the type of various
974 17 files (using extension, regular expressions, or the 'file' command),
975 18 and can display files of different types with different colors and icons.
976 19 .
977 20 gentoo borrows some of its look and feel from the classic Amiga file
978 21 manager "Directory OPUS" (written by Jonathan Potter).
979 </example>
980 (numery linii zostały dodane przeze mnie)
981
982 <sect id="copyright">Plik `copyright'
983
984 <p>Plik ten zawiera informacje o zewnętrznych (ang. upstream) zasobach pakietu,
985 prawach autorskich i licencji. Jego format nie jest narzucony przez Politykę
986 Debiana, ale jego zawartość już tak (zobacz sekcję 12.5 "Informacje o prawach
987 autorskich").
988
989 <p>Program dh_make stworzył już domyślny plik, którego zawartość jest
990 podobna do tej poniżej:
991
992 <p><example>
993 1 This package was debianized by Josip Rodin &lt;joy-mg@debian.org&gt; on
994 2 Wed, 11 Nov 1998 21:02:14 +0100.
995 3
996 4 It was downloaded from &lt;fill in ftp site&gt;
997 5
998 6 Upstream Author(s): &lt;put author(s) name and email here&gt;
999 7
1000 8 Copyright:
1001 9
1002 10 &lt;Must follow here&gt;
1003 </example>
1004 (numery linii zostały dodane przeze mnie)
1005
1006 <p>Ważnymi rzeczami, które powinieneś dodać do tego pliku, jest miejsce,
1007 z którego pobrałeś pakiet ze źródłami oraz informacje o prawach autorskich
1008 i licencji. Musisz dołączyć kompletną treść licencji, chyba że jest to jedna
1009 z popularnych licencji wolnego oprogramowania, takich jak GNU GPL czy LGPL,
1010 BSD lub licencja Artystyczna. W takiej sytuacji możesz po prostu odesłać do
1011 odpowiedniego pliku w katalogu /usr/share/common-licenses/, który występuje
1012 w każdym systemie Debian.
1013
1014 <p>Poniżej pokazano w skrócie, jak powinien wyglądać plik `copyright' dla
1015 programu gentoo:
1016
1017 <p><example>
1018 1 This package was debianized by Josip Rodin &lt;joy-mg@debian.org&gt; on
1019 2 Wed, 11 Nov 1998 21:02:14 +0100.
1020 3
1021 4 It was downloaded from: ftp://ftp.obsession.se/gentoo/
1022 5
1023 6 Upstream author: Emil Brink &lt;emil@obsession.se&gt;
1024 7
1025 8 This software is copyright (c) 1998-99 by Emil Brink, Obsession
1026 9 Development.
1027 10
1028 11 You are free to distribute this software under the terms of
1029 12 the GNU General Public License either version 2 of the License,
1030 13 or (at your option) any later version.
1031 14 On Debian systems, the complete text of the GNU General Public
1032 15 License can be found in the file `/usr/share/common-licenses/GPL-2'.
1033 </example>
1034 (numery linii zostały dodane przeze mnie)
1035
1036 <p>Prosimy postępować zgodnie z plikiem HOWTO z listy debian-devel-announce:
1037 <url id="&copyright-howto;">.
1038
1039 <sect id="changelog">Plik `changelog'
1040
1041 <p>Jest plikiem wymaganym, którego format opisano w Polityce
1042 Debiana (sekcja 4.4 "debian/changelog"). Format ten jest wykorzystywany przez
1043 dpkg i inne programy do uzyskiwania informacji o numerze wersji, numerze rewizji
1044 (poprawki), dystrybucji i pilności Twojego pakietu.
1045
1046 <p>Jest on także ważny dla Ciebie, ponieważ dobrze jest mieć udokumentowane
1047 wszystkie zmiany, których dokonałeś. Pomaga to ludziom pobierającym Twój pakiet
1048 zorientować się, czy nie zrobiłeś z pakietem czegoś, o czym powinni oni
1049 wiedzieć. Zmiany te zostaną zapisane do pliku
1050 `/usr/share/doc/gentoo/changelog.Debian.gz' w pakiecie binarnym.
1051
1052 <p>Program dh_make również tworzy ten plik, którego zawartość wygląda mniej
1053 więcej tak:
1054
1055 <p><example>
1056 1 gentoo (0.9.12-1) unstable; urgency=low
1057 2
1058 3 * Initial Release.
1059 4
1060 5 -- Josip Rodin &lt;joy-mg@debian.org&gt; Wed, 11 Nov 1998 21:02:14 +0100
1061 6
1062 </example>
1063 (numery linii zostały dodane przeze mnie)
1064
1065 <p>Linia 1. zawiera nazwę pakietu, wersję, dystrybucję i pilność.
1066 Nazwa musi się zgadzać z nazwą pakietu źródłowego, dystrybucja powinna mieć
1067 wartość albo `unstable' (albo nawet `experimental'), zaś pilności nie
1068 powinieneś zmieniać na wartość większą niż `low' (niska). :-)
1069
1070 <p>Linie 3-5 to wpisy dziennika, w którym dokumentujesz zmiany dokonane w
1071 każdej z poprawek pakietu (ale nie zmiany zewnętrzne - do tego celu służy
1072 specjalny plik stworzony przez autorów programu, który później zainstalujesz
1073 jako /usr/share/doc/gentoo/changelog.gz). Nowe linie muszą być umieszczone
1074 przed znajdującą się na górze linią, która rozpoczyna się od gwiazdki (`*').
1075 Możesz to zrobić przy pomocy <manref name="dch" section="1"> lub używając
1076 jakiegoś edytora tekstu.
1077
1078 <p>Poprawiony będzie wyglądał jakoś tak:
1079
1080 <p><example>
1081 1 gentoo (0.9.12-1) unstable; urgency=low
1082 2
1083 3 * Initial Release.
1084 4 * This is my first Debian package.
1085 5 * Adjusted the Makefile to fix $DESTDIR problems.
1086 6
1087 7 -- Josip Rodin &lt;joy-mg@debian.org&gt; Wed, 11 Nov 1998 21:02:14 +0100
1088 8
1089 </example>
1090 (numery linii zostały dodane przeze mnie)
1091
1092 <p>Więcej na temat pliku `changelog' bedziesz mógł przeczytać dalej
1093 w rozdziale <ref id="update">.
1094
1095 <sect id="rules">Plik `rules'
1096
1097 <p>Teraz musimy się przyjrzeć regułom (ang. rules), których użyje program
1098 <manref name="dpkg-buildpackage" section="1"> do zbudowania naszego pakietu.
1099 Plik ten jest właściwie odmianą pliku Makefile, lecz różni się od tego/tych
1100 z programu źródłowego. Inaczej niż pozostałe pliki znajdujące się
1101 w katalogu debian/, ma on ustawiony atrybut wykonywalności.
1102
1103 <p>Każdy plik `rules', tak samo jak inne pliki Makefile, zawiera różne reguły,
1104 które określają, jak postępować ze źródłem. Każda reguła z kolei zawiera
1105 cele (targets), czyli nazwy plików bądź akcji, które powinny być stworzone
1106 lub wykonane (na przykład `build:' lub `install:'). Reguły, które chcesz
1107 wykonać są wywoływane z linii komend jako argumenty poleceń (dla przykładu
1108 `./debian/rules build` albo `make -f rules install`). Po nazwie celu możesz
1109 wymienić zależność, program lub plik, który od tej reguły zależy. W kolejnych
1110 liniach można wymienić dowolną liczbę komend, rozpoczynając je od znaku
1111 &lt;tab&gt;. Nowa reguła zaczyna się od deklaracji w pierwszej kolumnie.
1112 Puste linie i linie rozpoczynające się od znaku `#' (hash) są traktowane
1113 jako komentarz i ignorowane.
1114
1115 <p>Pewnie jesteś teraz nieco zagubiony, ale wszystko stanie się jasne w
1116 czasie przeglądania pliku `rules', który domyślnie jest tworzony przez
1117 program dh_make. Powinieneś też przeczytać o programie `make' (poprzez
1118 `info make'), aby uzyskać więcej informacji na jego temat.
1119
1120 <p>Ważne jest, aby pamiętać, że plik `rules' tworzony przez dh_make jest
1121 tylko propozycją. Działa on z prostymi pakietami, ale w przypadku
1122 bardziej skomplikowanych nie obawiaj się go modyfikować, zależnie od
1123 potrzeb. Jedyną rzeczą, której nie możesz zmieniać to nazwy reguł, gdyż
1124 używają ich wszystkie narzędzia, zgodnie z wytycznymi zawartymi
1125 w Polityce Debiana.
1126
1127 <p>Poniżej pokazano przykładowy domyślny plik debian/rules, który został
1128 wygenerowany przez program dh_make:
1129
1130 <p><example>
1131 &makefile;
1132 </example>
1133 (numery linii zostały dodane przeze mnie; w rzeczywistym pliku
1134 <file>debian/rules</file> wiodące białe znaki są tabulatorami)
1135
1136 <p>Z liniami takimi jak linia nr 1 prawdopodobnie spotkałeś się już
1137 w skryptach powłoki albo Perla. Mówi ona systemowi operacyjnemu, że plik
1138 ten ma być przetwarzany przez program `/usr/bin/make'.
1139
1140 <p>Znaczenie zmiennych DH_*, których użyto w liniach 8. i 9. powinno być
1141 zrozumiałe dzięki krótkiemu opisowi. Więcej informacji na temat zmiennej
1142 DH_COMPAT znajdziesz w sekcji "Debhelper compatibility levels" na stronie
1143 podręcznika programu <manref name="debhelper" section="1">.
1144
1145 <p>Linie 11-16 to szablon obsługujący parametry DEB_BUILD_OPTIONS,
1146 które opisano w Polityce Debiana (sekcja 10.1 "Binaries"). Po prostu mówią
1147 one, czy w binaria mają być wbudowane symbole służące do odpluskwiania
1148 (ang. debugging) i czy powinny one być usunięte przy instalacji. I znów:
1149 to jest tylko szablon, wskazówka, którą powinineś uwzględnić. Powinieneś
1150 sprawdzić, w jaki sposób autor programu obsługuje włączanie symboli
1151 odpluskwiających oraz usuwanie ich po instalacji i zaimplementować to samemu.
1152
1153 <p>Zwykle możesz nakazać kompilatorowi gcc użycie opcji "-g" przy pomocy
1154 zmiennej CFLAGS. Jeśli tak jest w przypadku Twojego pakietu, przekaż wartość
1155 tej zmiennej przez <em>dodanie</em> łańcucha <tt>CFLAGS="$(CFLAGS)"</tt> do
1156 wywołania $(MAKE) w regule `build' (zobacz poniżej). Jeśli zaś Twój pakiet
1157 używa skryptu konfiguracyjnego autoconfa, to możesz zmodyfikować konfigurację
1158 przez <em>poprzedzenie</em> powyższym łańcuchem wywołania skryptu ./configure
1159 w regule `build'.
1160
1161 <p>Jeśli chodzi o pozbywanie się symboli odpluskwiających, to programy są
1162 na ogół tak skonfigurowane, że instalują się z nimi i często nie mają opcji
1163 umożliwiającej zmianę tego stanu. Na szczęście mamy program
1164 <manref name="dh_strip" section="1">, który wykryje, gdy ustawiona jest
1165 opcja DEB_BUILD_OPTIONS=nostrip i zakończy swe działanie.
1166
1167 <p>Linie 18-26 opisują regułę `build' (i jej regułę potomną `build-stamp'),
1168 która uruchamia program make na oryginalnym pliku Makefile aplikacji,
1169 aby skompilować program. Jeśli pakiet używa narzędzi konfigurujących
1170 GNU do zbudowania binariów, koniecznie przeczytaj <file>&autotools-dev;</file>.
1171 O zakomentowanym przykładzie docbook-to-man opowiemy dalej w
1172 rozdziale <ref id="manpage">.
1173
1174 <p>Reguła `clean' zawarta w liniach 28-36 czyści wszystkie
1175 niepotrzebne pliki binarne i automatycznie wygenerowane rzeczy,
1176 które zostały po zbudowaniu pakietu. Reguła ta musi działać przez cały czas
1177 (nawet, gdy drzewo ze źródłami <em>jest</em> wyczyszczone!), zatem prosimy
1178 używać opcji wymuszającej (na przykład dla polecenia rm jest nią opcja `-f')
1179 lub ignorującej zwracane wartości (błędy) poprzez zastosowanie `-' przed
1180 poleceniem.
1181
1182 <p>Reguła `install', która odpowiada za proces instalacji, rozpoczyna się
1183 w linii nr 38. Uruchamia ona po prostu regułę `install' z pliku Makefile
1184 programu i instaluje go w katalogu <tt>$(CURDIR)/debian/gentoo</tt> -
1185 oto dlaczego określiliśmy zmienną $(DESTDIR) jako katalog bazowy
1186 instalacji w pliku Makefile programu gentoo.
1187
1188 <p>Jak tłumaczy komentarz, reguła `binary-indep', która znajduje się
1189 w linii 48., jest używana do budowania pakietów niezależnych od architektury
1190 procesora. Jeśli nie mamy takiego pakietu, żadna akcja nie zostanie
1191 przedsięwzięta.
1192
1193 <p>Następną regułą jest `binary-arch' znajdująca się w liniach 52-79.
1194 Uruchamia ona kilka małych programów narzędziowych z pakietu debhelper,
1195 które wykonują różne operacje z plikami pakietu, aby uczynić go
1196 zgodnym z Polityką Debiana.
1197
1198 <p>Gdy określiłeś architekturę Twojego pakietu jako `Architecture: all',
1199 będziesz musiał umieścić w tej regule wszystkie komendy do budowania
1200 pakietu i pozostawić pustą regułę `binary-arch'.
1201
1202 <p>Nazwy programów wchodzących w skład pakietu debhelper rozpoczynają się
1203 od dh_. Reszta jest opisem tego, co dane narzędzie robi. Mimo, że dość dobrze
1204 same się one objaśniają, poniżej zamieszczono dodatkowe opisy:
1205
1206 <list>
1207
1208 <item><manref name="dh_testdir" section="1"> sprawdza, czy jesteś we właściwym
1209 katalogu (tzn. na samej górze katalogu ze źródłami)
1210 <item><manref name="dh_testroot" section="1"> sprawdza, czy masz uprawnienia
1211 administratora systemu, których wymagają cele `binary-arch',
1212 `binary-indep' i `clean'
1213 <item><manref name="dh_installman" section="1"> kopiuje strony podręcznika
1214 systemowego we właściwe miejsce w katalogu przeznaczenia. Musisz tylko
1215 powiedzieć, gdzie one się znajdują, względem głównego katalagu ze
1216 źródłami
1217 <item><manref name="dh_strip" section="1"> usuwa z plików wykonywalnych
1218 i bibliotek nagłówki służące do odpluskwiania, aby uczynić je
1219 mniejszymi
1220 <item><manref name="dh_compress" section="1"> pakuje programem
1221 <manref name="gzip" section="1"> strony podręcznika i dokumentację
1222 większą niż 4 kB
1223 <item><manref name="dh_installdeb" section="1"> kopiuje pliki związane
1224 z pakietem (na przykład skrypty opiekuna) do katalogu
1225 <file>debian/gentoo/DEBIAN</file>
1226 <item><manref name="dh_shlibdeps" section="1"> wylicza zależności bibliotek
1227 i plików wykonywalnych od bibliotek współdzielonych
1228 <item><manref name="dh_gencontrol" section="1"> instaluje finalną wersję
1229 pliku `control' w katalogu <file>debian/gentoo/DEBIAN</file>
1230 <item><manref name="dh_md5sums" section="1"> generuje sumy kontrolne MD5 dla
1231 każdego pliku zawartego w pakiecie
1232 </list>
1233
1234 <p>Pełniejsze informacje na temat działania każdego ze skryptów dh_* i ich
1235 parametrów wywołania znajdziesz na odpowiednich stronach podręcznika.
1236 Oprócz powyższych istnieją również inne użyteczne skrypty dh_*,
1237 które nie zostały tu wspomniane. Jeśli są potrzebne, czytaj dokumentację
1238 do pakietu debhelper.
1239
1240 <p>W sekcji `binary-arch' powinieneś wykomentować lub usunąć linie z tymi
1241 skryptami dh_*, których nie chcesz wywoływać. Dla pakietu gentoo
1242 wykomentowałem wywołanie skryptów examples, cron, init, man i info, gdyż
1243 gentoo ich po prostu nie używa. W linii 68. zamieniłem `ChangeLog'
1244 na `FIXES', ponieważ jest to rzeczywista nazwa autorskiego pliku z
1245 dziennikiem zmian.
1246
1247 <p>Dwie ostatnie linie (i pozostałe nie opisane tutaj) są mniej lub
1248 bardziej niezbędne. Na ich temat możesz poczytać na stronie podręcznika do
1249 programu make oraz w Polityce Debiana. W tym momencie są na tyle
1250 mało ważne, że nie będziemy ich opisywać.
1251
1252 <!-- -------------------------------------------------------------------------->
1253
1254 <chapt id="dother">Inne pliki z katalogu debian/
1255
1256 <p>Jak zobaczysz, w katalogu debian/ znajdują się jeszcze różne inne pliki,
1257 większość z nich kończy się przyrostkiem `.ex', oznaczającym, że są to
1258 przykłady. Przyjrzyj się im wszystkim. Jeśli chcesz lub musisz użyć
1259 którejś z ich funkcjonalności, to:
1260
1261 <list>
1262 <item>zajrzyj do odpowiedniej dokumentacji (wskazówka: podręcznik Polityki
1263 Debiana)
1264 <item>jeśli to konieczne, zmodyfikuj zawartość plików według potrzeb
1265 <item>usuń z ich nazwy przyrostek `.ex', jeśli taki posiadają
1266 <item>usuń z ich nazwy przedrostek `ex.', jeśli taki posiadają
1267 <item>zmodyfikuj plik `rules' według potrzeb
1268 </list>
1269
1270 <p>Niektóre z tych plików, najczęściej używane, są objaśnione w poniższych
1271 sekcjach.
1272
1273 <sect id="readme">Plik `README.Debian'
1274
1275 <p>W tym pliku powinny być udokumentowane dodatkowe szczegóły lub
1276 rozbieżności pomiędzy oryginalnym pakietem i Twoją "zdebianizowaną" wersją.
1277
1278 <p>Program dh_make tworzy domyślny plik README.Debian, który wygląda jakoś tak:
1279
1280 <p><example>
1281 gentoo for Debian
1282 -----------------
1283
1284 &lt;possible notes regarding this package - if none, delete this file&gt;
1285
1286 -- Josip Rodin &lt;joy-mg@debian.org&gt;, Wed, 11 Nov 1998 21:02:14 +0100
1287 </example>
1288
1289 <p>Ponieważ nie musimy niczego umieszczać w tym pliku, możemy go skasować.
1290
1291 <sect id="conffiles">Plik `conffiles.ex'
1292
1293 <p>Jedną z najbardziej irytujących rzeczy związanych z oprogramowaniem jest
1294 to, że po poświęceniu dużej ilości czasu i wysiłku na dostosowanie programu,
1295 jego aktualizacja wszystko "zadeptuje". Debian rozwiązał ten problem przez
1296 znakowanie plików konfiguracyjnych. Zatem jeśli uaktualniasz program do
1297 nowszej wersji, to zostaniesz zapytany o to, czy chcesz zachować swoją starą
1298 konfigurację, czy nie.
1299
1300 <p>Aby to uzyskać, musisz wprowadzić pełną ścieżkę do każdego pliku
1301 konfiguracyjnego (zwykle znajdują się w katalogu /etc), jednego w
1302 każdej linii, w pliku nazwanym <tt/conffiles/. Program gentoo ma jeden
1303 plik konfiguracyjny, /etc/gentoorc, zatem podamy ścieżkę do
1304 niego w pliku <tt/conffiles/.
1305
1306 <p>Jeśli Twój program używa plików konfiguracyjnych, ale sam zmienia ich
1307 zawartość, to najlepiej będzie nie umieszczać ich w pliku <tt/conffiles/,
1308 ponieważ program dpkg będzie za każdym razem prosił użytkowników o
1309 weryfikację zmian.
1310
1311 <p>Jeśli program, który pakujesz, wymaga od każdego użytkownika
1312 modyfikacji pliku konfiguracyjnego, aby w ogóle zadziałać, to również
1313 powinieneś zrezygnować z umieszczania go w pliku <tt>conffiles</tt>.
1314
1315 <p>Przykładowe pliki konfiguracyjne możesz znaleźć w `skryptach opiekuna
1316 pakietu'. Więcej szczegółów na ich temat zamieszczono w sekcji
1317 <ref id="maintscripts">.
1318
1319 <p>Jeśli Twój program nie posiada plików konfiguracyjnych, to możesz
1320 bez obaw wykasować plik <tt/conffiles/ z katalogu debian/.
1321
1322 <sect id="crond">Plik `cron.d.ex'
1323
1324 <p>Jeśli Twój pakiet do prawidłowego działania wymaga regularnie wykonywanych
1325 zadań, to możesz do tego celu wykorzystać właśnie plik <tt/cron.d/.
1326
1327 <p>Zwróć uwagę, że to nie obejmuje zagadnień związanych z rotacją plików
1328 logów. Więcej informacji na ten temat znajdziesz na stronach podręcznika
1329 <manref name="dh_installlogrotate" section="1"> i <manref name="logrotate"
1330 section="8">.
1331
1332 <p>Jeśli nie potrzebujesz tego pliku, usuń go.
1333
1334 <sect id="dirs">Plik `dirs'
1335
1336 <p>Plik ten określa katalogi, które są potrzebne, ale których normalna
1337 procedura instalacyjna (make install) nie tworzy.
1338
1339 <p>Domyślnie plik ten wygląda następująco:
1340
1341 <p><example>
1342 usr/bin
1343 usr/sbin
1344 </example>
1345
1346 <p>Zwróć uwagę, iż przed nazwami katalogów nie występują znaki ukośników
1347 (`/'). Normalnie zmienilibyśmy go w następujący sposób:
1348
1349 <p><example>
1350 usr/bin
1351 usr/man/man1
1352 </example>
1353
1354 <p>ale ponieważ katalogi te są tworzone przez Makefile, to nie
1355 potrzebujemy pliku `dirs' i możemy go usunąć.
1356
1357 <sect id="docs">Plik `docs'
1358
1359 <p>Ten plik określa nazwy plików z dokumentacją, którą program dh_installdocs
1360 zainstaluje w tymczasowym katalogu.
1361
1362 <p>Domyślnie obejmuje to także pliki istniejące już w katalogu głównym ze źródłami
1363 programu, takie jak "BUGS", "README*", "TODO" itp.
1364
1365 <p>Dla programu gentoo dołączyłem również inne pliki:
1366
1367 <p><example>
1368 BUGS
1369 CONFIG-CHANGES
1370 CREDITS
1371 ONEWS
1372 README
1373 README.gtkrc
1374 TODO
1375 </example>
1376
1377 <p>Możemy też usunąć ten plik i, zamiast podawać listę plików, użyć
1378 ich nazw jako argumentów wejściowych dla programu <tt/dh_installdocs/
1379 wywoływanego w pliku <tt/rules/:
1380
1381 <p><example>
1382 dh_installdocs BUGS CONFIG-CHANGES CREDITS ONEWS README \
1383 README.gtkrc TODO
1384 </example>
1385
1386 <p>Może się tak zdarzyć, że nie będziesz mieć żadnego z tych plików w źródłach
1387 Twojego pakietu. W takim przypadku możesz bezpiecznie usunąć plik <tt/docs/.
1388 Nie usuwaj jednak wywołania programu <tt/dh_installdocs/ z pliku <tt/rules/,
1389 ponieważ jest on używany również do instalacji pliku <tt/copyright/ i
1390 innych rzeczy.
1391
1392 <sect id="emacsen">Plik `emacsen-*.ex'
1393
1394 <p>Jeśli Twój pakiet zawiera pliki Emacsa, które mogą być skompilowane do
1395 kodu bajtowego w czasie instalacji, to możesz użyć tych plików właśnie w tym
1396 celu.
1397
1398 <p>Pliki te są instalowane w katalogu tymczasowym przez program
1399 <manref name="dh_installemacsen" section="1">, zatem jeśli chcesz go wywołać,
1400 nie zapomnij odkomentować odpowiedniej linii w pliku <tt/rules/.
1401
1402 <p>Jeśli zaś nie potrzebujesz tych plików, możesz je usunąć.
1403
1404 <sect id="initd">Plik `init.d.ex'
1405
1406 <p>Jeśli Twój pakiet jest demonem, który musi być uruchamiany w czasie startu
1407 systemu, to znaczy, że nie posłuchałeś moich zaleceń we wstępie do tego
1408 podręcznika, nieprawdaż? :-)
1409
1410 <p>Plik ten jest prostym szablonem skryptu umieszczanego w katalogu
1411 <file>/etc/init.d/</file>, zatem będziesz musiał znacznie go przerobić.
1412 Zostanie on zainstalowany w katalogu tymczasowym przez program
1413 <manref name="dh_installinit" section="1">.
1414
1415 <p>Jeśli nie potrzebujesz tego pliku, usuń go.
1416
1417 <sect id="manpage">Pliki `manpage.1.ex', `manpage.sgml.ex'
1418
1419 <p>Twój program(y) powinien mieć stronę podręcznika systemowego.
1420 Jeśli jeszcze jej nie ma, to możesz użyć tych plików jako szablonów.
1421
1422 <p>Strony podręcznika są zwykle napisane w formacie <manref name="nroff"
1423 section="1">. W formacie tym napisano właśnie przykładowy plik
1424 <tt/manpage.1.ex/. Zobacz stronę podręcznika programu <manref name="man"
1425 section="7">, jest tam krótki opis, jak poprawiać tego typu pliki.
1426
1427 <p>Jeśli zamiast formatu nroff wolisz pisać dokumenty w formacie SGML,
1428 to możesz wykorzystać szablon <tt/manpage.sgml.ex/. W takim przypadku
1429 musisz:
1430
1431 <list>
1432 <item>zainstalować pakiet <package/docbook-to-man/
1433 <item>dopisać <tt/docbook-to-man/ do linii <tt/Build-Depends/ w pliku
1434 <tt/control/
1435 <item>usunąć znak komentarza przed wywołaniem programu docbook-to-man
1436 w regule `build' pliku <tt/rules/
1437 </list>
1438
1439 <p>Pamiętaj o zmianie nazwy pliku na coś w stylu <tt/gentoo.sgml/!
1440
1441 <p>Docelowa nazwa pliku ze stroną podręcznika systemowego powinna zawierać nazwę
1442 programu, który opisuje, zatem zmień ją z "manpage" na "gentoo".
1443 Nazwa tego pliku zawiera także przyrostek ".1", który mówi, że jest to
1444 strona z sekcji poleceń użytkownika. Upewnij się, do której sekcji powinna
1445 należeć strona Twojego pakietu. Poniżej zamieszczono krótką listę sekcji
1446 podręcznika:
1447
1448 <p><example>
1449 Sekcja | Opis | Uwagi
1450 1 Polecenia użytkownika Wykonywalne komendy lub skrypty.
1451 2 Wywołania systemowe Funkcje jądra systemu.
1452 3 Wywołania biblioteczne Funkcje bibliotek systemowych.
1453 4 Pliki specjalne Zwykle umieszczone w katalogu /dev.
1454 5 Formaty plików Na przykład format pliku /etc/passwd.
1455 6 Gry Lub inne programy rozrywkowe.
1456 7 Pakiety makr Takie jak makra programu man.
1457 8 Administracja systemem Programy zwykle uruchamiane tylko przez administratora.
1458 9 Procedury jądra Niestandardowe wywołania i procedury wewnętrzne.
1459 </example>
1460
1461 <p>Zatem podręcznik programu gentoo powinien nazywać się <tt/gentoo.1/.
1462 Ponieważ w oryginalnych źródłach nie było
1463 strony podręcznika `gentoo.1', napisałem ją sam, używając informacji
1464 znalezionych w przykładach i dokumentacji dołączonej do źródeł.
1465
1466 <sect id="menu">Plik `menu.ex'
1467
1468 <p>Użytkownicy systemu X Window zwykle posługują się menadżerami okien,
1469 umożliwiającymi uruchamianie programów poprzez rozwijalne menu, które można
1470 dostosowywać do własnych potrzeb. Jeśli zainstalowali oni pakiet
1471 <package/menu/, to zostanie utworzony zestaw menu służący do
1472 uruchamiania programów w systemie.
1473
1474 <p>Poniżej pokazano plik <tt/menu.ex/, domyślnie utworzony przez program
1475 dh_make:
1476
1477 <p><example>
1478 ?package(gentoo):needs="X11|text|vc|wm" section="Apps/see-menu-manual"\
1479 title="gentoo" command="/usr/bin/gentoo"
1480 </example>
1481
1482 <p>Pierwszym polem po znaku dwukropka jest pole "needs", które określa,
1483 jakiego rodzaju interfejsu wymaga program. Zmień je na jedną z wymienionych
1484 możliwości, na przykład "text" lub "X11".
1485
1486 <p>Następnym polem jest "section", które mówi, w jakim menu i podmenu powinien
1487 znaleźć się wpis z programem gentoo. Aktualną listę sekcji można znaleźć na
1488 stronie <file>/usr/share/doc/debian-policy/menu-policy.html/ch2.html#s2.1</file>.
1489
1490 <p>Pole "title" to nazwa programu. Jeśli chcesz, możesz rozpocząć
1491 ją od wielkiej litery. Powinna być krótka.
1492
1493 <p>Wreszcie pole "command" to nazwa polecenia, które uruchamia program.
1494
1495 <p>Po zmianach wpis do menu wygląda następująco:
1496
1497 <p><example>
1498 ?package(gentoo): needs="X11" section="Apps/Tools" title="Gentoo" command="gentoo"
1499 </example>
1500
1501 <p>Możesz również dodać inne pola, na przykład "longtitle", "icon",
1502 "hints" itd. Więcej informacji możesz znaleźć na stronach podręcznika
1503 <manref name="menufile" section="5">, <manref name="update-menus"
1504 section="1"> i w katalogu /usr/share/doc/debian-policy/menu-policy.html/.
1505
1506 <sect id="watch">Plik `watch.ex'
1507
1508 <p>Plik ten jest używany do konfigurowania programów <manref name="uscan"
1509 section="1"> i <manref name="uupdate" section="1"> (zawartych w pakiecie
1510 <package/devscripts/). Są one używane do sprawdzania strony internetowej,
1511 z której pobrałeś źródła dla swojego pakietu.
1512
1513 <p>W tym pliku umieściłem:
1514
1515 <p><example>
1516 # watch control file for uscan
1517 # Site Directory Pattern Version Script
1518 ftp.obsession.se /gentoo gentoo-(.*)\.tar\.gz debian uupdate
1519 </example>
1520
1521 <p>Wskazówka: połącz się z internetem i spróbuj uruchomić program "uscan"
1522 w katalogu, w którym stworzyłeś plik `watch'. I czytaj strony
1523 podręczników! :)
1524
1525 <sect id="doc-base">Plik `ex.package.doc-base'
1526
1527 <p>Jeśli Twój pakiet ma dokumentację w postaci innej niż strony podręcznika
1528 i dokumentacja przeglądana za pomocą programu "info", to powinieneś użyć
1529 pliku `<package/doc-base/', aby ją zarejestrować. Użytkownik będzie
1530 mógł ją wtedy znaleźć, na przykład za pomocą <manref name="dhelp" section="1">,
1531 <manref name="dwww" section="1"> lub <manref name="doccentral" section="1">.
1532
1533 <p>Na ogół obejmuje to pliki HTML, PS i PDF umieszczone w katalogu
1534 <file>/usr/share/doc/nazwa_pakietu/</file>.
1535
1536 <p>Plik <tt>gentoo.doc-base</tt> dla programu gentoo wygląda następująco:
1537
1538 <p><example>
1539 Document: gentoo
1540 Title: Gentoo Manual
1541 Author: Emil Brink
1542 Abstract: This manual describes what Gentoo is, and how it can be used.
1543 Section: Apps/Tools
1544
1545 Format: HTML
1546 Index: /usr/share/doc/gentoo/html/index.html
1547 Files: /usr/share/doc/gentoo/html/*.html
1548 </example>
1549
1550 <p>Informacje na temat formatu tego pliku znajdziesz na stronie podręcznika
1551 <manref name="install-docs" section="8"> oraz w podręczniku <package/doc-base/
1552 (katalog <file>/usr/share/doc/doc-base/doc-base.html/</file>).
1553
1554 <p>Więcej szczegółów nt. instalowania dokumentacji w sekcji <ref id="destdir">.
1555
1556 <sect id="maintscripts">postinst.ex, preinst.ex, postrm.ex, prerm.ex
1557
1558 <p>Pliki te są nazywane skryptami opiekuna. Umieszczone są one w obszarze
1559 kontrolnym pakietu i uruchamiane przez program <prgn/dpkg/, gdy Twój pakiet
1560 jest instalowany, uaktualniany do nowszej wersji lub usuwany.
1561
1562 <p>Na razie powinieneś unikać ręcznych modyfikacji tych skryptów,
1563 ponieważ często są one skomplikowane. Więcej informacji znajdziesz
1564 w podręczniku Polityki Debiana, w rozdziale 6. Zerknij także na przykładowe
1565 pliki wygenerowane przez program dh_make.
1566
1567 <!-- -------------------------------------------------------------------------->
1568
1569 <chapt id="build">Budowanie pakietu
1570
1571 <p>Teraz już powinniśmy być gotowi do zbudowania pakietu.
1572
1573 <sect id="completebuild">Całkowita przebudowa
1574
1575 <p>Wejdź do katalogu głównego programu i wydaj w nim polecenie:
1576
1577 <p><example>
1578 dpkg-buildpackage -rfakeroot
1579 </example>
1580
1581 <p>Wykona ono wszystko, to znaczy:
1582 <list>
1583 <item>wyczyści drzewo źródeł programu (debian/rules clean) używając programu <prgn/fakeroot/
1584 <item>zbuduje pakiet źródłowy (dpkg-source -b)
1585 <item>zbuduje program (debian/rules build)
1586 <item>zbuduje pakiet binarny (debian/rules binary), używając programu
1587 <prgn/fakeroot/
1588 <item>podpisze źródłowy plik <tt/.dsc/, używając programu <prgn/gnupg/
1589 <item>utworzy i podpisze umieszczany w archiwum Debiana plik <tt/.changes/
1590 przy pomocy programów <prgn/dpkg-genchanges/ i <prgn/gnupg/
1591 </list>
1592
1593 <p>Będziesz musiał tylko dwukrotnie wprowadzić hasło do Twojego prywatnego
1594 klucza GPG.
1595
1596 <p>Po zakończeniu procesu zobaczysz następujące pliki w katalogu nadrzędnym
1597 (<tt>~/gentoo/</tt>):
1598
1599 <p><list>
1600 <item><em>gentoo_0.9.12.orig.tar.gz</em>
1601
1602 <p>To archiwum z oryginalnym kodem źródłowym programu. Jego nazwa została
1603 zmieniona w powyższy sposób, aby zachować standard Debiana. Zwróć uwagę,
1604 że plik ten został utworzony przy użyciu opcji `-f' przez program
1605 <prgn/dh_make/, gdy na początku go uruchomiliśmy.
1606
1607 <item><em>gentoo_0.9.12-1.dsc</em>
1608
1609 <p>To jest streszczenie zawartości kodu źródłowego. Plik ten jest
1610 generowany na podstawie pliku `control' i używany w czasie rozpakowywania
1611 źródła przez program <manref name="dpkg-source" section="1">. Jest on
1612 podpisany cyfrowo, aby inni mogli być pewni, że jest naprawdę Twój.
1613
1614 <item><em>gentoo_0.9.12-1.diff.gz</em>
1615
1616 <p>Ten plik jest skompresowany i zawiera wszystkie zmiany, których dokonałeś
1617 w oryginalnym kodzie źródłowym. Zmiany te są zapisane w formacie znanym jako
1618 "unified diff". Plik jest utworzony i używany przez program
1619 <manref name="dpkg-source" section="1">. Uwaga: jeśli nie nazwałeś
1620 oryginalnego archiwum ze źródłami programu w sposób: nazwapakietu_wersja.orig.tar.gz,
1621 to program <prgn/dpkg-source/ nie wygeneruje poprawnego pliku .diff.gz!
1622
1623 <p>Gdyby ktoś jeszcze chciał ponownie utworzyć Twój pakiet zaczynając
1624 procedurę od początku, to może łatwo to zrobić używając trzech
1625 powyższych plików. Procedura postępowania w takich przypadkach jest wręcz
1626 banalna: po prostu należy gdzieś skopiować te trzy pliki i wydać komendę
1627 <tt>dpkg-source -x gentoo_0.9.12-1.dsc</tt>.
1628
1629 <item><em>gentoo_0.9.12-1_i386.deb</em>
1630
1631 <p>To kompletny pakiet binarny. Możesz użyć programu <prgn/dpkg/, aby
1632 zainstalować go lub usunąć w taki sam sposób, jak każdy inny pakiet.
1633
1634 <item><em>gentoo_0.9.12-1_i386.changes</em>
1635
1636 <p>Plik ten opisuje wszystkie zmiany dokonane w obecnej poprawce pakietu.
1637 Używają go programy obsługi archiwów FTP Debiana do zainstalowania
1638 pakietów binarnych i źródłowych. Jest on częściowo generowany z plików
1639 `changelog' i .dsc. Plik ten jest podpisany cyfrowo, aby inni
1640 mogli być pewni, że jest naprawdę Twój.
1641
1642 <p>W czasie, gdy będziesz się zajmował pakietem, zmieni się pewnie jego
1643 działanie i dodane zostaną nowe funkcjonalności. Ludzie pobierający Twój
1644 pakiet mogą w tym pliku szybko zobaczyć, co się zmieniło.
1645 Programy zarządzające archiwum Debiana wyślą również zawartość tego pliku
1646 na listę dyskusyjną debian-devel-changes.
1647 </list>
1648
1649 <p>Długie łańcuchy liczb w plikach .dsc i .changes to sumy kontrolne MD5
1650 wspomnianych plików. Osoby pobierające Twoje pliki mogą sprawdzić je
1651 używając programu <manref name="md5sum" section="1"> i jeśli sumy nie będą
1652 się zgadzać, będą wiedzieć, że plik jest uszkodzony lub został przez kogoś
1653 zmieniony.
1654
1655 <sect id="quickrebuild">Szybka przebudowa
1656
1657 <p>Gdy masz duży pakiet, to możesz nie chcieć budować go od nowa za każdym
1658 razem, gdy zmienisz jakiś szczegół w pliku <file>debian/rules</file>.
1659 Dla celów testowych możesz stworzyć plik .deb bez przebudowywania
1660 źródeł programu:
1661
1662 <p><example>
1663 fakeroot debian/rules binary
1664 </example>
1665
1666 <p>Gdy już zakończyłeś szlifowanie Twojego pakietu, pamiętaj o
1667 przebudowaniu go zgodnie z powyższą, pełną procedurą. Może Ci się nie udać
1668 umieścić go w archiwum Debiana, gdy próbujesz zamieścić tam pliki .deb
1669 zbudowane w skrócony sposób.
1670
1671 <sect id="debuild">Polecenie <prgn>debuild</prgn>
1672
1673 <p>Możesz zautomatyzować proces budowania pakietu za pomocą polecenia
1674 <prgn>debuild</prgn>. Zobacz <manref name="debuild" section="1">.
1675
1676 <p>Można skonfigurować działanie programu debuild poprzez pliki
1677 <file>/etc/devscripts.conf</file> lub <file>~/.devscripts</file>.
1678 Chciałbym zasugerować co najmniej:
1679
1680 <p><example>
1681 DEBSIGN_KEYID="Your_GPG_keyID"
1682 DEBUILD_DPKG_BUILDPACKAGE_OPTS="-i -ICVS -I.svn"
1683 </example>
1684 W ten sposób możesz budować pakiet zawsze ze swoim kluczem GPG i bez
1685 niepotrzebnych komponenetów (zwłasza pomocne przy sponsoringu). Przykładowo
1686 czyszczenie źródeł i przebudowa pakietu z konta użytkownika jest tak
1687 proste:
1688
1689 <p><example>
1690 debuild clean
1691 debuild
1692 </example>
1693
1694 <sect id="dpatch">Systemy <prgn>dpatch</prgn> i <prgn>quilt</prgn>
1695
1696 <p>Proste użycie <prgn>dh_make</prgn> i <prgn>dpkg-buildpackage</prgn>
1697 spowoduje utworzenie pojedynczego dużego pliku <file>diff.gz</file>,
1698 zawierającego pliki obsługujące pakiet w katalogu <file>debian/</file>
1699 i plików łat do źródeł. Taki pakiet jest uciążliwy podczas późniejszego
1700 sprawdzania dla kogoś, kto powinien zrozumieć wszystkie wprowadzane
1701 do źródeł zmiany. Nie jest to zbyt przyjemne
1702 <footnote>
1703 Jeśli nie jesteś jeszcze Deweloperem Debiana i prosisz swojego sponsora
1704 o wgranie pakietu po jego sprawdzeniu, powinieneś przygotować pakiet
1705 w sposób możliwie czytelny.
1706 </footnote>.
1707
1708 <p>Zaproponowano różne matody obsługiwania łat i używa się ich w pakietach
1709 Debiana. Systemy <prgn>dpatch</prgn> i <prgn>quilt</prgn> są najprostszymi z nich.
1710 Z innych wymienimy dbs, cdbs itd.
1711
1712 <p>Pakiet, który został poprawnie zbudowany za pomocą systemu
1713 <prgn>dpatch</prgn> lub <prgn>quilt</prgn>, posiada dobrze udokumentowane poprawki w źródłach
1714 jako zbiór plików łat -pl z nagłówkiem w katalogu <file>debian/patches/</file>
1715 i niezmienionym drzewem źródeł poza katalogiem <file>debian/</file>.
1716 Kiedy prosisz sponsora o wgranie Twojego pakietu, tego rodzaju wyraźne
1717 rozdzielenie i udokumentowanie Twoich zmian jest bardzo ważne dla
1718 sprawnego przejrzenia ich przez sponsora. Użycie <prgn>dpatch</prgn>
1719 oraz <prgn>quilt</prgn>
1720 jest opisane w podręcznikach <manref section="1" name="dpatch">,
1721 <manref section="1" name="dpatch-edit-patch">
1722 i <manref section="1" name="quilt">.
1723 Oba programy udostępniają wygodne do umieszczenia w
1724 <file>debian/rules</file> pliki <file>/usr/share/dpatch/dpatch.make</file> i
1725 <file>/usr/share/quilt/quilt.make</file>.
1726
1727 <p>Kiedy ktoś (włączając Ciebie) chce wdrożyć poprawki do źródeł,
1728 modyfikacja pakietu jest całkiem prosta:
1729
1730 <list compact>
1731 <item>Wyedytuj łatę, tak aby otrzymać plik -pl jako poprawkę do źródeł.
1732 <item>W przypadku <prgn>dpatch</prgn> dodaj nagłówek poleceniem `<tt>dpatch patch-template</tt>'.
1733 <item>Przenieś nagłówek do katalogu <file>debian/patches</file>.
1734 <item>Dodaj nazwy plików do pliku <file>debian/patches/00list</file>
1735 (dla <prgn>dpatch</prgn>) lub <file>debian/patches/series</file>
1736 (dla <prgn>quilt</prgn>).
1737 </list>
1738
1739 <p><prgn>dpatch</prgn> posiada też możliwość wykonywania poprawek zależnych
1740 od architektury za pomocą makra CPP.
1741
1742 <sect id="option-sa">Dołączanie <file>orig.tar.gz</file> podczas wgrywania
1743
1744 <p>Kiedy pierwszy raz wgrywasz pakiet do archiwum, powinieneś załączyć
1745 oryginalny plik źródłowy <file>orig.tar.gz</file>. Jeśli wersja pakietu
1746 nie jest rewizją <tt>-0</tt> lub <tt>-1</tt>, musisz wykonać polecenie
1747 <prgn>dpkg-buildpackage</prgn> z opcją "<tt>-sa</tt>". Z drugiej strony
1748 opcja "<tt>-sd</tt>" wymusi wyłączenie oryginalnego źródła
1749 <file>orig.tar.gz</file>.
1750
1751 <!-- -------------------------------------------------------------------------->
1752
1753 <chapt id="checkit">Sprawdzanie pakietu pod kątem błędów
1754
1755 <sect id="lintians">Pakiety <package>lintian</package>
1756
1757 <p>Uruchom programy <manref name="lintian" section="1"> podając jako argument
1758 swój plik .changes. Programy ten sprawdzają pakiet pod kątem wielu
1759 błędów występujących podczas pakowania. Robi się to poleceniami:
1760
1761 <p><example>
1762 lintian -i gentoo_0.9.12-1_i386.changes
1763 </example>
1764
1765 <p>Oczywiście zastąp nazwę pliku .changes nazwą pliku wygenerowanego dla
1766 Twojego pakietu. Jeśli pojawią się informacje o błędach (linie rozpoczynające
1767 się od "E:"), to przeczytaj ich objaśnienie (linie rozpoczynające się od
1768 "N:"), popraw błędy i ponownie zbuduj pakiet w sposób opisany w sekcji
1769 <ref id="completebuild">. Linie, które zaczynają się od "W:", to ostrzeżenia.
1770 Oczywiście powinieneś albo coś poprawić, albo upewnić się, że nie są ważne
1771 (i w takim przypadku wymusić na Lintianie ich ignorowanie; wiecej szczegółów
1772 znajdziesz w dokumentacji).
1773
1774 <p>Zwróć uwagę, że możesz w jednym kroku zbudować pakiet za pomocą programu
1775 <prgn>dpkg-buildpackage</prgn> i uruchomić programy <prgn/lintian/
1776 korzystając z narzędzia <manref name="debuild" section="1">.
1777
1778 <sect id="mc">Polecenie <prgn>mc</prgn>
1779
1780 <p>Możesz rozpakować zawartość pliku <file>*.deb</file> przy pomocy
1781 polecenia <manref name="dpkg-deb" section="1">. Możesz też zobaczyć
1782 zawartość utworzonego pakietu Debiana używając <manref name="debc" section="1">.
1783
1784 <p>Można to również osiągnąć w sposób bardziej intuicyjny za pomocą
1785 managera plików np. <manref name="mc" section="1">, który pozwala
1786 przeglądać nie tylko zawartość pliku <file>*.deb</file>, ale również
1787 pliki <file>*.diff.gz</file> i <file>*.tar.gz</file>.
1788
1789 <p>Zwróć przy tym uwagę na zbędne pliki o zerowej wielkości, zarówno
1790 binarne, jak i źródłowe. Często nie są one kasowane w sposób prawidłowy;
1791 popraw plik rules, tak aby usunąć tę wadę.
1792
1793 <p>Porada: `<tt>zgrep ^+++ ../gentoo_0.9.12-1.diff.gz</tt>' poda
1794 listę Twoich zmian w plikach źródłowych, a `<tt>dpkg-deb
1795 -c gentoo_0.9.12-1_i386.deb</tt>' lub `<tt>debc
1796 gentoo_0.9.12-1_i386.changes</tt>' - listę plików w pakiecie
1797 binarnym.
1798
1799 <sect id="debdiff">Polecenie <prgn>debdiff</prgn>
1800
1801 <p>Możesz porównać listy plików w dwóch pakietach binarnych Debiana
1802 za pomocą polecenia <manref name="debdiff" section="1">. Jest to
1803 bardzo użyteczne do sprawdzenia, że żadne pliki nie zostały błędnie
1804 przesunięte lub wykasowane, lub też nie zostały dokonane inne
1805 niepożądane zmiany podczas modyfikacji pakietu. Możesz sprawdzić
1806 całą grupę plików <file>*.deb</file> przez wywołanie `<tt>debdiff
1807 old-package.change new-package.change</tt>'.
1808
1809 <sect id="interdiff">Polecenie <prgn>interdiff</prgn>
1810
1811 <p>Możesz porównać dwa pliki <file>diff.gz</file> za pomocą polecenia
1812 <manref name="interdiff" section="1">. Jest to pomocne w celu sprawdzenia,
1813 czy nie zostały przez nieuwagę opiekuna wprowadzone jakieś zmiany do
1814 plików źródłowych podczas modyfikacji pakietów. Uruchom po prostu
1815 `<tt>interdiff -z old-package.diff.gz new-package.diff.gz</tt>'.
1816
1817 <sect id="debi">Polecenie <prgn>debi</prgn>
1818
1819 <p>Zainstaluj pakiet dla przetestowania go, np. za pomocą polecenia
1820 <manref name="debi" section="1">, wywołanego jako root. Spróbuj zainstalować
1821 i uruchomić go na innych maszynach, kontrolując, czy w czasie instalacji
1822 lub działania nie pojawiają się komunikaty o błędach lub ostrzeżenia.
1823
1824 <sect id="pbuilder">Pakiet <package>pbuilder</package>
1825
1826 <p>Pakiet <package>pbuilder</package> jest bardzo użyteczny w przypadku
1827 weryfikacji zależności dla programów uruchamianych w tzw. środowisku
1828 czystej przestrzeni (chroot). Zapewnia on "czystą" budowę pakietu ze
1829 źródeł za pomocą auto-buildera dla różnych architektur i zapobiega
1830 powstawaniu szeregu błędów FTBFS (Fails To Build From Source), które
1831 zawsze należą do kategorii RC (release critical - krytyczne dla wydania).
1832 Zobacz stronę <url id="&buildd-home;"> o debianowym pakiecie auto-builder.
1833
1834 <p>Najbardziej podstawowym użyciem pakietu <package>pbuilder</package>
1835 jest bezpośrednie wywołanie polecenia <prgn>pbuilder</prgn> jako root.
1836 Dla przykładu spróbuj wywołać poniższe polecenia w katalogu, gdzie
1837 znajdują się pliki
1838 <file>.orig.tar.gz</file>, <file>.diff.gz</file> i <file>.dsc</file>:
1839 <example>
1840 root # pbuilder create # za drugim razem: pbuilder update
1841 root # pbuilder build foo.dsc
1842 </example>
1843 Nowozbudowany pakiet znajdzie się w katalogu
1844 <file>/var/cache/pbuilder/result/</file>, właścicielem będzie root.
1845
1846 <p>Polecenie <prgn>pdebuild</prgn> pomaga wykorzystywać fukcje
1847 pakietu <package>pbuilder</package> z konta zwykłego użytkownika.
1848 Z katalogu źródeł pakietu, gdzie w katalogu nadrzędnym znajduje się
1849 plik <file>orig.tar.gz</file>, wykonaj polecenia:
1850 <example>
1851 $ sudo pbuilder create # za drugim razem: sudo pbuilder update
1852 $ pdebuild
1853 </example>
1854 Nowozbudowany pakiet znajdzie się w katalogu
1855 <file>/var/cache/pbuilder/result/</file>, właścicielem będzie użytkownik (nie-root)
1856 <footnote>
1857 W chwili obecnej zalecam dostosowanie systemu przez umożliwienie zapisu
1858 w katalogu <file>/var/cache/pbuilder/result/</file> przez użytkowników
1859 i dodanie w pliku <file>~/.pbuilderrc</file> lub <file>/etc/pbuilderrc</file>
1860 wpisu
1861 <example>
1862 AUTO_DEBSIGN=yes
1863 </example>
1864 Pozwoli to na podpisywanie tworzonych pakietów Twoim kluczem GPG z pliku
1865 <file>~/.gnupg/</file>. Ponieważ pakiet <package>pbuilder</package>
1866 jest ciągle rozwijany, sprawdź w jego bieżącej dokumentacji, w jaki sposób
1867 powinieneś go skonfigurować.
1868 </footnote>.
1869
1870 <p>Jeśli chcesz dodać nowe źródło apta, tak aby było używane przez
1871 pakiet <package>pbuilder</package>, ustaw <tt>OTHERMIRROR</tt> w
1872 <file>~/.pbuilderrc</file> lub
1873 <file>/etc/pbuilderrc</file> i wykonaj (dla sarge):
1874 <example>
1875 $ sudo pbuilder update --distribution sarge --override-config
1876 </example>
1877 Użycie <tt>--override-config</tt> jest konieczne do zaktualizowania
1878 źródeł apt w środowisku chroot.
1879
1880 <p>Zobacz <url id="&pbuilder-home;">,
1881 <manref section="1" name="pdebuild">,
1882 <manref section="5" name="pbuilderrc"> i
1883 <manref section="8" name="pbuilder">.
1884
1885 <!-- -------------------------------------------------------------------------->
1886
1887 <chapt id="upload">Wgrywanie pakietu
1888
1889 <p>Gdy już gruntownie przetestowałeś swój nowy pakiet, jesteś gotowy,
1890 aby wziąć udział w procesie przyjmowania do Debiana nowego opiekuna pakietów.
1891 Jest to opisane na stronie
1892 <url id="http://www.debian.org/devel/join/newmaint">.
1893
1894 <sect id="upload-debian">Wgrywanie pakietu do archiwum Debiana
1895
1896 <p>Gdy już zostałeś oficjalnym deweloperem, powinieneś umieścić swój
1897 pakiet w archiwum Debiana. Możesz zrobić to ręcznie, ale łatwiej jest użyć
1898 specjalnie do tego celu stworzonych narzędzi, które automatyzują cały
1899 proces. Należą do nich takie programy, jak <manref name="dupload"
1900 section="1"> i <manref name="dput" section="1">. Opiszemy tutaj, w jaki
1901 sposób posługiwać się programem <prgn/dupload/.
1902
1903 <p>Pierwszą rzeczą, którą powinieneś zrobić, jest edycja jego pliku
1904 konfiguracyjnego. Możesz wyedytować zarówno przeznaczony dla całego systemu
1905 plik <file>/etc/dupload.conf</file>, jak i swój własny plik
1906 <file>~/.dupload.conf</file>, który nadpisuje te rzeczy, które chcesz
1907 zmienić. Umieść w nim coś takiego:
1908
1909 <p><example>
1910 package config;
1911
1912 $default_host = "anonymous-ftp-master";
1913
1914 $cfg{'anonymous-ftp-master'} = {
1915 fqdn => "ftp-master.debian.org",
1916 method => "ftp",
1917 incoming => "/pub/UploadQueue/",
1918 # files pass on to dinstall on ftp-master which sends emails itself
1919 # pliki przekazywane do dinstall na ftp-master, które wysyłają maile
1920 dinstall_runs => 1,
1921 };
1922
1923 1;
1924 </example>
1925
1926 <p>Możesz przeczytać stronę podręcznika <manref name="dupload.conf" section="5">,
1927 aby zrozumieć, co oznacza każda z użytych opcji.
1928
1929 <p>Uwagi wymaga zmienna $default_host -- określa ona, która z kolejek
1930 służących do umieszczania pakietów jest używana domyślnie. Główną kolejka
1931 jest "anonymous-ftp-master", ale możliwe jest, że będziesz chciał użyć innej,
1932 szybszej. Więcej informacji na temat kolejek znajdziesz
1933 w dokumencie Developers' Reference, w sekcji "Uploading a package",
1934 która znajduje się w dokumencie <file>&uploading;</file>.
1935
1936 <p>Następnie połącz się z internetem i wydaj polecenie:
1937
1938 <p><example>
1939 dupload gentoo_0.9.12-1_i386.changes
1940 </example>
1941
1942 <p>Program <prgn/dupload/ sprawdzi, czy zgadzają się sumy kontrolne MD5 plików
1943 z sumami zapisanymi w pliku .changes. Jeśli sumy kontrolne pasują do siebie,
1944 pakiet może być umieszczony w archiwum. Jeśli sumy się nie zgadzają,
1945 zostaniesz ostrzeżony, aby móc przebudować pakiet zgodnie z procedurą
1946 opisaną w rozdziale <ref id="completebuild">.
1947
1948 <p>Jeśli stwierdzisz jakiś problem z wgrywaniem w kolejce
1949 <url id="&ftp-uploadqueue;">,
1950 możesz naprawić go ręcznie poprzez wgranie podpisanego pliku
1951 <file>*.commands</file> do <url id="&ftp-uploadqueue;"> za pomocą programu
1952 <prgn>ftp</prgn>
1953 <footnote>
1954 Zobacz <url id="&ftp-command;">. Możesz też użyć programu
1955 <prgn>dcut</prgn> z pakietu <package>dput</package>.
1956 </footnote>.
1957 Przykładowy plik <file>hello.commands</file>:
1958
1959 <example>
1960 -----BEGIN PGP SIGNED MESSAGE-----
1961
1962 Uploader: Roman Hodek &lt;Roman.Hodek@informatik.uni-erlangen.de&gt;
1963 Commands:
1964 rm hello_1.0-1_i386.deb
1965 mv hello_1.0-1.dsx hello_1.0-1.dsc
1966
1967 -----BEGIN PGP SIGNATURE-----
1968 Version: 2.6.3ia
1969
1970 iQCVAwUBNFiQSXVhJ0HiWnvJAQG58AP+IDJVeSWmDvzMUphScg1EK0mvChgnuD7h
1971 BRiVQubXkB2DphLJW5UUSRnjw1iuFcYwH/lFpNpl7XP95LkLX3iFza9qItw4k2/q
1972 tvylZkmIA9jxCyv/YB6zZCbHmbvUnL473eLRoxlnYZd3JFaCZMJ86B0Ph4GFNPAf
1973 Z4jxNrgh7Bc=
1974 =pH94
1975 -----END PGP SIGNATURE-----
1976 </example>
1977
1978 <sect id="upload-private">Wgrywanie do prywatnego archiwum
1979
1980 <p>Jeśli chcesz utworzyć swoje prywatne archiwum na stronie
1981 <tt>URL="http://people.debian.org/~<var>account_name</var>"</tt> jako
1982 deweloper, a potem w prosty sposób wywoływać
1983 <tt>dupload -t <var>target_name</var></tt>, powinieneś dodać następujące linie
1984 do pliku <file>/etc/dupload.conf</file>:
1985
1986 <example>
1987 # Developer account
1988 $cfg{'<var>target_name</var>'} = {
1989 fqdn =&gt; "people.debian.org",
1990 method =&gt; "scpb",
1991 incoming =&gt; "/home/<var>account_name</var>/public_html/package/",
1992 # I do not need to announce
1993 dinstall_runs =&gt; 1,
1994 };
1995 $cfg{'<var>target_name</var>'}{preupload}{'changes'} = "
1996 echo 'mkdir -p public_html/package' | ssh people.debian.org 2&gt;/dev/null ;
1997 echo 'Package directory created!'";
1998
1999 $cfg{'<var>target_name</var>'}{postupload}{'changes'} = "
2000 echo 'cd public_html/package ;
2001 dpkg-scanpackages . /dev/null &gt;Packages || true ;
2002 dpkg-scansources . /dev/null &gt;Sources || true ;
2003 gzip -c Packages >Packages.gz ;
2004 gzip -c Sources &gt;Sources.gz ' | ssh people.debian.org 2&gt;/dev/null ;
2005 echo 'Package archive created!'";
2006
2007 </example>
2008
2009 Tutaj archiwum APT jest budowane poprzez szybkie i nie sprawdzane
2010 zdalne wywołanie powłoki przez SSH. Nadpisywane pliki wymagane przez
2011 <prgn>dpkg-scanpackages</prgn> i <prgn>dpkg-scansources</prgn>
2012 są podstawiane przez <file>/dev/null</file>. Technika ta może być stosowana
2013 przez nie-deweloperów Debiana do wprowadzania ich pakietów na ich
2014 osobiste strony internetowe. Można też używać <prgn>apt-ftparchive</prgn>
2015 albo innych skryptów do tworzenia archiwów APT.
2016
2017 <!-- -------------------------------------------------------------------------->
2018
2019 <chapt id="update">Aktualizacja pakietu
2020
2021 <sect id="newrevision">Nowa poprawka Debiana
2022
2023 <p>Powiedzmy, że do Twojego pakietu został zgłoszony raport o błędzie o
2024 numerze #54321, opisujący problem, który możesz rozwiązać. Aby stworzyć
2025 nową poprawkę (revision) pakietu Debiana, musisz wykonać następujące
2026 czynności:
2027
2028 <list>
2029
2030 <item>Oczywiście najpierw popraw błąd w źródłach pakietu.
2031
2032 <item>Dodaj nową poprawkę na początku pliku `changelog', na przykład za
2033 pomocą `<tt>dch -i</tt>` lub wręcz
2034 `<tt>dch -v &lt;wersja&gt;-&lt;rewizja&gt;</tt>'
2035 i za pomocą ulubionego edytora tekstu wstaw komentarze.
2036 <p>Porada: w jaki sposób najłatwiej pobrać datę w wymaganym formacie?
2037 Użyj komendy `<tt>822-date</tt>' lub `<tt>date -R</tt>'.
2038
2039 <item>Dołącz krótki opis błędu i jego rozwiązania do pliku `changelog'
2040 oraz napis: "Closes: #54321". W ten sposób raport o błędzie zostanie
2041 automatycznie "zamknięty" przez oprogramowanie obsługujące archiwum
2042 Debiana w chwili, gdy pakiet zostanie w nim zaakceptowany.
2043
2044 <item>Powtórz kroki wykonywane w rozdziałach <ref id="completebuild">,
2045 <ref id="checkit"> i <ref id="upload">. Jedyną różnicą będzie to,
2046 że nie zostaną wgrane oryginalne źródła, gdyż nie zmieniły się i
2047 znajdują się już w archiwum Debiana.
2048
2049 </list>
2050
2051 <sect id="newupstream">Nowe wydanie autorskie (prosto)
2052
2053 <p>Rozważmy teraz trochę inną, troszkę bardziej skomplikowaną sytuację
2054 - została wydana nowa, zewnętrzna wersja programu i oczywiście chcemy
2055 ją zapakować. Trzeba wykonać następujące czynności:
2056
2057 <list>
2058
2059 <item>Pobierz archiwum z nowymi źródłami (na przykład
2060 `<file>gentoo-0.9.13.tar.gz</file>') i umieść je w katalogu nadrzędnym
2061 do katalogu ze starym drzewem źródeł (dla przykładu <file>~/gentoo/</file>).
2062
2063 <item>Wejdź do katalogu ze starymi źródłami i wykonaj:
2064 <example>
2065 uupdate -u gentoo-0.9.13.tar.gz
2066 </example>
2067 <p>Oczywiście musisz zastąpić nazwę pliku nazwą archiwum ze źródłami Twojego
2068 programu. Program <manref name="uupdate" section="1"> odpowiednio zmieni
2069 nazwę tego archiwum, spróbuje nałożyć wszystkie zmiany z Twojego poprzedniego
2070 pliku <file>.diff.gz</file> i uaktualni plik <file>debian/changelog</file>.
2071
2072 <item>Zmień katalog na `<file>../gentoo-0.9.13</file>', czyli drzewo z nowym
2073 źródłem pakietu i powtórz to, co robiłeś w rozdziałach <ref id="completebuild">,
2074 <ref id="checkit"> i <ref id="upload">.
2075
2076 </list>
2077
2078 <p>Zauważ, że jeśli skonfigurowałeś plik `<file>debian/watch</file>', jak to
2079 opisano w sekcji <ref id="watch">, to możesz uruchomić program <manref name="uscan"
2080 section="1">, aby automagicznie odszukiwać poprawione źródła, pobierać je
2081 i uruchamiać program <prgn>uupdate</prgn>.
2082
2083 <sect id="newupstream-real">Nowe wydanie autorskie (realistycznie)
2084
2085 <p>Kiedy przygotowujesz pakiety dla archiwum Debiana, musisz szczegółowo
2086 sprawdzać rezultaty swoich działań. Przedstawiam poniżej bardziej realistyczny
2087 przykład takiej procedury.
2088
2089 <enumlist compact>
2090
2091 <item>Sprawdź zmiany w źródłach zewnętrznych
2092
2093 <list compact>
2094
2095 <item>Przeczytaj autorskie pliki <file>changelog</file>, <file>NEWS</file>
2096 i inną dokumentację, która może się odnosić do nowej wersji.
2097
2098 <item>Wykonaj `<tt>diff -urN</tt>' pomiędzy starymi i nowymi źródłami
2099 autorskimi, aby zapoznać się z dokonanymi zmianami (a które mogą
2100 powodować potencjalne błędy), miej oczy otwarte na wszystko, co
2101 wygląda podejrzanie.
2102
2103 </list>
2104
2105 <item>Zaadaptuj stary pakiet do nowej wersji.
2106
2107 <list compact>
2108
2109 <item>Rozpakuj archiwum źródłowe i zmień nazwę jego głównego katalogu na
2110 <file>&lt;nazwa_pakietu&gt;-&lt;wersja_autora&gt;/</file> i przejdź
2111 `<tt>cd</tt>' do tego katalogu.
2112
2113 <item>Skopiuj archiwum źródłowe w katalogu nadrzędnym z nową nazwą
2114 <file>&lt;nazwa_pakietu&gt;_&lt;wersja_autora&gt;.orig.tar.gz</file> .
2115
2116 <item>Wykonaj takie same czynności na nowych źródłach, jakie wykonałeś
2117 na starych. Są możliwe następujące sposoby:
2118
2119 <list compact>
2120 <item>polecenie `<tt>zcat <var>/path/to/</var>&lt;nazwa_pakietu&gt;_&lt;stara_wersja&gt;.diff.gz | patch -p1</tt>'
2121 <item>polecenie `<prgn>uupdate</prgn>'
2122 <item>polecenie `<tt>svn merge</tt>', jeśli źródła są w repozytorium Subversion lub
2123 <item>po prostu przekopiuj katalog <file>debian/</file> ze starych źródeł,
2124 jeśli były spakowane przy pomocy <package>dpatch</package> lub <package>quilt</package>.
2125 </list>
2126
2127 <item>Zachowaj stare wpisy w pliku changelog (wydaje się oczywiste, ale
2128 różnie to bywa...)
2129
2130 <item>Nowa wersja pakietu będzie miała numer autorski uzupełniony przez
2131 <tt>-1</tt> - numer rewizji Debiana, np. `<tt>0.9.13-1</tt>'.
2132
2133 <item>Dodaj wpis "New upstream release" na początku pliku
2134 <file>debian/changelog</file>. Możesz to zrobić np. przez wywołanie
2135 `<tt>dch -v 0.9.13-1</tt>'.
2136
2137 <item>Zwięźle opisz (po angielsku oczywiście <em>[uwaga tłumacza]</em>) zmiany dokonane
2138 <em>w</em> nowej wersji autorskiej, które naprawiają zgłoszone błędy i zamknij
2139 te zgłoszenia w pliku changelog.
2140
2141 <item>Zwięźle opisz zmiany dokonane przez opiekuna <em>odnoszące się do</em>
2142 nowej wersji autorskiej, które naprawiają zgłoszone błędy i zamknij zgłoszenia.
2143
2144 <item>Jeśli poprawka (patch/merge) nie może być zaaplikowana w sposób bezpośredni,
2145 zbadaj sytuację, żeby stwierdzić jaka jest przyczyna powstawania trudności
2146 (na podstawie wpisów w plikach <file>.rej</file>). W większości przypadków
2147 problem polega na tym, że poprawka została uwzględniona przez autora
2148 i nie jest już potrzebna.
2149
2150 <item>Aktualizacja do nowej wersji powinna przebiegać w sposób nieabsorbujący
2151 użytkownika (użytkownicy nie powinni zauważać tego faktu, poza stwierdzeniem,
2152 że błędy zostały poprawione lub dodano nowe funkcje)
2153 <footnote>
2154 Proszę przygotować również prawidłową aktualizację pliku konfiguracyjnego
2155 Twojego pakietu za pomocą dobrze napisanych skryptów <prgn>postinst</prgn>
2156 itp., tak aby <strong>nie</strong> działy się rzeczy zaskakujące użytkowników!
2157 To m. in. jest jednym z czynników, <strong>dla których</strong> ludzie
2158 wybierają Debiana.
2159 <p>Jeśli rzeczywiście istnieje konieczność ręcznej interwencji (np.
2160 konfiguracja dla różnych katalogów domowych o całkowicie odmiennej
2161 strukturze), pomyśl o domyślnym skonfigurawaniu pakietu w sposób
2162 najbardziej bezpieczny (np. przez wyłączenie usługi) i przygotowaniu
2163 właściwej dokumentacji (pliki <file>README.Debian</file> i
2164 <file>NEWS.Debian</file>), jako ostateczność. Nie zajmuj jednak
2165 użytkownika komunikatami debconfa.
2166 </footnote>.
2167
2168 <item>Jeśli z jakiegoś powodu trzeba dodać skasowane wcześniej
2169 pliki szablonów, możesz uruchomić program <prgn>dh_make</prgn> w już
2170 wcześniej "zdebianizowanym" katalogu z opcją <tt>-o</tt>, a następnie
2171 uważnie je wyedytować.
2172
2173 <item>Uprzednio istniejące zmiany Debiana powinny zostać ponownie wprowadzone;
2174 odrzuć poprawki, które zostały już zostały uwzględnione (w ten czy inny sposób)
2175 przez autora zewnętrznego, ale pamiętaj o tych pozostałych, aż do chwili, kiedy
2176 naprawdę przestaną być potrzebne.
2177
2178 <item>Jeśli były jakieś zmiany w systemie budującym (mam nadzieję, że wiesz
2179 o tym z kroku 1.), popraw plik <file>debian/rules</file> i,
2180 jeśli to konieczne, zależności w pliku <file>debian/control</file>.
2181
2182 </list>
2183
2184 <item>Zbuduj nowy pakiet jak w rozdziale <ref id="debuild"> lub
2185 <ref id="pbuilder">. Użycie pakietu <package>pbuilder</package> jest
2186 wskazane.
2187
2188 <item>Sprawdź, czy nowe pakiety zostały zbudowane w sposób prawidłowy.
2189
2190 <list compact>
2191
2192 <item>Przeprowadź <ref id="checkit">.
2193
2194 <item>Wykonaj <ref id="upgrading">.
2195
2196 <item>Sprawdź ponownie, czy nie ma poprawionych błędów otwartych w
2197 <url name="Debian Bug Tracking System (BTS)" id="http://www.debian.org/Bugs/">.
2198
2199 <item>Sprawdź zawartość pliku .changes i upewnij się, że wgrywasz zmiany
2200 do odpowiedniej dystrybucji, zostały ujęte właściwe zgłoszenia błędów
2201 w polu Closes:, pola Maintainer: i Changed-By: są prawidłowe, istnieje
2202 podpis GPG itp.
2203
2204 </list>
2205
2206 <item>Jeśli wykonywałeś jakieś zmiany, aby coś poprawić, wróć do kroku
2207 2., aż do osiągnięcia pozytywnego rezultatu.
2208
2209 <item>Jeśli wgrywanie odbywa się przez sponsora, odnotuj wszelkie dodatkowe
2210 opcje wymagane do zbudowania pakietu (np. '<tt>dpkg-buildpackage
2211 -sa -v ...</tt>') i poinformuj o nich sponsora, tak aby mógł również
2212 prawidłowo go zbudować.
2213
2214 <item>Jeśli sam wykonujesz wgrywanie, przeprowadź <ref id="upload">.
2215
2216 </enumlist>
2217
2218 <sect id="orig-tar">Plik <file>orig.tar.gz</file>
2219
2220 <p>Jeśli próbujesz zbudować pakiet tylko z nowego katalogu źródłowego
2221 z podkatalogiem <file>debian/</file> bez pliku <file>orig.tar.gz</file>
2222 w katalogu nadrzędnym, zakończy się to utworzeniem
2223 pakietu źródłowego, bez powstania pliku <file>diff.gz</file>.
2224 Taki sposób pakowania jest prawidłowy jedynie dla specyficznych
2225 pakietów Debiana, które są bezużyteczne w innych dystrybucjach.
2226
2227 <footnote>
2228 Niektórzy twierdzą, że nawet dla specyficznych pakietów Debiana jest
2229 lepszą praktyką przechowywanie zawartości katalogu <file>debian/</file>
2230 w pliku <file>diff.gz</file>, niż w <file>orig.tar.gz</file>.
2231 </footnote>
2232
2233 <p>W celu uzyskania nie-natywnego pakietu źródłowego, który pozwala na
2234 uzyskanie zarówno pliku <file>orig.tar.gz</file> jak i <file>diff.gz</file>,
2235 musisz ręcznie skopiować archiwum autorskie do katalogu nadrzędnego i
2236 zmienić jego nazwę na
2237 <file>&lt;nazwa_pakietu&gt;_&lt;wersja_autorska&gt;.orig.tar.gz</file>, jak
2238 zrobił to program <prgn>dh_make</prgn> w rozdziale <ref id="dh_make">.
2239
2240 <sect id="cvs-buildpackage">Polecenie <prgn>cvs-buildpackage</prgn> i jemu podobne
2241
2242 <p>Rozważ użycie systemu zarządzania kodem źródłowym do zarządzania plikami
2243 zmienianymi w czasie pakowania. Jest kilka skryptów do pakowania przystosowanych
2244 do najbardziej popularnych z nich.
2245 <list compact>
2246 <item>CVS
2247 <list compact>
2248 <item><package>cvs-buildpackage</package>
2249 </list>
2250 <item>Subversion
2251 <list compact>
2252 <item><package>svn-buildpackage</package>
2253 </list>
2254 <item>Git (git)
2255 <list compact>
2256 <item><package>git-buildpackage</package>
2257 </list>
2258 </list>
2259
2260 <p>Polecenia te automatyzują też pakowanie nowych wydań autorskich.
2261
2262 <sect id="upgrading">Weryfikowanie uaktualnienia pakietu do nowszej wersji
2263
2264 <p>Kiedy już zbudowałeś nową wersję pakietu, powinieneś wykonać następującą
2265 procedurę, żeby upewnić się, że aktualizacja pakietu do nowej wersji
2266 przebiega bezbłędnie:
2267
2268 <p><list>
2269 <item>uaktualnij pakiet z poprzedniej wersji
2270 <item>powróć ponownie do poprzedniej wersji (downgrade), a następnie usuń go
2271 <item>zainstaluj pakiet jako nowy pakiet
2272 <item>odinstaluj go i następnie zainstaluj ponownie
2273 <item>wyczyść (purge) pakiet
2274 </list>
2275
2276 <p>Jeśli pakiet zawiera nietrywialne skrypty pre/post/inst/rm, przetestuj
2277 ścieżki działania każdego z nich.
2278
2279 <p>Miej świadomość, że jeśli Twój pakiet był poprzednio wydany w Debianie,
2280 to ludzie często będą go uaktualniać z wersji, która była w ostatnim wydaniu
2281 Debiana. Pamiętaj, żeby przetestować także uaktualnianie do nowszej wersji
2282 z tamtej wersji.
2283
2284 <!-- -------------------------------------------------------------------------->
2285
2286 <chapt id="helpme">Gdzie prosić o pomoc
2287
2288 <p>Zanim zdecydujesz się zadać pytanie w jakimś publicznym miejscu,
2289 proszę najpierw zajrzeć do odpowiedniego podręcznika. Dokumentacja do
2290 programów wymienionych w tym dokumencie znajduje się w
2291 <file>/usr/share/doc/dpkg</file>,
2292 <file>/usr/share/doc/debian</file>, <file>&autotools-dev;</file>,
2293 <file>/usr/share/doc/package/*</file>, a także w plikach info i man
2294 omawianych programów.
2295 Zobacz też inforamcje na <url id="&nm-home;"> i <url id="&mentors-faq;">.
2296
2297 <p>Jeśli masz pytanie na temat pakowania, na które nie znalazłeś odpowiedzi
2298 w powyższej dokumentacji, powinieneś je zadać na liście Mentorów Debiana,
2299 która dostępna jest pod adresem <email/debian-mentors@lists.debian.org/.
2300 Bardziej doświadczeni deweloperzy Debiana chętnie Ci pomogą, ale przed
2301 zadaniem pytania przeczytaj dokumentację!
2302
2303 <p>Więcej informacji na temat tej listy dyskusyjnej znajdziesz na stronie
2304 <url id="http://lists.debian.org/debian-mentors/">.
2305
2306 <p>Kiedy odbierzesz raport o błędzie (tak, prawdziwy raport o błędzie!),
2307 to znak, że czas zaznajomić się z <url name="Systemem śledzenia błędów
2308 Debiana (BTS)" id="http://www.debian.org/Bugs/"> i przeczytać znajdującą się
2309 tam dokumentację, aby móc sprawnie radzić sobie z takimi raportami.
2310 Polecam głównie przeczytanie rozdziału "Handling Bugs" z dokumentu
2311 Developers' Reference w <file>&bughandling;</file>.
2312
2313 <p>Jeśli wciąż masz pytania, pytaj na liście Deweloperów Debiana,
2314 która jest dostępna pod adresem <email/debian-devel@lists.debian.org/.
2315 Więcej informacji na temat tej listy dyskusyjnej znajdziesz na stronie
2316 <url id="http://lists.debian.org/debian-devel/">.
2317
2318 <p>Nawet, gdy wszystko działa dobrze, to czas, żeby zacząć się modlić.
2319 Dlaczego? Ponieważ już za kilka godzin (lub dni) użytkownicy z całego świata
2320 zaczną używać Twojego pakietu i jeśli popełniłeś jakiś krytyczny błąd,
2321 wielu rozgniewanych użytkowników Debiana zasypie Cię listami...
2322 To tylko żart. :-)
2323
2324 <p>Zrelaksuj się i bądź gotowy na raporty o błędach, ponieważ masz jeszcze sporo
2325 do zrobienia, zanim Twój pakiet będzie w pełni zgodny z Polityką
2326 Debiana (powtarzam: przeczytaj <em>prawdziwą dokumentację</em>,
2327 aby dowiedzieć się więcej szczegółów). Powodzenia!
2328
2329 <!-- -------------------------------------------------------------------------->
2330
2331 <appendix id="pkg-eg">Przykłady
2332
2333 <p>Mamy do zapakowania archiwum autorskie <var>gentoo-1.0.2</var>.tar.gz i
2334 wgrywamy wszystkie pakiety do <tt><var>nm_target</var></tt>.
2335
2336 <sect id="pkg-simple">Prosty przykład pakowania
2337
2338 <p>
2339 <example>
2340 $ mkdir -p <var>/path/to</var> # nowy pusty katalog
2341 $ cd <var>/path/to</var>
2342 $ tar -xvzf <var>/path/from/gentoo-1.0.2</var>.tar.gz # rozpakowujemy źródła
2343 $ cd <var>gentoo-1.0.2</var>
2344 $ dh_make -e <var>name@domain.dom</var> -f <var>/path/from/gentoo-1.0.2</var>.tar.gz
2345 ... Odpowiedz na pytania
2346 ... Popraw drzewo źródeł
2347 ... Jeśli jest to pakiet skryptowy, wpisz "Architecture: all" do debian/control
2348 ... Nie kasuj ../<var>gentoo_1.0.2</var>.orig.tar.gz
2349 $ debuild
2350 ... Nie powinno być ostrzeżeń
2351 $ cd ..
2352 $ dupload -t <var>nm_target</var> <var>gentoo_1.0.2-1</var>_i386.changes
2353 </example>
2354
2355
2356 <sect id="pkg-dpatch">Przykład z <package>dpatch</package> i <package>pbuilder</package>
2357 <p>
2358 <example>
2359 $ mkdir -p <var>/path/to</var> # nowy pusty katalog
2360 $ cd <var>/path/to</var>
2361 $ tar -xvzf <var>/path/from/gentoo-1.0.2</var>.tar.gz
2362 $ cp -a <var>gentoo-1.0.2</var> <var>gentoo-1.0.2-orig</var>
2363 $ cd <var>gentoo-1.0.2</var>
2364 $ dh_make -e <var>name@domain.dom</var> -f /path/from/<var>gentoo-1.0.2</var>.tar.gz
2365 ... Odpowiedz na pytania
2366 </example>
2367
2368 Tu mamy fragment oryginalnego pliku <file>debian/rules</file>:
2369 <example>
2370 configure: configure-stamp
2371 configure-stamp:
2372 dh_testdir
2373 # Add here commands to configure the package.
2374 touch configure-stamp
2375 build: build-stamp
2376 build-stamp: configure-stamp
2377 dh_testdir
2378 # Add here commands to compile the package.
2379 $(MAKE)
2380 #docbook-to-man debian/gentoo.sgml > gentoo.1
2381 touch $@
2382 clean:
2383 dh_testdir
2384 dh_testroot
2385 rm -f build-stamp configure-stamp
2386 # Add here commands to clean up after the build process.
2387 -$(MAKE) clean
2388 dh_clean
2389 </example>
2390 Za pomocą edytora zmień <file>debian/rules</file> w następujący sposób,
2391 tak aby używać <package>dpatch</package> oraz dodaj <package>dpatch</package>
2392 w linii <tt>Build-Depends:</tt> pliku <file>debian/control</file>:
2393 <example>
2394 configure: configure-stamp
2395 configure-stamp: patch
2396 dh_testdir
2397 # Add here commands to configure the package.
2398 touch configure-stamp
2399 build: build-stamp
2400 build-stamp: configure-stamp
2401 dh_testdir
2402 # Add here commands to compile the package.
2403 $(MAKE)
2404 #docbook-to-man debian/gentoo.sgml > gentoo.1
2405 touch $@
2406 clean: clean-patched unpatch
2407 dh_testdir
2408 dh_testroot
2409 rm -f build-stamp configure-stamp
2410 # Add here commands to clean up after the build process.
2411 -$(MAKE) clean
2412 dh_clean
2413 patch: patch-stamp
2414 patch-stamp:
2415 dpatch apply-all
2416 dpatch call-all -a=pkg-info >patch-stamp
2417 unpatch:
2418 dpatch deapply-all
2419 rm -rf patch-stamp debian/patched
2420 </example>
2421
2422 <p>W ten sposób możesz już pakować źródła za pomocą systemu
2423 <package>dpatch</package> używając programu <prgn>dpatch-edit-patch</prgn>.
2424
2425 <example>
2426 $ dpatch-edit-patch patch 10_firstpatch
2427 ... Popraw źródła edytorem
2428 $ exit 0
2429 ... Spróbuj zbudować pakiety przy użyciu "debuild -us -uc"
2430 ... Wyczyść źródła wywołując "debuild clean"
2431 ... Powtarzaj dpatch-edit-patch aż do zbudowania pakietów ze źródeł
2432 $ sudo pbuilder update
2433 $ pdebuild
2434 $ cd /var/cache/pbuilder/result/
2435 $ dupload -t <var>nm_target</var> <var>gentoo_1.0.2-1</var>_i386.changes
2436 </example>
2437
2438 </book>
2439
2440 </debiandoc>

  ViewVC Help
Powered by ViewVC 1.1.5