如何从 bash 脚本和 systemd 服务创建 debian 包?

GAD*_*D3R 4 packaging debian systemd

如何从 bash 脚本和 systemd 服务构建 debian 包?

systemd 服务将.deb在安装成功后通过启动/停止准备使用来控制脚本。通过网络搜索,有一些简单的示例可以将单个文件(python、shell、ruby ...脚本)转换为.deb.

Ste*_*itt 10

这是一个最小的源包,它将安装一个 shell 脚本和一个相关的服务。

树如下:

minpackage
??? debian
?   ??? changelog
?   ??? control
?   ??? install
?   ??? minpackage.service
?   ??? rules
?   ??? source
?       ??? format
??? script
Run Code Online (Sandbox Code Playgroud)

script是您的脚本,权限为 755;debian/minpackage.service是您的服务。

debian/changelog 需要看起来像

minpackage (1.0) unstable; urgency=medium                     
                                                                
  * Initial release.                                            
                                                                
 -- GAD3R <gad3r@example.org>  Tue, 05 Jan 2021 21:08:35 +0100                                                            
Run Code Online (Sandbox Code Playgroud)

debian/control 应该包含

Source: minpackage                         
Section: admin                             
Priority: optional                         
Maintainer: GAD3R <gad3r@example.org>
Build-Depends: debhelper-compat (= 13)     
Standards-Version: 4.5.1                   
Rules-Requires-Root: no                    
                                           
Package: minpackage                        
Architecture: all                          
Depends: ${misc:Depends}                   
Description: My super package              
Run Code Online (Sandbox Code Playgroud)

debian/rules 应该包含

#!/usr/bin/make -f  
                    
%:                  
        dh $@       
Run Code Online (Sandbox Code Playgroud)

Tab之前有一个真实的dh)。

其余文件可以按如下方式创建:

mkdir -p debian/source
echo "3.0 (native)" > debian/source/format
echo script usr/bin > debian/install
Run Code Online (Sandbox Code Playgroud)

要构建包,请运行

dpkg-buildpackage -uc -us
Run Code Online (Sandbox Code Playgroud)

minpackage目录中。

这将minpackage_1.0_all.deb在父目录中创建。它还会为您处理 systemd 维护者脚本,因此在安装软件包时会自动启用该服务,并支持 Debian 中可用的各种覆盖机制。