UPDATE-RC.D(8)

NAZWA
update-rc.d - instaluje lub usuwa dowiązania do skryptów startowych w stylu System-V

SKŁADNIA
update-rc.d [-n] [-f] nazwa remove

update-rc.d [-n] nazwa defaults [NN | SS KK]

update-rc.d [-n] nazwa start|stop NN runlevel [runlevel]... . start|stop NN runlevel [runlevel]... . ...

update-rc.d [-n] nazwa disable|enable [ S|2|3|4|5 ]

OPIS
update-rc.d automatycznie aktualizuje dowiązania do skryptów w stylu System V. Dowiązania o nazwie /etc/rcrunlevel.d/NNnazwa są kierowane do skryptu /etc/init.d/nazwa. Uruchamiane są przez init, gdy zmieniany jest tryb pracy (runlevel), i ogólnie używane są do uruchamiania oraz zatrzymywania pracy serwisów systemowych, takich jak demony. runlevel jest jednym z trybów pracy obsługiwanym przez init, mianowicie 0123456789S, a NN jest dwucyfrowym kodem używanym przez init do określenia kolejności uruchamiania skryptów. Ten podręcznik opisuje jedynie sposób użycia i zachowanie się polecenia update-rc.d. Szczegóły dotyczące mechanizmów skryptów startowych w stylu System V są zawarte w opisie init(8) oraz w dokumencie Debian Policy Manual.

INSTALOWANIE DOWIĄZAŃ DO SKRYPTÓW STARTOWYCH
update-rc.d zawiera dwa tryby dodawania skryptów w sekwencji startowania systemu: tryb przestarzały, w którym sekwencja uruchamiania i konfiguracja poziomu uruchamiania brane są z argumentów linii poleceń, oraz tryb domyślny, w którym informacje dotyczące sekwencji i poziomu odczytywane są z nagłówków LSB zawartych w komentarzach skryptów startowych init.d. Taki nagłówek musi być obecny w skryptach init.d, szczegółowe informacje dotyczące formatu nagłówka LSB można znaleźć w podręczniku insserv(8). Decyzja o tym, który z tych dwóch trybów jest używany, zapada podczas instalacji lub aktualizacji systemu. Podczas aktualizacji, jeśli zależności deklarowane w nagłówkach LSB wszystkich zainstalowanych skryptów init.d nie są zapętlone, system uruchomieniowy jest konwertowany do nowego trybu opartego na zależnościach pomiędzy skryptami startowymi. Konwersja jest możliwa tylko w jedną stronę. Komputery używające trybu przestarzałego można rozpoznać po istnieniu pliku /etc/init.d/.legacy-bootordering. Pakiety instalujące skrypty init.d powinny wspierać obie powyższe metody w celu zachowania zgodności z systemami, które jeszcze nie przeszły na nową metodę. Poniższa sekcja opisuje poprzednie zachowanie, dostępne, gdy używany jest tryb przestarzały. update-rc.d uruchamiany z opcjami defaults, start lub stop, tworzy dowiązania o nazwie /etc/rcrunlevel.d/[SK]NNnazwa do skryptu /etc/init.d/nazwa. Jeśli istnieje już jakiś plik o nazwie /etc/rcrunlevel.d/[SK]??nazwa, to update-rc.d nie tworzy dowiązania. Dzięki temu administrator systemu może poprzestawiać dowiązania (zmieniając tym samym kolejność wykonywania skryptów) i jeżeli pozostanie przynajmniej jedno dowiązanie, to ta konfiguracja utworzona przez administratora nie zostanie nadpisana przez update-rc.d. Program tworzy dowiązania tylko wtedy, gdy żadne dowiązanie nie jest obecne, tj. gdy wydaje się, że usługa nigdy wcześniej nie była zainstalowana.

Częstym błędem popełnianym przez administratorów jest usuwanie wszystkich dowiązań z przekonaniem, że tym sposobem "wyłączy się" usługę, czyli że usługa nie będzie już uruchamiana. Jednakże, jeżeli usunie się wszystkie dowiązania, to podczas kolejnej aktualizacji pakietu, jego skrypt poinstalacyjny uruchomi update-rc.d, które ponownie utworzy dowiązania, zgodnie z ustawieniami podanymi przez opiekuna pakietu. Poprawnym sposobem wyłączania usług jest skonfigurowanie usługi jako zatrzymanej we wszystkich poziomach pracy, w których wcześniej była uruchamiana. W systemie init z Systemu V oznacza to zmienienie nazwy dowiązaniom symbolicznym z S na K.

Jeśli użyta jest opcja defaults, to update-rc.d utworzy dowiązania do uruchomienia serwisu w trybach pracy 2345 oraz zatrzymania serwisu w trybach pracy 016. Domyślnie, wszystkie dowiązania będą miały kod określający kolejność o wartości 20, ale powinno to zostać nadpisane, jeśli występują zależności od innych usług. Na przykład jeśli usługa systemowa B zależy od usługi A, to A musi być uruchomione przed B, a podczas zamykania systemu B musi zostać zakończone wcześniej niż A. Uzyskuje się to przed podanie dwóch argumentów NN. W ogólności, usługi podstawowe powinny być uruchamiane wcześnie (podczas startu systemu), a zabijane późno (gdy system jest zamykany), podczas gdy pozostałe aplikacje mogą zostać uruchomione później i zakończone wcześniej. Patrz sekcja PRZYKŁADY poniżej.

Pierwszy argument NN podaje numer sekwencji startowej, a drugi NN określa numer sekwencji używany do zatrzymania usługi. Najpierw są uruchamiane skrypty zatrzymujące usługi i przekazywany jest do nich argument stop. Następnie uruchomione zostają skrypty startowe z przekazanym do nich argumentem start. W obu przypadkach, skrypty są uruchamiane według rosnącej kolejności numerów sekwencji.

Podanie pojedynczego argumentu NN spowoduje użycie tego samego numeru sekwencji zarówno dla dowiązań uruchamiających i zatrzymujących usługi. Jest to wspierane w celu zachowania kompatybilności z poprzednimi wersjami, ale nie jest zalecane, ponieważ może prowadzić do niekonsekwentnych ustawień. Należy przyjąć następującą regułę: jeśli numer sekwencji uruchamiającej zostanie zwiększony, to numer sekwencji kończącej powinien zostać zmniejszony i na odwrót.

Jako zasadę należy przyjąć, że numer sekwencji dowiązania zatrzymującego powinien być równy liczbie 100 pomniejszonej o numer sekwencji dowiązania uruchamiającego. Pozwala to na zatrzymywanie usług w kolejności odwrotnej do tej, w której były uruchamiane. Oczywiście, dlatego domyślnym numerem sekwencji zatrzymującej powinno być 80. Wartością domyślną jest jednak 20 z powodu starego błędu w update-rc.d — błędu, którego nie można łatwo usunąć, gdyż istnieje ryzyko popsucia innych programów.

Zamiast argumentu defaults, można podać jeden lub więcej zbiorów argumentów określających poszczególne poziomy pracy, w których usługi będą uruchamiane lub zatrzymywane. Każdy z tych zbiorów argumentów zaczyna się od słowa kluczowego start lub stop oraz numeru sekwencji nn, po którym następuje jeden lub więcej poziomów pracy. Zbiór ten jest zakończony kropką. Zazwyczaj przy takim podawaniu będzie użyty jeden zbiór start i jeden stop. Jeżeli wymagane jest podanie różnych numerów sekwencji w różnych poziomach pracy, to można użyć kilku zbiorów start i stop. Jeżeli ten sam poziom pracy występuje w kilku zbiorach, to liczy się ten ostatni. Dlatego nie jest możliwe utworzenie kilku dowiązań start lub stop dla tej samej usługi w pojedynczym katalogu trybu pracy.

Skrypt /etc/init.d/nazwa musi już istnieć w momencie wywołania polecenia update-rc.d.

USUWANIE DOWIĄZAŃ
update-rc.d uruchomiony z opcją remove usuwa wszystkie dowiązania symboliczne do skryptu /etc/init.d/nazwa z katalogów /etc/rcrunlevel.d. Sam skrypt musi być wcześniej usunięty. Jeżeli skrypt wciąż istnieje, to update-rc.d przerywa działanie, zwracając odpowiedni komunikat błędu.

update-rc.d jest zazwyczaj uruchamiany ze skryptu usuwającego pakiet, jeżeli przekazano temu skryptowi argument purge. Jakiekolwiek pliki w katalogach /etc/rcrunlevel.d, które nie są dowiązaniami symbolicznymi do /etc/init.d/nazwa nie będą zmieniane.

WYŁĄCZANIE DOWIĄZAŃ DO SKRYPTÓW STARTOWYCH
update-rc.d uruchomiony z opcjami disable [ S|2|3|4|5 ] zmieni istniejące dowiązania skryptu /etc/init.d/nazwa przez zastąpienie dowiązań uruchamiających usługę na dowiązania ją zatrzymujące i ustawi im numer sekwencji równy różnicy między liczbą 100 a oryginalnym numerem sekwencji.

update-rc.d uruchomiony z opcjami enable [ S|2|3|4|5 ] zmieni istniejące dowiązania skryptu /etc/init.d/nazwa przez zastąpienie dowiązań zatrzymujących usługę na dowiązania ją uruchamiające i ustawi im numer sekwencji równy różnicy między liczbą 100 a oryginalnym numerem sekwencji, co powinno spowodować powrót do oryginalnego numeru sekwencji, z którym skrypt został zainstalowany zanim go wyłączono.

Obie opcje działają tylko na dowiązaniach startowych w poziomach S, 2, 3, 4 lub 5. Jeśli po słowach kluczowych disable lub enable nie poda się żadnych poziomów uruchomieniowych, to skrypt spróbuje zmienić dowiązania we wszystkich poziomach uruchomieniowych.

OPCJE

-n  Niczego nie rusza, tylko pokazuje, co mogłoby być zmienione.

-f  Zmusza do usunięcia dowiązań, nawet w przypadku, gdyby skrypt /etc/init.d/nazwa wciąż istniał.

PRZYKŁADY
Utworzenie domyślnych dowiązań:
update-rc.d blabla defaults
Odpowiadający mu nagłówek zależności określałby zależności
uruchamiające i kończące od "$remote_fs" i "$syslog" oraz uruchamianie
usługi w poziomach 2-5 i jej zatrzymywanie w poziomach 0, 1 i 6.
Odpowiednikiem tego polecenia będzie:
update-rc.d blabla start 20 2 3 4 5 . stop 20 0 1 6 .
Bardziej typowa wersja tego polecenia, używająca wprost zbioru argumentu:
update-rc.d blabla start 30 2 3 4 5 . stop 70 0 1 6 .
Dodaje dowiązania w domyślnych poziomach, kiedy B zależy od A.
update-rc.d skrypt_dla_A defaults 80 20
update-rc.d skrypt_dla_B defaults 90 10
Dodaje dowiązanie do usługi, od której (przypuszczalnie) nie zależą żadne inne usługi.
update-rc.d aplikacja_najwyższego_poziomu defaults 98 02
Dodaje dowiązania do skryptu, który wymaga usług uruchamiających i zatrzymujących o numerze sekwencji równym 20.
update-rc.d skrypt_zależący_od_usługi_poziomu20 defaults 21 19
Usuwa wszystkie dowiązania dla skryptu (zakładając, że blabla zostało już usunięte):
update-rc.d blabla remove
Przykład wyłączania usługi:
update-rc.d -f blabla remove
update-rc.d blabla stop 20 2 3 4 5 .
Przykład polecenia instalującego systemowy skrypt inicjacji-i-zamykania:
update-rc.d blabla start 45 S . stop 31 0 6 .
Przykład polecenia wyłączającego systemowy skrypt inicjacji-i-zamykania:
update-rc.d -f blabla remove
update-rc.d blabla stop 45 S .

BŁĘDY
Patrz http://bugs.debian.org/sysv-rc.

PLIKI

/etc/init.d/
    Katalog zawierający aktualne skrypty startowe.

/etc/rc?.d/
    Katalog zawierający dowiązania używane przez init i modyfikowane przez update-rc.d.

/etc/init.d/skeleton
    Przykładowy skrypt do wykorzystania przez programistę przy tworzeniu własnych skryptów init.d.

/var/lib/sysv-rc/legacy-bootsequence
    Plik za znacznikiem wskazującym na to, że używany jest przestarzały tryb ustawiania kolejności skryptów startowych.

ZOBACZ TAKŻE
Debian Policy Manual,
/etc/init.d/skeleton,
insserv(8), sysv-rc-conf(8), bum(8), init(8).

TŁUMACZENIE
Autorami polskiego tłumaczenia niniejszej strony podręcznika man są: Piotr Roszatycki (PTM) <dexter@debian.org> i Robert Luberda <robert@debian.org>.

Polskie tłumaczenie jest częścią projektu manpages-pl; uwagi, pomoc, zgłaszanie błędów na stronie http://sourceforge.net/projects/manpages-pl/. Jest zgodne z wersją 2.88 oryginału.