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
control注意 /redis-deb/usr/redis/my 参考上面包结构
Package: koal-redis # 包名,卸载时使用的名称 Version: 5.0 Section: KOAL Priority: optional Depends: Architecture: amd64 # 根据自己的平台进行修改 Maintainer: KOAL Description: KOAL Redispostinst
#!/bin/bash echo "postinst" cd /usr/redis echo "*********start redis********" redis-server redis.confprerm
#!/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-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 目录下
control注意 ./configure --prefix=/etc/nginx 的 /etc/nginx 要与 /nginx-deb/etc/nginx 目录相对应
Package: nginx Version: 1.18.0 Section: KOAL Priority: optional Depends: Architecture: amd64 Maintainer: KOAL Description: KOAL Nginxpostinst
#!/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



