EuroLinux 8

Moduły, strumienie i profile w dystrybucji EuroLinux 8

Repozytorium EuroLinux od wersji 8 oprócz pojedynczych pakietów RPM wprowadza nową funkcjonalność modułową. Typowy moduł to pakiety z aplikacją, pakiety z bibliotekami zależności specyficznymi dla aplikacji, pakiety z dokumentacją oraz pakiety z narzędziami pomocniczymi. Ta cecha jest charakterystyczna dla wszystkich Linuksów z rodziny Enterprise, do której należą między innymi dystrybucje Red Hat®, Oracle®, CentOS i naturalnie sam EuroLinux. Dzięki strumieniom moduły zapewniają możliwość oddzielenia cyklu życia systemu operacyjnego od cyklu życia używanych aplikacji.

Repozytorium EuroLinux od wersji 8 oprócz pojedynczych pakietów RPM wprowadza nową funkcjonalność modułową. Typowy moduł to pakiety z aplikacją, pakiety z bibliotekami zależności specyficznymi dla aplikacji, pakiety z dokumentacją oraz pakiety z narzędziami pomocniczymi. Ta cecha jest charakterystyczna dla wszystkich Linuksów z rodziny Enterprise, do której należą między innymi dystrybucje Red Hat®, Oracle®, CentOS i naturalnie sam EuroLinux. Dzięki strumieniom moduły zapewniają możliwość oddzielenia cyklu życia systemu operacyjnego od cyklu życia używanych aplikacji.

Strumienie modułu (ang. module streams) są filtrami, które można wyobrazić sobie jako wirtualne repozytoria w fizycznym repozytorium AppStream. Reprezentują one wersje komponentów. Nowy strumień najczęściej tworzony jest wtedy, gdy nowa wersja aplikacji przestaje być kompatybilna wstecz. Każdy ze strumieni otrzymuje aktualizacje niezależnie od siebie.

Strumienie modułu mogą być aktywne lub nieaktywne. Strumienie aktywne pozwalają na dostęp do pakietów RPM w ramach danego strumienia, umożliwiając instalację odpowiedniej wersji komponentu. W danym momencie może być aktywny tylko jeden strumień danego modułu, dzięki czemu w systemie może być zainstalowana tylko jedna wersja komponentu. Różne wersje mogą być natomiast używane w oddzielnych kontenerach.

Każdy moduł może posiadać domyślny strumień. Domyślne strumienie ułatwiają korzystanie z pakietów w standardowy sposób, nawet bez konieczności poznawania modułów. Domyślny strumień jest również strumieniem aktywnym, chyba że cały moduł został wyłączony lub inny strumień tego modułu został włączony.

Aby wybrać konkretny strumień dla uruchomionej aplikacji, należy zwrócić uwagę na poniższe elementy:

  • wymagana funkcjonalność i wersje komponentów, które ją obsługują
  • zgodność
  • długość cyklu życia aplikacji i plan aktualizacji.

Profile modułów

Profil jest listą zalecanych pakietów, które mają być zainstalowane wspólnie dla konkretnego zastosowania, np. dla serwera, klienta, developmentu, minimalnej instalacji lub innych. Te listy pakietów mogą zawierać pakiety spoza strumienia modułu, zwykle z repozytorium BaseOS lub z zależności strumienia.

Instalacja wielu pakietów za pomocą profilu jest wykonywana jednym poleceniem. Możliwe jest również zainstalowanie pakietów przy użyciu wielu profili tego samego strumienia modułu.

Każdy strumień modułu może posiadać dowolną liczbę profili, ale w niektórych przypadkach może nie posiadać żadnego. Dla danego strumienia modułu niektóre z jego profili mogą być oznaczone jako domyślne, a następnie wykorzystane do działań związanych z instalacją profilu, gdy żaden z profili nie jest wyraźnie określony. Jednak sama obecność profilu domyślnego dla strumienia modułu nie jest wymagana.

Zależności modułowe

Tradycyjnie, pakiety zależą od kolejnych pakietów i zazwyczaj określają wymagane wersje zależności. W przypadku pakietów zawartych w modułach ten mechanizm również występuje. Jednak grupowanie pakietów i ich poszczególnych wersji w moduły i strumienie tworzy nowe ograniczenia, ponieważ strumienie modułu mogą deklarować zależności od strumieni innych modułów, niezależnie od pakietów przez nie dostarczanych.

Po każdej operacji z pakietami lub modułami całe drzewo zależności wszystkich zainstalowanych pakietów musi spełniać wszystkie warunki, które pakiety deklarują. Dodatkowo wszystkie zależności strumieni modułów muszą być spełnione.

W związku z tym:

  1. Włączenie strumienia modułu może wymagać włączenia strumieni kolejnych modułów.
  2. Instalacja profilu strumienia modułów lub zainstalowanie pakietów ze strumienia może wymagać włączenia strumieni kolejnych modułów i zainstalowania kolejnych pakietów.
  3. Wyłączenie strumienia modułu może wymagać wyłączenia strumieni innych modułów.
  4. Usunięcie pakietu może wymagać usunięcia kolejnych pakietów. Jeśli te pakiety zostały dostarczone przez moduły, strumienie modułu pozostają włączone w przygotowaniu do dalszej instalacji, nawet jeśli nie są już instalowane żadne pakiety z tych strumieni (jest to odzwierciedleniem zachowania nieużywanego repozytorium yum).
  5. Nie jest możliwe włączenie strumienia modułu, gdy inny strumień tego samego modułu jest już włączony. Aby przełączać strumienie, należy postępować zgodnie z odpowiednią procedurą lub zresetować moduł, a następnie włączyć nowy strumień.

Zależności modułowe są dodatkową warstwą występującą obok regularnych zależności RPM. Oznacza to, że instalowanie różnych pakietów wymaga nie tylko rozwiązania zależności RPM, ale również wcześniejszego rozwiązania zależności modułowych. System zachowa wybór modułu i strumienia, chyba że zostanie wyraźnie poinstruowany, aby je zmienić. Pakiet modułowy będzie otrzymywał aktualizacje zawarte w aktualnie włączonym strumieniu modułu, który dostarcza ten pakiet, ale nie będzie aktualizowany do wersji zawartej w innym strumieniu.

Resetowanie strumieni modułu

Resetowanie modułu jest czynnością, która przywraca wszystkie jego strumienie do stanu początkowego. Jeżeli moduł posiada domyślny strumień, to w wyniku zresetowania stanie się on aktywny.

Resetowanie stanu modułu:

# yum module reset nazwa-modułu

Moduł jest przywracany do stanu początkowego. Informacje o włączonym strumieniu i zainstalowanych profilach są kasowane, ale nie jest usuwana żadna zainstalowana zawartość.

Wyłączenie wszystkich strumieni modułu

Moduły, które posiadają domyślny strumień, zawsze będą posiadały równocześnie jeden strumień aktywny. W sytuacji, gdy zawartość wszystkich strumieni modułu nie powinna być dostępna, możliwe jest wyłączenie całego modułu.

Wyłączenie modułu:

# yum module disable nazwa-modułu

yum poprosi o potwierdzenie, a następnie wyłączy moduł ze wszystkimi jego strumieniami. Żadne pliki nie zostaną jednak usunięte.

Przełączenie na późniejszy strumień

Po przejściu na późniejszy strumień modułu wszystkie pakiety z modułu są wymieniane na ich późniejsze wersje.

Procedura ta jest możliwa do wykonania tylko po spełnieniu dwóch poniższych warunków:

  1. System jest w pełni zaktualizowany.
  2. Żadne pakiety zainstalowane w systemie nie są nowsze niż te, które są dostępne w repozytorium.

Procedura

Wykonaj poniższe polecenie, aby określić, czy system jest przygotowany do przełączenia na późniejszy strumień:

# yum distro-sync

Polecenie musi się skończyć komunikatem „Nothing to do”. Jeśli zamiast tego yum zaproponuje zmiany i poprosi o potwierdzenie, to dokładnie przejrzyj te zmiany i zastanów się, czy chcesz kontynuować. Jeśli to konieczne, wykonaj polecenie yum distro-sync wielokrotnie. Możesz też odrzucić sugerowane zmiany i ręcznie zmodyfikować system do stanu, w którym polecenie zwraca „Nothing to do”.

Zmiana aktywnego strumienia na późniejszy:

# yum module reset nazwa-modułu
# yum module enable nazwa-modułu:nowy-strumień

Zsynchronizuj zainstalowane pakiety, aby aktywować zmiany pomiędzy strumieniami:

# yum distro-sync

Jeśli wynik działania polecania zasugeruje zmiany poza strumieniami, należy je dokładnie przeanalizować. Jeśli niektóre zainstalowane pakiety zależą od wcześniejszego strumienia i nie istnieje kompatybilna wersja w późniejszym strumieniu, yum zgłosi konflikt zależności. W tym przypadku użyj opcji --allowerasing do usunięcia takich pakietów, ponieważ nie mogą one być zainstalowane razem z późniejszym strumieniem z powodu brakujących zależności.

Podsumowanie

Stosowanie modułów, strumieni i profili jest wyraźnie bardziej złożone, ale za to dużo bardziej skalowalne. Jeżeli nowe funkcje modułów nie są nam potrzebne, to możemy posługiwać się poleceniem yum tak, jak dotychczas, z pominięciem dodatkowej funkcjonalności modułowej oferowanej w wersji 8 systemu. Warto jednak rozważyć korzystanie z modułów, gdy istnieje wyraźna potrzeba znacznie większej elastyczności naszego środowiska.

Autorzy

Artykuły na blogu są pisane przez osoby z zespołu EuroLinux. 80% treści zawdzięczamy naszym developerom, pozostałą część przygotowuje dział sprzedaży lub marketingu. Dokładamy starań, żeby treści były jak najlepsze merytorycznie i językowo, ale nie jesteśmy nieomylni. Jeśli zauważysz coś wartego poprawienia lub wyjaśnienia, będziemy wdzięczni za wiadomość.