Brak takiego pliku lub katalogu /etc/init.d/functions


21

Utworzyłem skrypt startowy do uruchamiania / restartowania / zatrzymywania grupy aplikacji. Użyłem lib /etc/init.d/functionsw moim skrypcie. Działa dobrze w moim systemie, ale nie działa dla mojego klienta; pojawia się błąd:

Brak takiego pliku lub katalogu /etc/init.d/functions

W tej chwili nie wiem, z której dystrybucji linux korzysta mój klient. Czy init.d/functionsplik jest inny dla różnych dystrybucji Linuksa? Jeśli tak, to jak mogę to znaleźć?


Pamiętaj, że ten błąd może być również spowodowany zakończeniami linii systemu Windows.
Emerson Rocha,

Odpowiedzi:


24

Jest to specyficzne dla każdej dystrybucji, którą prowadzisz. Debian i Ubuntu mają /lib/lsb/init-functions; SuSE ma /etc/rc.status; żaden z nich nie jest kompatybilny z innymi. W rzeczywistości niektóre dystrybucje w ogóle nie używają /etc/init.dlub używają go w sposób niezgodny (Slackware i Arch przychodzą mi z głowy; są też inne).


czy mogę wiedzieć, który to plik i gdzie znajduje się dla Redhat 5.5?
tecman

Ponadto, jak mogę znaleźć nazwę i ścieżkę pliku? czy jest na to sposób, czy możemy to znaleźć tylko w dokumentacji?
tecman

Zrobiłem to, patrząc, ponieważ mam oba dostępne; Nie mam instalacji Red Hat. Ale mogłeś nie docenić znaczenia tego, co powiedziałem pogrubioną czcionką powyżej: funkcje w tobie /etc/init.d/functions nie istnieją w innych dystrybucjach. Każda dystrybucja ma swoje własne reguły /etc/init.d, a biblioteka funkcji (jeśli istnieje) jest zorientowana wokół tych reguł; na przykład SuSE rc_status -s. Istnieją pewne „standardowe” funkcje LSB, które powinny być dostępne /lib/lsb/init-functions, ale twój klient może nie uruchamiać dystrybucji, która została zaktualizowana, aby ją zapewnić.
geekozaur

15

W obrazie Docker CentOS 7 musiałem po prostu zainstalować pakiet initscripts, aby zainstalować ten skrypt:

yum install -y initscripts

(Dzięki temu problemowi,docker-library który sprawił, że spojrzałem na to zatwierdzenie )


To rozwiązało mój problem z użyciem Jenkinsa na Fedorze 24 w kontenerze Docker. (tylko używane dnfzamiast yumoczywiście). Dzięki!
geerlingguy

Działa to również podczas instalowania MarkLogic 9 w kontenerze dokowanym Centos7. Dokumenty instalacyjne wspominają tylko o potrzebie lib.so.6 i lsb-core-amd64, ale zgaduję, że skoro mówią o instalacji na pełnej instalacji CentOS 7, przeoczą, że potrzebowałbyś pakietu initscripts.
alc6379

12

To całkowicie zależy od dystrybucji. Naprawdę będziesz musiał znaleźć dystrybucję, aby napisać odpowiednio dopasowany skrypt startowy.

Możesz także postępować zgodnie ze specyfikacją LSB (Linux Standard Base) i mieć nadzieję, że dana dystrybucja również. Obecna specyfikacja nakazuje, aby standardowe funkcje skryptu inicjującego były dostępne jako /lib/lsb/init-functions( patrz dokumenty tutaj ). W Fedorze i innych dystrybucjach związanych z Red Hat, które są dostarczane przez redhat-lsbpakiet, który jest opcjonalny .

Tak więc naprawdę musisz dowiedzieć się, na co celujesz. Przepraszam.


1

Dodanie ostatniej odpowiedzi

Jak zauważono w innych odpowiedziach, specyfikacje Linux Standard Base (LSB) zapewniają sposób pisania niezależnych od platformy init.dskryptów startowych, przy użyciu zdefiniowanych przez LSB funkcji inicjujących wymienionych tutaj

Wszystkie dystrybucje LSB zgodne (wszystkie te duże) dostarczyć plik /lib/lsb/init-functions(który określa wymienione funkcje) w meta-pakietu lsb-core-noarch, który można zainstalować za pomocą menedżera pakietów dystrybucji w $PKGMAN $INSTOPT lsb-core-noarch( yum, dnf, apt, ...).

Przykład takiego skryptu inicjującego jest następujący .

Biorąc jednak pod uwagę fakt, że systemdobecnie jest to de facto menedżer systemu i usług dla większości dystrybucji, lepiej napisać systemd service unitzamiast pisać initscript.



0

Ja również dostałem ten sam błąd podczas uruchamiania kontenera dokowanego. Zostało to naprawione poprzez dodanie poniżej wiersza w moim pliku Docker

RUN yum install -y initscripts
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.