Debian/Ubuntu - 설치 시 서비스 시작 및 활성화 방지

Debian/Ubuntu - 설치 시 서비스 시작 및 활성화 방지

저는 Debian이나 Ubuntu를 서버로 설정하는 것을 좋아하며 이를 구성하기 전에 많은 애플리케이션을 설치해야 합니다. 가끔 필요할 때 나중에 사용할 수 있도록 앱을 설치하는 경우도 있습니다.

이러한 애플리케이션이 자동으로 활성화되고 실행되는 것을 원하지 않습니다. 이로 인해 특히 설정이 변경되지 않았고 다른 응용 프로그램과 충돌하는 경우 문제가 발생할 수 있습니다.

예를 들어, 다음 소프트웨어를 설치했습니다: apt install nginx apache2 lighttpd.

재부팅했을 때 Nginx는 포트 80에서 수신 대기 중이었고 잘못 구성되고 안전하지 않아 비활성화해야 했습니다.

여기에 이미지 설명을 입력하세요.

비활성화하고 다시 시작했는데 이제 누가 포트를 차지했는지 알 수 있습니다.

여기에 이미지 설명을 입력하세요.

비활성화하면 lighttpdApache2가 대신하게 됩니다.

이건 말도 안 되고 내가 설치한 애플리케이션과 싸우는 것 같은 느낌이 듭니다. 중지할 수 있는 방법이 있나요? 설치 시 서비스를 활성화하고 시작하는 동작을 비활성화할 수 있는 방법이 있습니까?

편집하다

자동 시작을 방지하는 솔루션을 찾았습니다.

echo exit 101 > /usr/sbin/policy-rc.d
chmod +x /usr/sbin/policy-rc.d

자동 활성화를 방지하는 솔루션을 찾았습니다.

https://unix.stackexchange.com/a/723679/547917

apt --no-enable --no-start그러나 이것은 우스꽝스러운 일입니다. 일종의 스위치를 사용하는 것보다 더 간단한 것은 없습니다.

답변1

systemd 사전 설정을 설정하여 새로 설치된 서비스(최소한 요즘 systemd 단위를 사용하여 구성된 대부분의 서비스)가 기본적으로 비활성화되도록 할 수 있습니다.

sudo mkdir -p /etc/systemd/system-preset
echo 'disable *' | sudo tee /etc/systemd/system-preset/99-default-disable.preset

바라보다man systemd.preset더 알아보기.

답변2

자신만의 패키지를 생성하고 서비스가 자동으로 시작되는 것을 원하지 않는 경우 사전 설정 파일을 설치할 수 있습니다. 여러 위치가 있습니다. 폴더가 이미 기본 시스템 파일과 함께 존재하기 때문에 패키지에 대해 다음 위치를 선택했습니다.

/etc/systemd/system-preset/

확장명으로 50-시작하여 패키지 이름을 따서 파일 이름을 지정했습니다 ..preset

50-<package-name>.preset

파일에 다음 줄을 추가했습니다.

disable <service-name>.service

일반적 <service-name>으로 와 동일 <package-name>하지만 항상 그런 것은 아닙니다.

이제 debian/<package-name>.install파일에 한 줄이 더 있습니다.

/usr/share/<package-name>/50-<package-name>.preset /etc/systemd/system-preset/

직접 설치할 수 없기 때문에 내 CMakeLists.txt파일 중 하나의 디렉토리 .preset에 파일을 설치했습니다 ./usr/share/<package-name>//etc/...

project(service-config)

INSTALL(
    FILES
        50-<package-name>.preset

    DESTINATION
        share/<package-name>
)

이제 서비스 상태가 다음과 같이 표시됩니다.

...; vendor preset: disabled)

즉, 비활성화된 서비스로 시작하십시오. 제 경우에는 서비스가 작동하려면 키를 설치해야 하므로 기본적으로 비활성화하고 싶습니다.

관련 정보