Opublikowano wersję menedżera usług s6-rc 0.7.0.0, przeznaczonego do zarządzania uruchamianiem skryptów inicjalizacji i usług. Obsługiwane jest śledzenie drzewa zależności oraz automatyczne uruchamianie lub zatrzymywanie usług w celu osiągnięcia określonego stanu. Narzędzie s6-rc może być stosowane zarówno w systemach inicjalizacji, jak i do organizacji uruchamiania dowolnych usług w odpowiedzi na zdarzenia, odzwierciedlające zmiany stanu systemu. System obsługuje skrypty inicjalizacji zgodne z sysv-init i może importować informacje o zależnościach z sysv-rc lub OpenRC. Kod napisany jest w języku C i jest dostępny na licencji ISC.
Menedżer usług s6-rc zawiera zestaw narzędzi do uruchamiania i zatrzymywania długo działających procesów (demonów) lub skryptów inicjalizacji, które kończą działanie natychmiastowo. W trakcie pracy zapewnione jest równoległe uruchamianie nieprzecinających się usług i gwarantowana jest powtarzalna kolejność wykonania skryptów przy różnych uruchomieniach. Wszystkie zmiany stanu są obsługiwane z uwzględnieniem zależności, na przykład podczas uruchamiania jakiejś usługi automatycznie uruchomione zostaną niezbędne dla niej zależności, a podczas zatrzymywania — także zależne usługi.
W przeciwieństwie do innych menedżerów usług, s6-rc obsługuje proaktywne (w trybie offline) budowanie grafu zależności dla istniejącego zestawu usług, co pozwala na przeprowadzenie zasobożernej analizy zależności oddzielnie, a nie podczas ładowania lub zmiany stanu. System nie jest monolityczny i jest podzielony na szereg oddzielnych i wymiennych modułów, z których każdy, zgodnie z filozofią Uniksa, rozwiązuje tylko określony problem. Projekt s6-rc trzyma się filozofii minimalizmu (nie zawiera niczego zbędnego) i zużywa minimum zasobów.
Zamiast poziomów uruchamiania (runlevel) w s6-rc zaproponowano koncepcję zestawów (bundles), która pozwala na grupowanie usług według dowolnych kryteriów oraz rozwiązywanych zadań. Aby zwiększyć wydajność działania, wykorzystywana jest skompilowana baza danych zależności, tworzona przez narzędzie s6-rc-compile na podstawie zawartości katalogów z plikami do uruchamiania/ zatrzymywania usług. Do analizy i manipulacji bazą danych proponowane są narzędzia s6-rc-db oraz s6-rc-update. Zestaw narzędzi s6 używany jest w dystrybucjach Obarun, Adelie i Artix, a także opcjonalnie może być stosowany w Gentoo, Void i Alpine.
Projekt rozwija również towarzyszące pakiety, które uzupełniają s6-rc:
- s6 – narzędzia do monitorowania pracy procesów i zarządzania procesami (analog daemontools i runit). Obsługiwane są takie możliwości jak ponowne uruchamianie procesów po ich awaryjnym zakończeniu, uruchamianie obsługi (aktywacja usługi) w momencie dostępu do portu sieciowego, logowanie zdarzeń (zastępuje syslogd) oraz kontrolowane udzielanie dodatkowych uprawnień (analog sudo).
- s6-linux-init – realizacja procesu init dla systemów operacyjnych opartych na jądrze Linux, stosowana do tworzenia systemów inicializacyjnych, w których do zarządzania usługami i skryptami wykorzystywane są pakiety s6 oraz s6-rc.
- s6-networking – zestaw narzędzi do tworzenia usług sieciowych, podobny do ucspi.
- s6-frontend – opakowanie umożliwiające odtworzenie funkcjonalności daemontools i runit na bazie s6.
- s6-portable-utils – zestaw standardowych narzędzi Unix, takich jak cut, chmod, ls, sort i grep, zoptymalizowanych pod kątem minimalnego zużycia zasobów i dostarczanych na licencji ISC.
- s6-linux-utils – zestaw narzędzi związanych z Linuxem, takich jak chroot, freeramdisk, logwatch, mount oraz swapon.
- mdevd – menedżer zdarzeń (analog udevd), przeznaczony do obsługi hotplugowania urządzeń. Mdevd jest zgodny z mdev z Busybox w oparciu o konfigurację.
- bcnm – konfigurator sieciowy z możliwościami ustawień Wi-Fi po stronie klienta.
- execline – język skryptowy.
- skalibs – biblioteka do tworzenia bezpiecznych aplikacji systemowych w języku C.
- s6-dns – zestaw bibliotek klienckich i narzędzi, które zastępują standardowe narzędzia DNS z BIND oraz djbdns.
- dnsfunnel – przekierowuje lokalne zapytania DNS do zewnętrznego serwer (DNS forwarder).
- shibari – prosty serwer DNS.
- tipidee – serwer HTTP z obsługą HTTP/1.1.
W nowej wersji s6-rc i powiązanych z nim narzędzi:
- Wprowadzono polecenie „s6-rc reload” do ponownego uruchamiania długotrwałych usług.
- Dodano plik sterujący reload-signal, który określa sygnał wysyłany do procesu w celu ponownego uruchomienia (domyślnie SIGHUP).
- Usunięto narzędzie s6-rc-bundle — zmiany w zestawach bundle bez rekompilacji nie są już wspierane.
- Proponowany jest nowy format wewnętrznej bazy danych (do aktualizacji wymagana jest rekompilacja i uruchomienie narzędzia s6-rc-format-upgrade).
- Zapewniono poprawne przetwarzanie sytuacji ponownego uruchomienia narzędzia s6-rc-init w celu inicjalizacji usług i poprawiono obsługę awarii systemowych.
- Do narzędzia s6-rc-set-change dodano opcje: -I/-i do wyświetlania ostrzeżenia lub zakończenia z błędem w przypadku wykrycia konfliktu zależności; -P/-p do wyłączenia/włączenia automatycznego rozwiązywania konfliktów zależności podczas zmiany stanu usług.
- Usunięto przestarzałą opcję „-f”.
- Do narzędzia s6 dodano polecenie s6-svscanboot do przekierowywania dzienników superwizora s6-svscan do s6-log, gdy nie jest wykonywane pod PID 1.
- Wprowadzono opcję „s6-svc -l” do wysyłania sygnału do ponownego uruchomienia.
- Interfejs użytkownika s6-frontend otrzymał wsparcie dla opcji i poleceń: „s6 —user” (do pracy z usługami użytkownika), „s6 live reset”, „s6 apply”, „s6 enable|disable|start|stop|kill|apply”, „s6 live stop —clean”.
- W serwerze http tipidee wprowadzono wsparcie dla FastCGI oraz dodano opcję cgi_pass_authorization.
Źródło: opennet.ru
