해당 파일 또는 디렉토리가 없습니다. /etc/init.d/functions


21

응용 프로그램 그룹을 시작 / 다시 시작 / 중지하기위한 시작 스크립트를 만들었습니다. /etc/init.d/functions스크립트 에서 lib 를 사용했습니다 . 시스템에서 제대로 작동하지만 클라이언트에서는 작동하지 않습니다. 그는 오류가 발생합니다 :

해당 파일 또는 디렉토리가 없습니다. /etc/init.d/functions

현재 클라이언트가 어떤 Linux 배포판을 사용하는지 알 수 없습니다. 는 IS init.d/functions다른 리눅스 배포판의 파일 다른가? 그렇다면 어떻게 찾을 수 있습니까?


이 오류는 Windows 줄 끝으로 인해 발생할 수도 있습니다.
Emerson Rocha

답변:


24

실행중인 배포에 따라 다릅니다. 데비안과 우분투는 /lib/lsb/init-functions; SuSE는 /etc/rc.status; 그들 중 어느 것도 다른 것과 호환되지 않습니다. 실제로 일부 배포판은 전혀 사용하지 않거나 /etc/init.d호환되지 않는 방식으로 사용합니다 (슬랙웨어와 아치가 머리 위로 떨어져 나옵니다. 다른 배포판 도 있습니다).


파일이 무엇이고 Redhat 5.5의 위치는 어디인지 알 수 있습니까?
tecman

또한 파일 이름과 경로를 어떻게 찾을 수 있습니까? 그것을 할 수있는 방법이 있습니까 아니면 문서에서만 찾을 수 있습니까?
tecman

나는 두 가지를 모두 가지고 있기 때문에 그것을 보았습니다. Red Hat이 설치되어 있지 않습니다. 그러나 위에서 굵게 표시된 것의 중요성을 놓쳤을 수도 있습니다 . 다른 배포판 에는 기능 /etc/init.d/functions 이 없습니다 . 모든 배포판에는에 대한 자체 규칙이 /etc/init.d있으며 해당 라이브러리 (있는 경우)는 해당 규칙을 중심으로합니다. 예를 들어 SuSE 's rc_status -s입니다. 의 일부 LSB "표준"기능이 /lib/lsb/init-functions있지만 클라이언트에서이를 제공하도록 업데이트 된 배포를 실행하고 있지 않을 수 있습니다.
geekosaur

15

에서 CentOS는 7 도커 이미지 나는 단순히 패키지를 설치했다 initscripts이 스크립트를 설치하기 위해서는 :

yum install -y initscripts

(덕분에 이 문제에docker-library 있는 나를보고 만든 커밋이 )


이것은 Docker 컨테이너의 Fedora 24에서 Jenkins를 사용하는 문제를 해결했습니다. ( 물론 dnf대신 사용 yum). 감사!
geerlingguy

이는 MarkLogic 9를 Centos7 도커 컨테이너에 설치할 때도 작동합니다. 설치 문서는 lib.so.6과 lsb-core-amd64가 필요하다고 언급하지만 CentOS 7 전체 설치에 대해 이야기하고 있기 때문에 initscripts 패키지가 필요하다는 것을 간과합니다.
alc6379

12

그것은 절대적으로 배포에 의존합니다. 제대로 일치하는 init 스크립트를 작성하려면 배포판을 찾아야합니다.

LSB (Linux Standard Base) 사양을 따를 수도 있고 해당 배포판도 그렇게되기를 바랍니다. 현재 사양에 따르면 표준 init 스크립트 기능을 다음과 같이 사용할 수 있습니다 /lib/lsb/init-functions( 문서 참조 ). Fedora 및 기타 Red Hat 관련 배포판에서는 redhat-lsb패키지 에서 제공하며 선택 사항 입니다.

따라서 타겟팅 대상을 파악해야합니다. 죄송합니다.


1

최근 답변 추가

다른 답변에서 언급했듯이, LSB (Linux Standard Base) 사양은 여기에init.d 나열된 LSB 정의 초기화 기능을 사용하여 플랫폼 독립적 기반 시작 스크립트 를 작성하는 방법을 제공합니다 .

모든 LSB 준수 분포 (모든 큰 것들) 파일 제공하는 /lib/lsb/init-functions메타 패키지 (나열된 기능을 정의) lsb-core-noarch배포판의 패키지 관리자를 사용하여 설치할 수 있습니다 $PKGMAN $INSTOPT lsb-core-noarch( yum, dnf, apt, ...).

이러한 init 스크립트의 예는 this 입니다.

그러나 systemd현재 대부분의 배포판에 대한 사실상의 시스템 및 서비스 관리자는 어떻 습니까?를 쓰지 systemd service unit않고 작성하는 것이 좋습니다 initscript.



0

도커 컨테이너를 실행하는 동안 동일한 오류가 발생했습니다. Dockerfile에 아래 줄을 추가하여 수정되었습니다.

RUN yum install -y initscripts
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.