NAZWA¶
deb-version - format numerów wersji pakietów Debiana
SKŁADNIA¶
[
epoka:]
wersja_macierzystaupstream[
-rewizja_debiana]
OPIS¶
Numery wersji używane do binarnych i źródłowych
pakietów Debiana składają się z trzech części.
Są to:
- epoka
- Jest to pojedyncza (typowo niewielka), liczba
całkowita bez znaku. Może być pominięta, w takim
przypadku jest przyjmowana jako zero. Jeśli jest pominięta,
wtedy wersja-macierzysta nie może zawierać żadnego
dwukropka.
- Jest używana aby można było pozbyć
się pomyłek w numerach wersji starszych wersji pakietów,
oraz poradzić sobie ze zmianą poprzednich schematów
numerowania wersji.
- wersja-macierzysta (wersja nadana przez autora)
- Główna część numeru wersji. Zwykle
jest to numer wersji oryginalnego ("upstream") pakietu, na
podstawie którego powstał plik .deb, o ile jest to
możliwe. Typowo jest w tym samym formacie jaki został użyty
przez autora(ów) pakietu. Może jednak zostać
przeformatowana aby lepiej pasować do formatu i schematu
porównywania wersji używanego przez system zarządzania
pakietami.
- Poniżej opisane jest zachowanie systemu
zarządzania pakietami podczas porównywania
uwzględniającego wersję-macierzysta.
Część wersja-macierzysta numeru wersji pakietu jest
wymagana.
- Wersja-macierzysta może zawierać jedynie
znaki alfanumeryczne ("A-Za-z0-9") oraz znaki . +
- : ~ (kropkę, plus, myślnik, dwukropek,
tyldę) i powinna zaczynać się od cyfry. Jeśli nie jest
używana rewizja-debiana, wtedy nie są dozwolone
myślniki; jeśli zaś nie jest używana epoka,
wtedy nie są dozwolone dwukropki.
- rewizja-debiana
- Ta część numeru wersji określa
wersję pakietu Debiana bazującego na tej samej wersji
macierzystej. Może zawierać jedynie znaki alfanumeryczne oraz
znaki + . (plus, kropkę, tyldę) i jest
porównywana w ten sam sposób co wersja-upstream.
- Jest to część opcjonalna. Jeśli nie
jest używana, wtedy wersja-macierzysta nie może
zawierać myślnika. Taki format odpowiada przypadkowi, gdzie
oprogramowanie było tworzone z myślą o zamianie go w pakiet
Debiana, więc jest tylko jedna jego "debianizacja" i
dlatego wskazywanie rewizji nie jest potrzebne.
- Powszechnie przyjęte jest rozpoczynanie
rewizji_debiana od 1 za każdym razem, gdy
wersja-macierzysta się zwiększa.
- Dpkg dzieli numer wersji na części względem
ostatniego myślnika w łańcuchu (jeśli taki jest), aby
określić wersję-macierzystą oraz
rewizję-debiana. Przy porównywaniu, brakująca
rewizja-debiana poprzedza każde jej wystąpienie (jednak
warto pamiętać, że jest to najmniej znacząca
część numeru wersji).
Algorytm sortowania¶
System zarządzania pakietami porównuje
wersję-macierzystą oraz
rewizję-debiana
używając tego samego algorytmu:
Napisy są porównywane od lewej do prawej.
Najpierw określane są początkowe części każdego
napisu, składające się wyłącznie ze znaków nie
będących cyframi. Te dwie części (z których jedna
może być pusta) są porównywane leksykalnie. Jeśli
zostanie znaleziona różnica, jest ona zwracana. Porównanie
leksykalne jest porównaniem wartości ASCII zmodyfikowanych tak,
że wszystkie litery poprzedzają wszystkie inne znaki nie
będące literami, a dodatkowo tylda poprzedza wszystko, nawet koniec
części. W następującym przykładzie części
występują w kolejności posortowanej: "~~",
"~~a", "~", część pusta, "a".
Następnie określane są początki pozostałych
części z każdego napisu, składające się
wyłącznie z samych cyfr. Wartości liczbowe tych dwóch
części są porównywane i jeśli zostanie znaleziona
różnica, jest ona zwracana jako wynik porównania. Pusty
ciąg znaków (który może się pojawić jedynie na
końcu jednego lub obu porównywanych napisów) jest przy tym
liczony jako zero.
Te dwa kroki (porównywanie i usuwanie początkowych napisów bez
cyfr oraz początkowych napisów z samymi cyframi) są powtarzane,
aż zostanie znaleziona różnica lub oba ciągi zostaną
wyczerpane.
Należy zauważyć, że celem epok jest umożliwienie
pozbycia się pomyłek w numerach wersji pakietów, jak
również poradzenie sobie ze zmianą schematu numerowania wersji.
Nie są one natomiast przeznaczone do radzenia sobie z numerami
wersji zawierających ciągi znaków, których system
zarządzania pakietami nie może zinterpretować (jak np.
"ALPHA" lub "pre-"), czy z inną dziwną
kolejnością.
OSTRZEŻENIA¶
Znak tyldy oraz jego specyficzny sposób sortowania zostały wprowadzone
w wersji 1.10 dpkg, zaś niektóre inne elementy dpkg-dev
uzyskały odpowiednie wsparcie dopiero później w serii 1.10.x.
ZOBACZ TAKŻE¶
deb-control(5),
deb(5),
dpkg(1)
TŁUMACZE¶
Piotr Roszatycki <dexter@debian.org>, 1999
Bartosz Feński <fenio@debian.org>, 2004-2005
Robert Luberda <robert@debian.org>, 2006-2008
Wiktor Wandachowicz <siryes@gmail.com>, 2008
Michał Kułach <michal.kulach@gmail.com>, 2012