23.3. Synchronizacja źródeł

Istnieje wiele sposobów na wykorzystanie łącza internetowego w celu utrzymywania na bieżąco wszystkich, bądź wybranego obszaru źródeł projektu FreeBSD , zależnie od tego co nas interesuje. Podstawowymi oferowanymi usługami są: Anonimowy system CVS, CVSup, a także CTM.

OstrzeżeniePodczas, gdy możliwym jest aktualizowanie jedynie części naszego drzewa źródłowego, jedyną wspieraną formą aktualizacji jest aktualizacja całego drzewa i rekompilacja zarówno tzw. userlandu (czyli wszystkich programów pracujących na obszarze użytkownika, np. jak te z /bin i /sbin) jak i źródeł jądra. Częściowa aktualizacja drzewa źródłowego jak np. tylko jądra, bądź tylko userlandu skutkuje często problemami. Problemy te są zróżnicowane, od błędów w trakcie kompilacji po krytyczne błędy jądra czy uszkodzenie danych.

Anonimowy CVS i CVSup używają tzw. aktywnego modelu aktualizacji źródeł. W przypadku CVSup, użytkownik (bądź skrypt w cron'ie) wywołuje program cvsup, który komunikuje się z danym serwerem cvsupd w celu zaktualizowania naszych plików. Aktualizacje, które otrzymujemy, są świeże co do minuty i otrzymujemy je wtedy, i tylko wtedy, kiedy chcemy. Możemy w łatwy sposób ograniczyć aktualizację do określonych plików lub folderów, które nas interesują. Aktualizacje są generowanie "w biegu" przez serwer, w zależności od tego co mamy i tego co chcemy mieć. Anonimowy CVS jest prostrzy od CVSup, ponieważ stanowi on jedynie rozszerzenie CVS'a pozwalające mu na pobieranie zmian bezpośrednio ze zdalnego respozytorium CVS. CVSup może to zrobić o wiele bardziej wydajnie, ale Anonimowy CVS jest łatwiejszy w użyciu.

CTM, z drugiej strony, nie porównuje interaktywnie źródeł które mamy, z tymi w archiwum głównym, ani nie pobiera ich. Zamiast tego, kilkanaście razy na dzień, na głównej maszynie systemu CTM, uruchamiany jest skrypt, który identyfikuje zmiany dokonane w plikach od czasu ich poprzedniego uruchomienia. Wszystkie wykryte zmiany zostają skompresowane, oznakowane numerem sekwencji i zakodowane dla wysłania e-mailem (tylko w formacie ASCII gotowym do druku). Kiedy już otrzymamy “pliki syngalizujące zmiany CTM”, możemy je przekazać do narzędzia ctm_rmail(1), które automatycznie rozkoduje, zweryfikuje i naniesie określone zmiany w kopii źródeł użytkownika. Ten proces jest o wiele bardziej wydajny niż CVSup, i wykorzystuje o wiele mniej naszych zasobów systemowych, ponieważ bazuje raczej na modelu pasywnym niż aktywnym.

Oczywiście, są pewne kompromisy. Jeżeli nieopatrznie skasujemy część swoich archiwów, CVSup wykryje i przebuduje uszkodzone części. CTM tego nie zrobi, a jeżeli skasujemy jakieś części naszego drzewa źródłowego (i nie masz jego kopii bezpieczeństwa), będziemy musieli zacząć od początku (od jak najnowszej listy zmian CVS tzw. “base delta”) i przebudować wszystko używając CTM lub Anonimowego CVS'a, po prostu usuwając uszkodzone bity i sychronizując ponownie.

Ten i inne dokumenty można pobrać z ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

W przypadku pytań o FreeBSD prosimy przeczytać dostępną dokumentację przed kontaktem z <questions@FreeBSD.org>.
W sprawie zapytań o tę dokumentację prosimy o kontakt z <doc@FreeBSD.org>.