在 Debian 中将 deb 软件包安装为服务

在 Debian 中将 deb 软件包安装为服务

我有一个包含一组二进制文件(基于 .NET 6)的 Deb 包,但是我们需要将这些应用程序作为服务安装在 Debian 计算机中。

我可以手动进行服务安装。,需要一些输入如何制作包含服务 bash 脚本的 Deb 包。

以下是我的脚本供您参考。任何意见将不胜感激。

#!/bin/bash
#IEC Service 
sudo nano /etc/systemd/system/ProtocolService
[Unit] 
Description=Protocol Service Provider 
[Service] 
WorkingDirectory= /home/debian/publish/ServiceProvider 
ExecStart=/usr/bin/dotnet /home/debian/publish/ServiceProvider.dll 
Restart=always 
RestartSec=10 # Restart service after 10 seconds if dotnet service crashes 
SyslogIdentifier=offershare-web-app 
Environment=ASPNETCORE_ENVIRONMENT=Production 
[Install] 
WantedBy=multi-user.target
#start the service
sudo systemctl daemon-reload
sudo systemctl enable service_name 
sudo systemctl start service_name

答案1

最好的方法是使用德布帮助者dh_installsystemd,dh_systemd_enabledh_systemd_start

要使用这些,您所需要做的就是确保您的服务文件存在为debian/<package>.service,然后将以下行添加到您的维护者脚本中 ( debian/{post,pre}{inst,rm})。

#DEBHELPER#

该行将替换为 Debian 当前的服务策略,该策略将启用/启动服务、处理升级和(取消)屏蔽服务。它还将确保尊重用户的全局配置(以防他们不希望默认启用服务)。

然后只需像平常一样构建您的包(dpkg-buildpackagedebuild)。您的服务将安装到正确的位置,并且一些辅助命令哪些调用start/enable/unmask/stop/disable...操作将自动添加到您的维护者脚本中并安装。

进一步阅读:


如果您不使用debhelper(也许您正在使用dpkg-deb, cpack,或自己用 打包ar),则将systemctl enableand添加systemctl startpostinstsystemctl disablesystemctl stop添加到prerm。某些全局设置和边缘情况未以这种方式涵盖,但它大部分都可以工作。

相关内容