저는 jdeb을 사용하여 데비안 기반 배포판에서 Maven 기반 Java 헤드리스 애플리케이션을 제공하기 위해 .deb 파일을 만드는 방법을 배우고 있습니다.
부팅 시 자동으로 시작되도록 설치해야 합니다.
웹에서 찾은 예제에서 jdeb는 init.d 파일이 포함된 데이터 디렉터리로 설정되어 있습니다.
<data>
<src>${project.basedir}/src/deb/init.d/</src>
<type>directory</type>
<mapper>
<type>perm</type>
<prefix>/etc/init.d</prefix>
<filemode>755</filemode>
<user>root</user>
<group>root</group>
</mapper>
</data>
하지만 다른 초기화 시스템을 어떻게 처리합니까? systemd, sysvinit 및 upstart에 대한 데이터 레이블을 함께 설정해야 합니까?
통찰력을 가져 주셔서 감사합니다.
답변1
이 상황에는 마법이 없습니다. 데비안 패키지의 정적 복사본을 사용하면 서비스가 중복되므로 systemd 및 sysV 파일을 설치할 수 없습니다.
그래서 내가 찾은 해결책은 구성 파일을 deb 파일의 일반 파일로 제공한 다음 대상 시스템이 실행 중인 init 시스템을 식별하는 postinst/postrm 스크립트에 루틴을 구현한 다음 올바른 파일을 올바른 디렉토리에 복사하는 것이었습니다. .
if [[ `systemctl` =~ -\.mount ]]
then
cp $serviceDir/service-systemd /lib/systemd/system/$serviceName.service
elif [[ -f /etc/init.d/cron && ! -h /etc/init.d/cron ]]
then
cp $serviceDir/service-sysvinit /etc/init.d/$serviceName
fi