[ powrót ] [ Spis treści ] [ 1 ] [ 2 ] [ 3 ] [ 4 ] [ 5 ] [ 6 ] [ 7 ] [ 8 ] [ 9 ] [ 10 ] [ A ] [ dalej ]
Powiedzmy, że do Twojego pakietu został zgłoszony raport o błędzie o numerze #54321, opisujący problem, który możesz rozwiązać. Aby stworzyć nową poprawkę (revision) pakietu Debiana, musisz wykonać następujące czynności:
Oczywiście najpierw popraw błąd w źródłach pakietu.
Dodaj nową poprawkę na początku pliku `changelog', na przykład za pomocą `dch -i` lub wręcz `dch -v <wersja>-<rewizja>' i za pomocą ulubionego edytora tekstu wstaw komentarze.
Porada: w jaki sposób najłatwiej pobrać datę w wymaganym formacie? Użyj komendy `822-date' lub `date -R'.
Dołącz krótki opis błędu i jego rozwiązania do pliku `changelog' oraz napis: "Closes: #54321". W ten sposób raport o błędzie zostanie automatycznie "zamknięty" przez oprogramowanie obsługujące archiwum Debiana w chwili, gdy pakiet zostanie w nim zaakceptowany.
Powtórz kroki wykonywane w rozdziałach Całkowita przebudowa, Rozdział 6.1, Sprawdzanie pakietu pod kątem błędów, Część 7 i Wgrywanie pakietu, Część 8. Jedyną różnicą będzie to, że nie zostaną wgrane oryginalne źródła, gdyż nie zmieniły się i znajdują się już w archiwum Debiana.
Rozważmy teraz trochę inną, troszkę bardziej skomplikowaną sytuację - została wydana nowa, zewnętrzna wersja programu i oczywiście chcemy ją zapakować. Trzeba wykonać następujące czynności:
Pobierz archiwum z nowymi źródłami (na przykład
`gentoo-0.9.13.tar.gz
') i umieść je w katalogu nadrzędnym do
katalogu ze starym drzewem źródeł (dla przykładu ~/gentoo/
).
Wejdź do katalogu ze starymi źródłami i wykonaj:
uupdate -u gentoo-0.9.13.tar.gz
Oczywiście musisz zastąpić nazwę pliku nazwą archiwum ze źródłami Twojego
programu. Program uupdate(1)
odpowiednio zmieni nazwę tego
archiwum, spróbuje nałożyć wszystkie zmiany z Twojego poprzedniego pliku
.diff.gz
i uaktualni plik debian/changelog
.
Zmień katalog na `../gentoo-0.9.13
', czyli drzewo z nowym źródłem
pakietu i powtórz to, co robiłeś w rozdziałach Całkowita przebudowa, Rozdział 6.1,
Sprawdzanie pakietu pod kątem błędów, Część 7
i Wgrywanie pakietu, Część 8.
Zauważ, że jeśli skonfigurowałeś plik `debian/watch
', jak to
opisano w sekcji Plik `watch.ex', Rozdział
5.10, to możesz uruchomić program uscan(1)
, aby automagicznie
odszukiwać poprawione źródła, pobierać je i uruchamiać program
uupdate
.
Kiedy przygotowujesz pakiety dla archiwum Debiana, musisz szczegółowo sprawdzać rezultaty swoich działań. Przedstawiam poniżej bardziej realistyczny przykład takiej procedury.
Sprawdź zmiany w źródłach zewnętrznych
Przeczytaj autorskie pliki changelog
, NEWS
i inną
dokumentację, która może się odnosić do nowej wersji.
Wykonaj `diff -urN' pomiędzy starymi i nowymi źródłami autorskimi, aby zapoznać się z dokonanymi zmianami (a które mogą powodować potencjalne błędy), miej oczy otwarte na wszystko, co wygląda podejrzanie.
Zaadaptuj stary pakiet do nowej wersji.
Rozpakuj archiwum źródłowe i zmień nazwę jego głównego katalogu na
<nazwa_pakietu>-<wersja_autora>/
i przejdź
`cd' do tego katalogu.
Skopiuj archiwum źródłowe w katalogu nadrzędnym z nową nazwą
<nazwa_pakietu>_<wersja_autora>.orig.tar.gz
.
Wykonaj takie same czynności na nowych źródłach, jakie wykonałeś na starych. Są możliwe następujące sposoby:
polecenie `zcat /path/to/<nazwa_pakietu>_<stara_wersja>.diff.gz | patch -p1'
polecenie `uupdate
'
polecenie `svn merge', jeśli źródła są w repozytorium Subversion lub
po prostu przekopiuj katalog debian/
ze starych źródeł, jeśli były
spakowane przy pomocy dpatch
lub quilt
.
Zachowaj stare wpisy w pliku changelog (wydaje się oczywiste, ale różnie to bywa...)
Nowa wersja pakietu będzie miała numer autorski uzupełniony przez -1 - numer rewizji Debiana, np. `0.9.13-1'.
Dodaj wpis "New upstream release" na początku pliku
debian/changelog
. Możesz to zrobić np. przez wywołanie
`dch -v 0.9.13-1'.
Zwięźle opisz (po angielsku oczywiście [uwaga tłumacza]) zmiany dokonane w nowej wersji autorskiej, które naprawiają zgłoszone błędy i zamknij te zgłoszenia w pliku changelog.
Zwięźle opisz zmiany dokonane przez opiekuna odnoszące się do nowej wersji autorskiej, które naprawiają zgłoszone błędy i zamknij zgłoszenia.
Jeśli poprawka (patch/merge) nie może być zaaplikowana w sposób bezpośredni,
zbadaj sytuację, żeby stwierdzić jaka jest przyczyna powstawania trudności (na
podstawie wpisów w plikach .rej
). W większości przypadków problem
polega na tym, że poprawka została uwzględniona przez autora i nie jest już
potrzebna.
Aktualizacja do nowej wersji powinna przebiegać w sposób nieabsorbujący użytkownika (użytkownicy nie powinni zauważać tego faktu, poza stwierdzeniem, że błędy zostały poprawione lub dodano nowe funkcje) [4].
Jeśli z jakiegoś powodu trzeba dodać skasowane wcześniej pliki szablonów,
możesz uruchomić program dh_make
w już wcześniej
"zdebianizowanym" katalogu z opcją -o, a następnie
uważnie je wyedytować.
Uprzednio istniejące zmiany Debiana powinny zostać ponownie wprowadzone; odrzuć poprawki, które zostały już zostały uwzględnione (w ten czy inny sposób) przez autora zewnętrznego, ale pamiętaj o tych pozostałych, aż do chwili, kiedy naprawdę przestaną być potrzebne.
Jeśli były jakieś zmiany w systemie budującym (mam nadzieję, że wiesz o tym z
kroku 1.), popraw plik debian/rules
i, jeśli to konieczne,
zależności w pliku debian/control
.
Zbuduj nowy pakiet jak w rozdziale Polecenie debuild
, Rozdział
6.3 lub Pakiet
pbuilder
, Rozdział 7.6. Użycie pakietu pbuilder
jest wskazane.
Sprawdź, czy nowe pakiety zostały zbudowane w sposób prawidłowy.
Przeprowadź Sprawdzanie pakietu pod kątem błędów, Część 7.
Wykonaj Weryfikowanie uaktualnienia pakietu do nowszej wersji, Rozdział 9.6.
Sprawdź ponownie, czy nie ma poprawionych błędów otwartych w Debian Bug Tracking System (BTS)
.
Sprawdź zawartość pliku .changes i upewnij się, że wgrywasz zmiany do odpowiedniej dystrybucji, zostały ujęte właściwe zgłoszenia błędów w polu Closes:, pola Maintainer: i Changed-By: są prawidłowe, istnieje podpis GPG itp.
Jeśli wykonywałeś jakieś zmiany, aby coś poprawić, wróć do kroku 2., aż do osiągnięcia pozytywnego rezultatu.
Jeśli wgrywanie odbywa się przez sponsora, odnotuj wszelkie dodatkowe opcje wymagane do zbudowania pakietu (np. 'dpkg-buildpackage -sa -v ...') i poinformuj o nich sponsora, tak aby mógł również prawidłowo go zbudować.
Jeśli sam wykonujesz wgrywanie, przeprowadź Wgrywanie pakietu, Część 8.
orig.tar.gz
Jeśli próbujesz zbudować pakiet tylko z nowego katalogu źródłowego z
podkatalogiem debian/
bez pliku orig.tar.gz
w
katalogu nadrzędnym, zakończy się to utworzeniem pakietu źródłowego, bez
powstania pliku diff.gz
. Taki sposób pakowania jest prawidłowy
jedynie dla specyficznych pakietów Debiana, które są bezużyteczne w innych
dystrybucjach. [5]
W celu uzyskania nie-natywnego pakietu źródłowego, który pozwala na uzyskanie
zarówno pliku orig.tar.gz
jak i diff.gz
, musisz
ręcznie skopiować archiwum autorskie do katalogu nadrzędnego i zmienić jego
nazwę na
<nazwa_pakietu>_<wersja_autorska>.orig.tar.gz
, jak
zrobił to program dh_make
w rozdziale Wstępna "debianizacja", Rozdział
2.4.
cvs-buildpackage
i jemu podobneRozważ użycie systemu zarządzania kodem źródłowym do zarządzania plikami zmienianymi w czasie pakowania. Jest kilka skryptów do pakowania przystosowanych do najbardziej popularnych z nich.
CVS
cvs-buildpackage
Subversion
svn-buildpackage
Git (git-core)
git-buildpackage
Polecenia te automatyzują też pakowanie nowych wydań autorskich.
Kiedy już zbudowałeś nową wersję pakietu, powinieneś wykonać następującą procedurę, żeby upewnić się, że aktualizacja pakietu do nowej wersji przebiega bezbłędnie:
uaktualnij pakiet z poprzedniej wersji
powróć ponownie do poprzedniej wersji (downgrade), a następnie usuń go
zainstaluj pakiet jako nowy pakiet
odinstaluj go i następnie zainstaluj ponownie
wyczyść (purge) pakiet
Jeśli pakiet zawiera nietrywialne skrypty pre/post/inst/rm, przetestuj ścieżki działania każdego z nich.
Miej świadomość, że jeśli Twój pakiet był poprzednio wydany w Debianie, to ludzie często będą go uaktualniać z wersji, która była w ostatnim wydaniu Debiana. Pamiętaj, żeby przetestować także uaktualnianie do nowszej wersji z tamtej wersji.
[ powrót ] [ Spis treści ] [ 1 ] [ 2 ] [ 3 ] [ 4 ] [ 5 ] [ 6 ] [ 7 ] [ 8 ] [ 9 ] [ 10 ] [ A ] [ dalej ]
Podręcznik dla nowych opiekunów pakietów Debiana
wersja oryginału: 1.2.11, 12-01-2007, wersja tłumaczenia: 1.2.5, 27-09-2007joy-mg@debian.org
ptecza@debianusers.pl
porridge@debian.org
wojtekz@comp.waw.pl