저는 Debian이나 Ubuntu를 서버로 설정하는 것을 좋아하며 이를 구성하기 전에 많은 애플리케이션을 설치해야 합니다. 가끔 필요할 때 나중에 사용할 수 있도록 앱을 설치하는 경우도 있습니다.
이러한 애플리케이션이 자동으로 활성화되고 실행되는 것을 원하지 않습니다. 이로 인해 특히 설정이 변경되지 않았고 다른 응용 프로그램과 충돌하는 경우 문제가 발생할 수 있습니다.
예를 들어, 다음 소프트웨어를 설치했습니다: apt install nginx apache2 lighttpd
.
재부팅했을 때 Nginx는 포트 80에서 수신 대기 중이었고 잘못 구성되고 안전하지 않아 비활성화해야 했습니다.
비활성화하고 다시 시작했는데 이제 누가 포트를 차지했는지 알 수 있습니다.
비활성화하면 lighttpd
Apache2가 대신하게 됩니다.
이건 말도 안 되고 내가 설치한 애플리케이션과 싸우는 것 같은 느낌이 듭니다. 중지할 수 있는 방법이 있나요? 설치 시 서비스를 활성화하고 시작하는 동작을 비활성화할 수 있는 방법이 있습니까?
편집하다
자동 시작을 방지하는 솔루션을 찾았습니다.
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)
즉, 비활성화된 서비스로 시작하십시오. 제 경우에는 서비스가 작동하려면 키를 설치해야 하므로 기본적으로 비활성화하고 싶습니다.