linux系统创建deb安装包

创建文件夹:

文件夹格式:
mydeb
 ├── DEBIAN
 │ ├── control #记录软件包各种信息 ,比较重要
 │ ├── postinst #安装后运行脚本(文件拷贝到系统后运行的脚本)
 │ ├── postrm #卸载包后运行脚本
 │ ├── preinst #安装前运行脚本(拷贝文件到系统前运行的脚本)
 │ └── prerm #卸载前运行的脚本
 ├── etc
 ├── lib
 │ └── systemd
 │ └── system
 │ └── xxx.service
 └── usr
 └── local
 ├── bin
 ├── include
 └── lib
 …

详细描述:

DEBIAN

目录下存放的是程序的信息和处理脚本。

其中control 内容举例:

Package: kellan-test
Version: 1.0
Architecture: arm64
Maintainer: Kellan Fan
Installed-Size: 128
Recommends:
Suggests:
Section: devel
Priority: optional
Multi-Arch: foreign
Description: just for test
  1. Package 包名
  2. Version 版本
  3. Architecture 目标机架构(i386, arm等)
  4. Maintainer 维护者
  5. Depends 依赖软件包
  6. Description 描述

需要注意目标架构Architecture ,deb在不同架构的平台上运行会不一样,要求此处的描述要跟目标主机一致(区分大小写),不然会安装失败。

其他的内容都是安装前后和卸载前后运行的脚本命令。

etc

里面放的是程序的配置文件,如 xxx.ini 之类的。

lib

里面存放的是服务service,包含让可执行文件开机后自启动。具体的举例如下:

[Unit]
Description= Auto basic service 
Requires=basicIO.service
After=network.target

[Service]
Type=forking
PIDFile=/run/myservice.pid
ExecStart=/usr/local/bin/myservice.out -c /etc/myservice/myservice.ini -B
ExecReload=/bin/kill -SIGHUP $MAINPID
ExecStop=/bin/kill -SIGINT $MAINPID

[Install]
WantedBy=multi-user.target

阐述:
Description :服务描述
Requires:本服务依赖于其他的服务
After:在这些服务启动后运行

Type:forking模式下,父进程退出子进程正常运行
PIDFile:记录子进程PID于此
ExecStart:启动服务时运行的脚本或者命令
ExecReload:重启服务时运行的脚本或者命令,可参考例子
ExecStop:停止服务时运行的脚本或者命令,可参考例子

WantedBy:…

usr

这是存放我们最重要的应用程序的文件夹,大致格式如开头所写。

include装头文件、lib装库、bin装可执行文件。

一般应用程序会安装在/usr/loacl/目录下,如有特殊要求自行设定。

其他

1、打包命令: dpkg -b [文件夹路径] [生成deb名] (文件夹路径到DEBIAN上级目录即可)

2、除了DEBIAN安装后不会存在,其他的文件夹及其里面内容会按mydeb为根目录,依次安装到路径下。没有则创建。

3、安装时出现报错,报错会不全面,尝试修改mydeb里面内容,重新打包,再安装,会有不一样的报错。

4、官方的debian制作手册(比较长)