Ten dokument próbuje opisać proces budowania pakietów dla systemu Debian GNU/Linux. Jest on przeznaczony dla zwykłych użytkowników Debiana i tych z nich, którzy chcą zostać rozwijającymi. Informacje w nim zawarte mogą służyć do budowania paczek ze źródeł napisanych w różnych popularnych językach programowania. Poparte one zostały praktycznymi przykładami, gdyż jak mówi stare rzymskie przysłowie, Longum iter est per preaecepta, breve et efficax per exempla! (Droga według zasad jest długa, a z przykładami - krótka i wygodna!).
Jedną z rzeczy czyniących z Debiana wyjątkową dystrybucję jest jego system pakietów. Mimo iż istnieje ogromna ilość oprogramowania spakowanego do formatu Debiana, to czasami zachodzi konieczność zainstalowania programu, który nie posiada odpowiedniej paczki. Pewnie się dziwisz, że możesz sam stworzyć własne pakiety i myślisz, że to bardzo trudne zadanie. No cóż, jeśli jesteś zupełnym nowicjuszem w Linuksie, to rzeczywiście będziesz miał kłopoty, ale czy gdybyś był żółtodziobem, to czytałbyś teraz ten dokument? :-) Musisz trochę wiedzieć na temat programowania pod Uniksem, ale nie musisz od razu być ekspertem.
Jedna rzecz jest pewna: aby odpowiednio tworzyć i zarządzać pakietami Debiana potrzebne są osobogodziny. Staraj się nie popełniać błędów, gdyż nasz system do działania wymaga od opiekunów zarówno technicznej kompetencji jak i pilności.
Ten dokument wyjaśni wszystkie kroki potrzebne do zbudowania pakietu (choć niektóre z nich mogą na początku wydać się nieistotne) i pomoże Ci stworzyć Twoją pierwszą paczkę. Dzięki niemu nabierzesz trochę doświadczenia, które przyda Ci się w trakcie budowania następnych wydań pakietu, a może również później do tworzenia innych paczek.
Najnowsze wersje tego dokumentu powinny być zawsze dostępne bezpośrednio na
stronie http://www.debian.org/doc/maint-guide/
oraz w pakiecie `maint-guide
'.
Zanim zaczniesz cokolwiek robić, powinieneś upewnić się, że masz zainstalowanych kilka dodatkowych pakietów niezbędnych do rozwijania. Zwróć uwagę, że na poniższej liście nie ma żadnych pakietów oznaczonych jako `niezbędne' (essential) lub `wymagane' (required). Po prostu zakładamy, że masz już je zainstalowane.
Ta wersja podręcznika została uaktualniona z myślą o pakietach wchodzących w skład Debiana 2.2 (`potato') oraz 3.0 (`woody').
Następujące pakiety wchodzą w skład standardowej instalacji Debiana więc prawdopodobnie masz je (i dodatkowe pakiety, od których one zależą) już zainstalowane. Mimo to powinieneś sprawdzić ich status za pomocą komendy `dpkg -s <pakiet>`.
dpkg-dev
- pakiet zawierający narzędzia niezbędne do
rozpakowywania, budowania i wysyłania pakietów źródłowych Debiana. (więcej
informacji znajdziesz na stronie podręcznika dpkg-source(1)
)
file
- przydatny program do określania typu pliku. (więcej
informacji znajdziesz na stronie podręcznika file(1)
)
gcc
- kompilator GNU języka C, niezbędny gdy Twój program tak jak
większość programów zostało napisanych w języku C. (więcej informacji
znajdziesz na stronie podręcznika gcc(1)
). Pakiet ten jest
powiązany z kilkoma innymi paczkami, takimi jak binutils
, która
zawiera zestaw programów służący do asemblacji i konsolidacji plików wynikowych
(więcej informacji znajdziesz za pomocą `info binutils` w pakiecie
binutils-doc
) i cpp
, zawierającą preprocesor języka
C. (więcej informacji znajdziesz na stronie podręcznika cpp(1)
)
g++
- kompilator GNU języka C++, niezbędny gdy Twój program został
napisany w języku C++. (więcej informacji znajdziesz na stronie podręcznika
g++(1)
)
libc6-dev
- biblioteki języka C i pliki nagłówkowe kompilatora gcc
niezbędne do konsolidacji ze stworzonymi plikami wynikowymi. (więcej
informacji znajdziesz za pomocą `info libc` w pakiecie glibc-doc
)
make
- na ogół proces tworzenia programu składa się z kilku
etapów. Zamiast ciągłego powtarzania w kółko tych samych komend, możesz
posłużyć się programem, który zrobi to za Ciebie. Jedyne co musisz zrobić w
tym celu, to stworzyć plik/pliki `Makefile'. (więcej informacji znajdziesz za
pomocą `info make`)
patch
- bardzo użyteczne narzędzie służące do nakładania na pliki
źródłowe "łat", czyli stworzonych dzięki programowi diff plików z
różnicami między plikami źródłowymi i tworzenia w ten sposób
"załatanych" wersji programów. (więcej informacji znajdziesz na
stronie podręcznika patch(1)
)
perl
- Perl jest jednym z najczęściej stosowanych interpretowanych
języków skryptowych w systemach kompatybilnych z systemem Unix. Często
określany jest jako "Uniksowy scyzoryk z piłą łańcuchową". (więcej
informacji znajdziesz na stronie podręcznika perl(1)
).
Najprawdopodobniej będziesz chciał zainstalować również następujące pakiety:
autoconf
i automake
- wiele nowszych programów używa
skryptów konfiguracyjnych i plików Makefile przetworzonych za pomocą takich
narzędzi jak te. (więcej informacji znajdziesz za pomocą `info autoconf` i
`info automake`)
dh-make
i debhelper
- pakiet dh-make jest niezbędny
do stworzenia szablonu Twojego przykładowego pakietu. Używa on także do
tworzenia pakietów niektórych narzędzi z pakietu debhelper. Pakiety te nie są
niezbędne do budowania paczek, ale są bardzo zalecane,
szczególnie nowym opiekunom pakietów. Dzięki nim o wiele łatwiej rozpocząć
proces budowania pakietu i kontrolować go później. (więcej informacji
znajdziesz na stronach podręcznika dh_make(1)
,
debhelper(1)
oraz w pliku /usr/share/doc/debhelper/README).
devscripts
- pakiet zawierający parę użytecznych i pomocnych dla
opiekuna skryptów, które nie są jednakże niezbędne do budowania pakietów.
(więcej informacji znajdziesz w pliku /usr/share/doc/devscripts/README.gz).
fakeroot
- narzędzie, które pozwala Ci "udawać" bycie
administratorem systemu. Uprawnienia administratora są niezbędne w niektórych
etapach procesu budowania pakietu. (więcej informacji znajdziesz na stronie
podręcznika fakeroot(1)
)
gnupg
- narzędzie umożliwiające Ci cyfrowe podpisanie
pakietu. Jest to szczególnie ważne, gdy zamierzasz rozpowszechniać swój pakiet
wśród innych ludzi. Na pewno będziesz musiał to zrobić, gdy Twój pakiet
zostanie włączony do dystrybucji Debiana. (więcej informacji znajdziesz na
stronie podręcznika gpg(1)
)
g77
- kompilator GNU języka Fortran 77, niezbędny gdy Twój program
został napisany w języku Fortran. (więcej informacji znajdziesz na stronie
podręcznika g77(1)
)
gpc
- kompilator GNU języka Pascal, niezbędny gdy Twój program
został napisany w języku Pascal. Warty odnotowania w tym miejscu jest również
pakiet fp-compiler
(Free Pascal Compiler), który także nadaje się
do tego celu. (więcej informacji znajdziesz na stronach podręcznika
gpc(1)
i ppc386(1)
)
imake
i xmkmf
- niektóre programy, głównie te
stworzone z myślą o systemie X11, używają tych narzędzi do wygenerowania plików
Makefile z zestawu makro-funkcji. (więcej informacji znajdziesz na stronach
podręcznika imake(1)
i xmkmf(1)
)
lintian
- program służący do sprawdzania poprawności pakietu
Debiana. Poinformuje Cię on, gdy w zbudowanej paczce znajdzie najczęstsze
błędy i wyjaśni ich przyczynę. (więcej informacji znajdziesz na stronie
podręcznika lintian(1)
oraz na stronie
/usr/share/doc/lintian/lintian.html/index.html)
Poniżej zamieszczono odnośniki do bardzo ważnej dokumentacji, która powinna być przeczytana razem z tym podręcznikiem:
debian-policy
- Polityka Debiana opisuje strukturę i zawartość
archiwum Debiana, kilka spraw dotyczących projektu systemu operacyjnego, FHS
(Standard Hierarchii Systemu Plików - Filesystem Hierarchy Standard), który
mówi gdzie powinny się znajdować pliki i katalogi, itd. Najważniejszymi dla
Ciebie rzeczami są opisane w Polityce wymagania, które musi spełnić każdy
pakiet, aby mógł być włączony do dystrybucji. (więcej informacji znajdziesz na
stronie /usr/share/doc/debian-policy/policy.html/index.html)
developers-reference
- opisuje wszystkie zagadnienia nie związane
z technicznymi szczegółami procesu tworzenia paczki, a więc strukturę archiwum,
informacje na temat zmian nazw pakietów, ich osierocania i adopcji, informacje
o tym, jak umieścić pakiet w archiwum Debiana, nie będąc opiekunem danego
pakietu (Non-Maintainer Upload), jak radzić sobie z błędami, kiedy i gdzie
umieszczać pakiet (więcej informacji znajdziesz na stronie
/usr/share/doc/developers-reference/developers-reference.html/index.html).
Powyższe krótkie opisy jedynie przedstawiają do czego służy dany pakiet. Zanim przejdziesz dalej, proszę gruntownie zapoznać się z dokumentacją do każdego z programów, a przynajmniej z ich standardowym użyciem. Być może wydaje Ci się to teraz męczące, ale później będziesz się bardzo cieszyć, że to zrobiłeś/zrobiłaś.
Uwaga: pakiet debmake
zawiera kilka programów bardzo zbliżonych
funkcjonalnie do pakietu dh_make, ale ten dokument
nie omawia jego użycia, ponieważ odradza się jego
używania. Po więcej informacji odsyłam na stronę the Debmake manual
.
Istnieją dwa rodzaje pakietów jakie możesz stworzyć: źródłowe i binarne. Pakiet źródłowy zawiera kod, który możesz skompilować, aby otrzymać binarną postać programu. Pakiet binarny zawiera natomiast już gotowy do użycia program. Proszę nie mylić takich pojęć, jak źródło programu i pakiet źródłowy programu! Jeśli potrzebujesz więcej szczegółów na temat tej terminologii, to proszę przeczytać inne podręczniki.
W Debianie, termin `opiekun' (maintainer) oznacza osobę, która tworzy pakiety i jest członkiem projektu Debian, `autor' (upstream author) - osobę, która tworzy program, a `zewnętrzny opiekun' (upstream maintainer) - osobę, która aktualnie opiekuje się programem, pozostając na zewnątrz projektu Debian. Zwykle autor i zewnętrzny opiekun są tą samą osobą, czasem nawet tą samą osobą co opiekun. Jeśli napisałeś jakiś program i chcesz, żeby wszedł w skład Debiana, to przyślij swoje podanie i zostań opiekunem.
Gdy już zbudowałeś swój pakiet (lub gdy jesteś w trakcie jego budowania) i chcesz, aby Twój program wszedł w skład następnej dystrybucji (jeśli jest on użyteczny, to czemu nie?), to możesz zostać oficjalnym opiekunem pakietu Debiana. Proces przystępowania do projektu jest wyjaśniony w dokumencie Developer's Reference. Proszę przeczytać go.
Podręcznik dla nowych opiekunów pakietów Debiana
wersja oryginału: 1.2, 6 kwietnia 2002. wersja tłumaczenia: 1.2.2, 17 marca 2004joy-mg@debian.org
ptecza@debianusers.pl
porridge@debian.org