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
-
Package 包名
-
Version 版本
-
Architecture 目标机架构(i386, arm等)
-
Maintainer 维护者
-
Depends 依赖软件包
-
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里面内容,重新打包,再安装,会有不一样的报错。