私は、jdebを使用して.debファイルを作成し、Debianベースのディストリビューション内にMavenベースのJavaヘッドレスアプリケーションを提供する方法を学んでいます。
起動時に自動起動するようにインストールする必要があります。
Webで見つけた例では、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>
しかし、どうすればさまざまなinitシステムに対処できますか? systemd、sysvinit、upstartのデータタグをすべて一緒に設定する必要がありますか?
洞察に感謝します。
そのような場合、魔法はありません。 Debianパッケージの静的コピーを使用してsystemdファイルとsysVファイルの両方をインストールすることはできません。これは、サービスを複製するためです。
したがって、私が見つけた解決策は、構成ファイルをdebファイル内の通常のファイルとして配信し、postinst/postrmスクリプト内に、ターゲットマシンが実行しているinitシステムを識別するルーチンを実装してから、適切なファイルをにコピーすることでした。適切なディレクトリ。
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