deb打包
deb包结构
deb 软件包里面的结构:它具有DEBIAN和软件具体安装目录(如etc, usr, opt, tmp等):
soft-name
|--DEBIAN
| |--control
| |--postinst
| |--postrm
| |--preinst
| |--prerm
|
|--opt
| |--files
|--etc
| |--files
...
control文件
control:这个文件主要描述软件包的名称(Package),版本(Version),Installed-Size(大小),Maintainer(打包人和联系方式)以及描述(Description)等,是deb包必须具备的描述性文件,以便于软件的安装管理和索引。
Package: redis # 包名称
Version: 6.0 # 版本号
Section: KOAL # 申明软件的类别(常见的有'utils','net','mail','text','x11'等)
Priority: optional #软件对于系统的重要程度(如'required','standard','optional','extra')
Depends: # 软件所依赖的其他软件包和库文件。如果是依赖多个软件包和库文件,彼此之间采用逗号隔开
Architecture: amd64 # 软件包结构(如'i386','amd64','m68k','sparc','alpha','powerpc')
Maintainer: KOAL # 制作此打包文件的作者(zh[邮箱])
Description: KOAL Redis # 针对此软件的描述
脚本文件
preinst 文件于软件包安装之前会被调用
postinst 文件于软件包安装之后被调用
prerm 文件于软件包卸载之前调用
postrm 文件于软件包卸载之后调用
打包、安装、卸载
- 打包
dpkg -b 要打包的目录 生成包的名称
dpkg -b redisdeb redis.deb
- 安装
dpkg -i redis.deb
- 卸载
dpkg -P redis
执行流程
reids打包
包结构
redis-deb
|--DEBIAN
| |--control
| |--postinst
| |--postrm
| |--preinst
| |--prerm
|
|--usr
| |--redis # 存放redis 编译好的源码包
| |--local
| |--bin # 存放安装好的redis命令
redis的编译安装
- 将下载redis.tar.gz 进行解压
- 进入解压好的redis目录下
- 执行 make 进行编译
- 安装 执行make PREFIX=/redis-deb/usr/redis/my install
- 将安装好的脚本文件 /redis-deb/usr/redis/my 拷贝到 /redis-deb/usr/local/bin
注意 /redis-deb/usr/redis/my 参考上面包结构
control
Package: koal-redis # 包名,卸载时使用的名称
Version: 5.0
Section: KOAL
Priority: optional
Depends:
Architecture: amd64 # 根据自己的平台进行修改
Maintainer: KOAL
Description: KOAL Redis
postinst
#!/bin/bash
echo "postinst"
cd /usr/redis
echo "*********start redis********"
redis-server redis.conf
prerm
#!/bin/bash
echo "prerm"
# 删除前结束redis进程
ps -ef | grep redis | grep -v grep | grep -v koal-redis | awk '{print $2}' | xargs kill -9
打包
-
跳转到 redis-deb目录的上级目录,执行 dpkg -b redis-deb redis.deb
-
安装 dpkg -i redis.deb
-
卸载 dpkg -P koal-redis
nginx 打包
包结构
nginx-deb
|--DEBIAN
| |--control
| |--postinst
| |--postrm
| |--preinst
| |--prerm
|
|--usr
| |--nginx # 存放nginx 编译好的源码包
| |--local
| |--bin # 存放安装好的nginx 命令
|--etc
| |--nginx # 存放nginx的配置文件
|
编译安装
- 将下载nginx.tar.gz 进行解压
- 进入解压好的nginx目录下
- mkdir /etc/nginx
- 配置 ./configure --prefix=/etc/nginx (将配置资源安装到/etc/nginx)
- 编译 make
- 安装 make install
- 将安装好的文件 /etc/nginx 拷贝到 /nginx-deb/etc/nginx 目录下
- 将 /etc/nginx/sbin/ 下的文件 拷贝到 /nginx-deb/usr/local/bin 目录下
注意 ./configure --prefix=/etc/nginx 的 /etc/nginx 要与 /nginx-deb/etc/nginx 目录相对应
control
Package: nginx
Version: 1.18.0
Section: KOAL
Priority: optional
Depends:
Architecture: amd64
Maintainer: KOAL
Description: KOAL Nginx
postinst
#!/bin/bash
echo "postinst"
echo "====start redis===="
nginx
echo "====install succsee===="
echo "config file in /etc/nginx"
prerm
#!/bin/bash
echo "prerm"
nginx -s stop
打包
-
跳转到 redis-deb目录的上级目录,执行 dpkg -b nginx-deb nginx.deb
-
安装 dpkg -i nginx.deb
-
卸载 dpkg -P nginx