| 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 © 1998-2002 Josip Rodin.</copyrightsummary>
|
| 33 |
<copyrightsummary>Copyright © 2005-2007 Osamu Aoki.</copyrightsummary>
|
| 34 |
<copyrightsummary>Copyright © polskiego tłumaczenia 2002-2004
|
| 35 |
Paweł Tęcza, Marcin Owsiany.</copyrightsummary>
|
| 36 |
<copyrightsummary>Copyright © 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 © 1997
|
| 46 |
Jaldhar Vyas.
|
| 47 |
|
| 48 |
<p>The New-Maintainer's Debian Packaging Howto, copyright © 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 <pakiet>`.
|
| 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 <nazwa_pakietu>-<wersja>.
|
| 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 <enter>.
|
| 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/* — 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 — 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 <joy-mg@debian.org>
|
| 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: <insert up to 60 chars description>
|
| 732 |
12 <insert long description, indented with spaces>
|
| 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 (`&') 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><<</tt>, <tt><=</tt>, <tt>=</tt>,
|
| 918 |
<tt>>=</tt> i <tt>>></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 <joy-mg@debian.org>
|
| 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 <joy-mg@debian.org> on
|
| 994 |
2 Wed, 11 Nov 1998 21:02:14 +0100.
|
| 995 |
3
|
| 996 |
4 It was downloaded from <fill in ftp site>
|
| 997 |
5
|
| 998 |
6 Upstream Author(s): <put author(s) name and email here>
|
| 999 |
7
|
| 1000 |
8 Copyright:
|
| 1001 |
9
|
| 1002 |
10 <Must follow here>
|
| 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 <joy-mg@debian.org> 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 <emil@obsession.se>
|
| 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="©right-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 <joy-mg@debian.org> 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 <joy-mg@debian.org> 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 |
<tab>. 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 |
<possible notes regarding this package - if none, delete this file>
|
| 1285 |
|
| 1286 |
-- Josip Rodin <joy-mg@debian.org>, 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 <Roman.Hodek@informatik.uni-erlangen.de>
|
| 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 => "people.debian.org",
|
| 1990 |
method => "scpb",
|
| 1991 |
incoming => "/home/<var>account_name</var>/public_html/package/",
|
| 1992 |
# I do not need to announce
|
| 1993 |
dinstall_runs => 1,
|
| 1994 |
};
|
| 1995 |
$cfg{'<var>target_name</var>'}{preupload}{'changes'} = "
|
| 1996 |
echo 'mkdir -p public_html/package' | ssh people.debian.org 2>/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 >Packages || true ;
|
| 2002 |
dpkg-scansources . /dev/null >Sources || true ;
|
| 2003 |
gzip -c Packages >Packages.gz ;
|
| 2004 |
gzip -c Sources >Sources.gz ' | ssh people.debian.org 2>/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 <wersja>-<rewizja></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><nazwa_pakietu>-<wersja_autora>/</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><nazwa_pakietu>_<wersja_autora>.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><nazwa_pakietu>_<stara_wersja>.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><nazwa_pakietu>_<wersja_autorska>.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-core)
|
| 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>
|