23.5. Śledzenie zmian dla wielu komputerów

Napisał Mike Meyer.

Jeżeli posiadamy wiele komputerów, którymi chcemy śledzić to samo drzewo źródłowe, wtedy pobieranie źródeł i przebudowa wszystkiego na każdym z nich zdaje się marnotrawstwem cennych zasobów: miejsca na dysku, przepustowości łącza i cykli procesora. W istocie tak właśnie jest. Rozwiązaniem jest wykonanie całej pracy na jednej maszynie, podczas gdy reszta zamontuje wyniki tej pracy przez NFS. Sekcja ta opisuje w jaki sposób można to wykonać.

23.5.1. Czynności wstępne

Najpierw, określmy zbiór maszyn, na których zamierzamy uruchomić tę samą grupę binariów, nazwiemy je grupą budowy. Każda maszyna może posiadać własne jądro, ale wszystkie będą korzystać z tego samego zestawu binariów userlandu. Z tej grupy wybierzmy maszynę, która ma być maszyną budującą. Będzie to ten komputer, na którym zostanie zbudowane jądro i świat. Najlepiej byłoby, gdyby był wystarczająco szybki do make buildworld i make buildkernel. Zechcemy napewno również wybrać komputer do roli maszyny testowej, gdzie będziemy mogli testować aktualizacje oprogramowania zanim trafią one do regularnego serwera. Musi to być komputer, któremu będziemy mogli zezwolić na dłuższe przerwy w działaniu. Może to być maszyna budująca, ale nie musi.

Wszystkie komputery z danej grupy budowy muszą zamontować /usr/obj i /usr/src z tej samej maszyny i w tym samym punkcie montowania. Najlepiej, jeżeli znajdą się one na dwóch różnych dyskach maszyny budującej, równie dobrze jednak mogą być na niej zamontowane z wykorzystaniem NFS. Jeżeli posiadamy wiele grup budowy, /usr/src powinno się znajdować na jednej maszynie budującej i być zamontowane poprzez NFS na reszcie.

Na koniec, upewnijmy się, że /etc/make.conf na wszystkich komputerach z grupy budowy zgadza się z tym na maszynie budującej. Oznacza to, że komputer budujący musi zbudować wszystkie części systemu bazowego, które zamierzamy zainstalować na dowolnym z pozostałych komputerów grupy budowy. Dodatkowo, każdy komputer budujący musi mieć ustawioną nazwę jądra przy pomocy KERNCONF w /etc/make.conf, powinien także wymieniać wszystkie nazwy jąder w KERNCONF, poczynając od własnego. Ponadto, musi także zawierać wszystkie pliki konfiguracji jądra dla każdego komputera w /usr/src/sys/arch/conf jeżeli ma zbudować ich jądra.

23.5.2. System bazowy

Gdy wszystko jest już gotowe, możemy przejść do budowania. Zbudujmy świat i jądro na maszynie budującej, tak jak opisano w Sekcja 23.4.7.2, ale niczego nie instalujmy. Po skończeniu budowy, przejdźmy do komputera testowego i zainstalujmy nowo zbudowane jądro. Jeżeli komputer ten ma zamontowane /usr/src i /usr/obj poprzez NFS, będziemy musieli aktywować sieć i zamontować je podczas wchodzenia do trybu awaryjnego przy ponownym uruchamianiu. Naprościej można to zrobić uruchamiając tryb wielu-użytkowników i wpisując shutdown now aby przejść do trybu awaryjnego. Kiedy już w nim będziemy, możemy zainstalować świat, jądro i użyć mergemaster'a, tak, jak normalnie. Kiedy skończymy, możemy uruchomić komputer powracając do normalnego trybu wielu-użytkowników.

Po upewnieniu się, że na maszynie testowej wszystko działa jak należy, użyjmy tej samej procedury co powyżej do zainstalowania nowego oprogramowania na każdym komputerze z grupy budowy.

23.5.3. Porty

Te same rozwiązania można zastosować w stosunku do drzewa portów. Pierwszym, ważnym krokiem jest zamontowanie /usr/ports z jednej maszyny na wszystkich z grupy budowy. Następnie, możemy odpowiednio ustawić /etc/make.conf, aby udostępniał pliki dystrybucyjne (ang. distfiles). Powinniśmy ustawić zmienną DISTDIR do powszechnego folderu wymiany, do którego prawa zapisu ma każdy użytkownik root z obrębu twojej sieci, jeżeli zamontował ten folder poprzez NFS. Ponadto, każdy komputer powinien mieć w WRKDIRPREFIX ustawiony lokalny folder budowy. Na koniec, jeżeli zamierzamy budować i rozpowszechniać paczki, powinniśmy ustawić w PACKAGES podobny folder do tego z DISTDIR.

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>.