OpenBSD CTM

Co to jest CTM?

CTM został zaprojektowany przez Poula-Henning Kampa, by umożliwić uaktualnianie drzewa źródeł poprzez pocztę elektroniczną. System ten będzie użyteczny w przypadku gdy chcesz posiadać aktualne źródła, a wolne połączenie z Internetem doskonale temu zapobiega.

CTM rozsyła wszystkie moduły znajdujące się repozytorium CVS OpenBSD, a także uaktualnione wersje tych modułów. W trakcie pracy CTM wymaga naprawde niewielkiej przepustowości sieci, a dodatkowo wysyłane dane kompresowane są przy użyciu gzip -9. W przeciwieństwie do CVSup, CTM został napisany w języku C i dzięki temu jest dostępny dla każdej platformy obsługiwanej przez OpenBSD. Implementacja CTM przy aktualizacji używa, tak zwanego, trybu wpychania (ang. push model), w przeciwieństwie do innych metod dostępu do repozytorium CVS używających trybu ściągania (ang. pull model).

Jakiekolwiek problemy, sugestie, komentarze i pytania dotyczące CTM powinny być zgłaszane do koordynatora CTM - Hans Günter Weigand. (Nie jest dobrym pomysłem zasypywanie pytaniami dotyczącymi CTM innych ludzi z Projektu OpenBSD. Maja tak wiele spraw na głowie, że będzie im to przeszkadzać w pracy.)

Jak działa CTM?

Ideą, która leży u podstaw CTM, jest utworzenie specjalnej listy mailingowej dla każdego modułu w repozytorium CVS. Użytkownicy mogą zapisać się na dowolną z tych list. Każdego dnia subskrybenci otrzymywać będą mail zawierajacy wszsytkie zmiany jakie zaszły w drzewie źródeł w ciągu ustalonego okresu czasu. List zawierający zestaw wszystkich różnic pomiędzy źródłami nazywany jest delta. Obecnie, serwer CTM tworzy nową deltę co dwanaście godzin.

Działanie CTM opiera się na tzw. zestawie podstawowym, do którego odnosić się będą wszystki nadsyłane pliki delta. Jeśli dopiero zaczynasz prace z CTM powinieneś pobrać zestaw podstawowy, a także wszysktie pliki delta wygenerowane dla niego. Po takim przygotowaniu, można już odbierać i nakładać łaty z nowych plików delta nadsyłanych przez listę mailingową. Zestaw podstawowy został podzielony na pliki wielkości 1400kB, aby ułatwić jego pobieranie przez łącza złej jakości.

Zestaw podstawowy generowany jest co 50 plików delta, tak więc nigdy nie będziesz zmuszony pobierać więcej niż 50 tych plików.

Obecnie istnieją dwa rodzaje plików z zestawem podstawowym. Jakiś czas temu były to pliki tar.gz tworzone ręcznie, ale teraz znów są to prawdziwe pliki bazowe CTM. Każdy mail z systemu CTM zawiera sumę kontrolną md5(1). Dzięki temu wzrasta choć troszkę bezpieczeństwo. Aby rozróżnić te dwa rodzaje plików wystarczy porównać ich nazwy. Na przykład plik tar.gz może być nazwany OpenBSD-cvs.1450.tar.gz, podczas gdy nazwą bazowego pliku CTM będzie OpenBSD-cvs.1500A.gz. W dalszej części dokumentu zostało to opisane dokładniej.

Jakiej przepustowości sieci wymaga CTM?

Możesz pobrać zestaw podstawowy i wszystkie delty przygotowane dla niego z serwera FTP, których lista zamieszczona jest poniżej. Przybliżony rozmiar plików:

Jak używać CTM?

Uwaga: W opisanym przykładzie, dla przejrzystości, skupimy się tylko na module OpenBSD-cvs. Obsługa pozostałych modułów jest identyczna.

Poniższa lista zawiera spis serwerów FTP, na których znajdują się pliki delta:

UWAGA: Jestem bardzo zainteresowany lokalizacją innych serwerów prowadzących mirrory CTM.

Powinienem wybrać drzewo źródeł czy repozytorium CVS?

Odpowiedź na to pytanie zależna jest, obok innych czynników, od tego jak wiele wolnej przestrzeni masz na dysku. Ponieważ CTM nie radzi sobie zbyt dobrze z plikami, które zostały zmodyfikowane w lokalnej kopii źródeł lepszym wyborem jest oczywiście repozytorium CVS. Możesz pobrać kopię źródeł z repozytorium, wprowadzić swoje własne zmiany, a CVS jest na tyle sprytnym programem, że pozwoli połączyć lokalne modyfikacje ze zmianami w repozytorium podczas aktualizacji drzewa źródeł. Można używać większości poleceń CVS, za wyjątkiem takich komend jak cvs commit i cvs tag.

Oczywiście nie ma róży bez kolców i pomimo wszystkich swoich zalet repozytorium CVS potrzebuje ogromnych ilości wolnego miejsca na dysku. Drzewo źródeł zajmuje około 370 MB, ale jeśli chcesz mieć własne repozytorim CVS będziesz potrzebował więcej niż 1 GB, plus dodatkowe 370 MB na drzewo źródeł. Dodatkowo niezbęde będzie 100 MB lub więcej (w zależności od posiadanej architektury sprzętowej) na pliki generowane podczas kompilacji źródeł.

Decydując się na drzewo źródeł, należy jakoś poradzić sobie ze zmodyfikowanymi lokalnie plikami. Jednym ze sposobów obejścia tego problemu może być użycie systemu plików union, (więcej szczegółów mount_union(8)). Należy uważać jednak gdyż system plików union może być niestabilny jeśli warstwa dolna i górna znajdują się na tym samym fizycznym systemie plików. Umieszczając warstwę dolną i górną na innych partycjach nie powinny pojawić się żadne kłopoty. Przykład zastosowania union opisany jest poniżej:

Załóżmy, że drzwo zaktualizowane drzewo CTM znajduje się w /usr/src-ctm, a aktualne drzewo źródeł, czyli to w którym znajdują się modyfikacje użytkownika i z którego budowany jest system, umieszczone jest w /usr/src. Zanim zacznie się kożystać z systemu plików union /usr/src powinien być pustym katalogiem. Poniższa komenda zamontuje system plików union:

	mount -t union -o -b /usr/src-ctm /usr/src

Zmiany poczynione w plika znajdujących się w /usr/src zostaną przeniesione tylko na pliki znajdujące się w /usr/src przesłaniając pliki z src-ctm. Łaty nadesłane przez CTM i zaaplikowane na pliki w src-ctm nie będą widoczne jeśli istnieje zmodyfikowany plik w górnej warstwie.

Co pewien czas należy odmontować unię i poszukać plików, które przysłaniają pliki z niżeszj warstwy.

	umount /usr/src
	find /usr/src -type f

Pomocne mogą być również polecenia ls -W i rm -W, obiekty nazwane "whiteouts" w katalogu /usr/src będą przykrywać pliki z src-ctm.

Jeśli chcesz pobrać repozytorim CVS, użyj komendy cvs checkout. Każdorazowo, po uaktualnieniu źródeł przez CTM, użyj polecenia cvs update aby uaktualnić repozytorium CVS.

Zainicjowanie repozytorium CVS:

	cd /usr
	cvs -qd REPOZYTORIUM_CVS checkout -P src

i po każdym uaktualnieniu przez CTM:

	cd /usr/src
	cvs -q update -Pd

Czy CTM dla OpenBSD jest stabilne?

CTM od ponad pięciu lat znajduje zastosowanie w OpenBSD, a w przypadku FreeBSD jeszcze dłużej. CTM jest bardzo stabilnym i solidnym oprogramowaniem.

Co czeka CTM w przyszlości?

Oto kilka (małych) zmian i możliwych optymalizacji. Między innymi: Opinie i życzenia odnośnie CTM przesyłaj do autora!

Dodatkowe informacje

Osoby zainteresowane dodatkową wiedzą o CTM, swoje poszukiwania powinny rozpocząć od lektury Podręcznika systemowego FreeBSD Znajdują się tam strony man dla wszystkich narzędzi CTM.

Podsumowanie:

Ważne uwagi i informacje na temat CTM umieszczane są także na liście mailingowej announce@OpenBSD.org.

Podziękowania

Logo OpenBSD/CTM dla Projektu OpenBSD opracował Phillip F Knaack.


OpenBSD www@openbsd.org
Originally [OpenBSD: ctm.html,v 1.23 ]
$Translation: ctm.html, v 1.1 2003/10/20 23:00:00 bartoszkuzma Exp $
$OpenBSD$