다양한 초기화 시스템을 처리하는 .deb를 만드는 방법

다양한 초기화 시스템을 처리하는 .deb를 만드는 방법

저는 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

관련 정보