当前位置:首页 > 文章中心 > 正文内容

将Shell脚本打包为DEB安装包的完整教程

dgx6664个月前 (09-01)文章中心22

原文链接:「链接」

在企业运维、国产化适配或内网部署场景中,经常有脚本需要部署到多个终端,例如:

拷贝脚本到指定目录

设置执行权限

修改系统配置或写入日志

启用 systemd 服务

注册菜单或创建快捷方式

如果每次都靠 sh install.sh 执行部署脚本,不仅易错、不可管理,还不支持版本控制或卸载清理。更专业的方式:将这些操作封装进 .deb 安装包,用户只需 dpkg -i 即可完成完整部署流程!


一、目标:让脚本操作“自动化安装”而不是“单独执行”

举例:你原来的 install.sh 做了如下事:

pdsyw@pdsyw1024:~/Desktop$ vim install.sh

pdsyw@pdsyw1024:~/Desktop$ cat install.sh

#!/bin/bash

cp myapp.sh /usr/local/bin/myapp

chmod +x /usr/local/bin/myapp

mkdir -p /etc/myapp

cp config.ini /etc/myapp/

echo "Installed successfully."

现在的目标是:将这些步骤融入到 .deb 包中,安装即完成上述部署!


二、目录结构设计(推荐标准)


原 install.sh 操作

替代方法

cp myapp.sh /usr/...

包内直接包含目标路径文件

chmod +x

写入 postinst

mkdir -p + cp

包含完整 etc 结构或在 postinst 中处理

软链接、输出提示

postinst 中实现

卸载时清理文件

用 prerm 或 postrm


pdsyw@pdsyw1024:~/Desktop$ tree myapp

myapp

├── DEBIAN

│  ├── control

│  ├── postinst

│  └── prerm

├── etc

│  └── myapp

│    └── config.ini

└── usr

  └── local

    └── bin

      └── myapp.sh

 

6 directories, 5 files


三、创建工作目录

pdsyw@pdsyw1024:~/Desktop$ mkdir -p myapp/DEBIAN

pdsyw@pdsyw1024:~/Desktop$ mkdir -p myapp/usr/local/bin

pdsyw@pdsyw1024:~/Desktop$ mkdir -p myapp/etc/myapp


四、control 文件详解

DEBIAN/control 是 .deb 的元信息中心,示例如下:

pdsyw@pdsyw1024:~/Desktop$ vim myapp/DEBIAN/control

pdsyw@pdsyw1024:~/Desktop$ cat myapp/DEBIAN/control

Package: myapp

Version: 1.0.0

Section: utils

Priority: optional

Architecture: all

Maintainer: 运维工具团队 <ops@example.com>

Depends: bash

Description: MyApp 工具脚本


MyApp 是一个自动化工具,安装后可在终端使用 myapp 命令直接运行。

关键字段解释:

字段

含义

Package

包名,卸载时使用

Version

版本号

Architecture

all 表示无架构依赖(纯脚本)

Depends

安装依赖,例如 bash、coreutils

Description

第一行简述,第二行开始需缩进一个空格


五、postinst:脚本操作迁移入口

路径:DEBIAN/postinst,记得赋予执行权限 chmod +x postinst

这是 .deb 安装完成后自动执行的脚本,可将 install.sh 中的行为搬到这里:

pdsyw@pdsyw1024:~/Desktop$ vim myapp/DEBIAN/postinst

pdsyw@pdsyw1024:~/Desktop$ cat myapp/DEBIAN/postinst

#!/bin/bash

 

# 设置执行权限

chmod +x /usr/local/bin/myapp.sh

 

# 创建命令别名(软链接)

ln -sf /usr/local/bin/myapp.sh /usr/local/bin/myapp

 

# 创建默认配置文件(如果未存在)

if [ ! -f /etc/myapp/config.ini ]; then

  cp /etc/myapp/config.ini.default /etc/myapp/config.ini

fi

 

# 输出提示

echo "MyApp 安装完成,可通过 myapp 命令运行。"

pdsyw@pdsyw1024:~/Desktop$ chmod +x  myapp/DEBIAN/postinst 


六、卸载清理逻辑(可选)

你还可以定义:

prerm:卸载前执行(适合停止服务)

postrm:卸载后执行(适合删除残留文件)


示例 prerm:

pdsyw@pdsyw1024:~/Desktop$ vim myapp/DEBIAN/prerm

pdsyw@pdsyw1024:~/Desktop$ cat myapp/DEBIAN/prerm

#!/bin/bash

# 删除命令软链接

rm -f /usr/local/bin/myapp

pdsyw@pdsyw1024:~/Desktop$ chmod +x myapp/DEBIAN/prerm


七、编辑myapp.sh

pdsyw@pdsyw1024:~/Desktop$ cp myapp.sh myapp/usr/local/bin/

pdsyw@pdsyw1024:~/Desktop$ cat myapp/usr/local/bin/myapp.sh 

#!/bin/bash

echo hello


八、编辑config.ini

pdsyw@pdsyw1024:~/Desktop$ cp config.ini myapp/etc/myapp/

pdsyw@pdsyw1024:~/Desktop$ cat myapp/etc/myapp/config.ini 

pdsyw=pdsyw1024


九、一键打包构建

pdsyw@pdsyw1024:~/Desktop$ dpkg-deb -b myapp myapp_1.0.0_all.deb

dpkg-deb: 正在 'myapp_1.0.0_all.deb' 中构建软件包 'myapp'。

pdsyw@pdsyw1024:~/Desktop$ ls -ltr myapp_1.0.0_all.deb 

-rw-r--r-- 1 pdsyw pdsyw 1176 7月  8 16:44 myapp_1.0.0_all.deb


十、测试安装卸载流程

pdsyw@pdsyw1024:~/Desktop$ sudo dpkg -i myapp_1.0.0_all.deb 

pdsyw@pdsyw1024:~/Desktop$ myapp

hello

pdsyw@pdsyw1024:~/Desktop$ cat /etc/myapp/config.ini 

pdsyw=pdsyw1024


pdsyw@pdsyw1024:~/Desktop$ sudo dpkg -P myapp 

pdsyw@pdsyw1024:~/Desktop$ myapp

bash: myapp:未找到命令

pdsyw@pdsyw1024:~/Desktop$ ls -ltr /etc/myapp

ls: 无法访问'/etc/myapp': 没有那个文件或目录


十一、进阶建议(可选)

功能

方法

启用 systemd 服务

在 postinst 中运行 systemctl enable

启用桌面快捷方式

安装 .desktop 文件到 /usr/share/applications

设置文件权限/所有权

使用 postinst 中的 chmod 和 chown

防止重复软链接或配置覆盖

判断文件是否存在,避免覆盖

扫描二维码推送至手机访问。

版权声明:本文由第六芝士网发布,如需转载请注明出处。

本文链接:http://www.dgx666.com/post/3979.html

标签: desktopshare
分享给朋友:

“将Shell脚本打包为DEB安装包的完整教程” 的相关文章

cad版本怎么转换成2007?三步就能完成!

新版本的CAD软件可能无法在旧版本的CAD软件中打开,因此,将CAD文件降低版本可以确保文件能够在旧版本的CAD软件中打开和编辑。为了转换版本,可能需要借助一些工具来进行CAD版本转换操作。下面小编就为您分享三种不错的软件,快来看看吧!一、彩虹办公中心彩虹办公中心是一个功能强大的办公自动化工具,它可...

如何在圆柱与圆锥面上绘制文字,关键在于SolidWorks包覆命令

今天给大家分享一个小技巧,是关于包覆命令在圆柱和圆锥面上的如何使用进行文字内容绘制,以及需要注意的事项。1. 首先我们打开 Solidworks2018软件,点击拉伸凸台,选择上视基准面,绘制一个圆,如图所示:2. 我们绘制好草图之后,选择完成,点击拉伸,如图所示:3.完成拉伸后,我们选择草图里面的...

office安装程序找不到office.zh-cn\msvcr80.dll解决方法

近期在安装office2007程序的时候,出现了一个错误,提示了“安装程序找不到office.zh-cn/msvcr80.dll,请浏览确定有效的安装源,然后单击确定”,这可能是因为“Visual Studio Authoring Component组件”的问题导致的,那么要如何解决呢?下面峰哥分享...

Vigilante恶意软件行为怪异:修改Hosts文件以阻止受害者访问盗版网站

Sophos 刚刚报道了一款名叫 Vigilante 的恶意软件,但其行为却让许多受害者感到不解。与其它专注于偷密码、搞破坏、或勒索赎金的恶意软件不同,Vigilante 会通过修改 Hosts 文件来阻止受害者访问包括海盗湾(The Pirate Bay)等盗版资源网站。与此同时,它还会下载第二款...

绝地求生吃鸡游戏缺少msvcp140.dll文件导致打不开怎么办?

如:吃鸡缺少msvcp140解决吃鸡缺少msvcp140dll吃鸡提示缺少msvcp140玩吃鸡缺少msvcp140.dll此文件本质上是运行库的一部分,丢失、缺失此类文件都是运行库的问题,而不是游戏本身的问题。所以重新下游戏肯定是没有用的。  并且,有些人建议的重装系统大法也是没用的(指原版系统,...

Microsoft Office 2010办公软件详细安装教程(附安装包)

Microsoft Office乃广大用户常用办公软件,而Microsoft office 2010版本目前仍广泛应用。其全新界面便携简练,标志则转为全橙色。此版将采用新的用户界面主题,与Microsoft office 2003、2007相比,2010版改进颇多,LOGO亦有所更新,新界面更显清爽...