さまざまな初期化システムを処理する.debを作成する方法

さまざまな初期化システムを処理する.debを作成する方法

私はidebを使用して、DebianベースのディストリビューションでMavenベースのJavaヘッドレスアプリケーションを提供するために.debファイルを作成する方法を学びます。

起動時に自動的に起動するようにインストールする必要があります。

Webで見つかった例では、idebは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

この状況には魔法はありません。 Debianパッケージの静的コピーを使用するとサービスが重複するため、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

おすすめ記事