基于EasyNVR摄像机无插件直播流媒体服务器之linux系统如何打包EasyNVR为deb包?

背景分析

从视频智能化相关技术研发开始计算,智能化在视频行业内已经发展了十余年,但是视频行业的智能化应用一直没有达到预期。目前视频智能化主要的表现还是集中在前端设备摄像机产品的某些智能功能,以及一些配备智能分析的NVR/DVR和后端的智能分析平台系统。智能化水平还处在初级阶段,周边的硬件及软件设备还未完善,还有很多环境和应用限制条件。

基于EasyNVR摄像机无插件直播流媒体服务器之linux系统如何打包EasyNVR为deb包?

linux下打包EasyNVR为deb包

问题描述

在实际项目中,有的用户需要提供的EasyNVR以及EasyNTC为deb包格式,那么我们就来看一下如何制作deb包。

问题解决

1.deb 包说明
deb是Linux下的安装包,基于 tar 包,因此本身会记录文件的权限(读/写/可执行)以及所有者/用户组。
deb包里面的结构:DEBIAN目录 和 软件具体安装目录(模拟安装目录)(如etc, usr, opt, tmp等)。
在DEBIAN目录中至少要有control文件,还可能有postinst(postinstallation)、postrm(postremove)、preinst(preinstallation)、prerm(preremove)、copyright (版权)、changlog (修订记录)和conffiles等。

  • control文件:描述软件包的名称(Package),版本(Version),描述(Description)等,是deb包必须具备的描述性文件,以便于软件的安装管理和索引。
  • postinst文件:包含了软件在进行正常目录文件拷贝到系统后,所需要执行的配置工作。
  • prerm文件:软件卸载前需要执行的脚本。
  • postrm文件:软件卸载后需要执行的脚本。

2.deb包制作过程
1).制作如下目录及文件
可以在任意目录下创建easynvrdeb文件夹,然后按照如下目录结构创建文件夹,以及文件

基于EasyNVR摄像机无插件直播流媒体服务器之linux系统如何打包EasyNVR为deb包?

 

2).写DEBIAN目录下3个文件的内容
a).control文件内容:
package: easynvr (软件名称,中间不能有空格)
version: 1.1 (软件版本)
prioritt: optional (软件对于系统的重要性)
architecture: amd64 (软件所支持的平台架构)
maintainer: xxx <> (打包人和联系方式)
description: mydeb (对软件的描述)

b).postinst文件内容 (该脚本赋予可执行权限:chmod +x postinst):
此脚本可以写在安装文件完成后要做的事,比如,解压等相关工作

基于EasyNVR摄像机无插件直播流媒体服务器之linux系统如何打包EasyNVR为deb包?

 

c).postrm文件内容( 软件卸载后,执行该Shell脚本,一般作为清理收尾工作,给该脚本赋予可执行权限:chmod +x postrm):

基于EasyNVR摄像机无插件直播流媒体服务器之linux系统如何打包EasyNVR为deb包?

 

3).完成以上的制作目录及文件后可以给做好的easynvrdeb目录进行打包成.deb包
dpkg -b easynvrdeb/ easynvrdeb.deb
#第一个参数为将要打包的目录名
#第二个参数为生成包的名称

基于EasyNVR摄像机无插件直播流媒体服务器之linux系统如何打包EasyNVR为deb包?

 

3. 安装deb包
dpkg -i easynvrdeb.deb
#将easynvr-linux-3.3.3-1908291459.tar.gz复制到/opt/easynvr目录下后,执行postinst
#postinst脚本在/opt/easynvr目录下生成一个字符的easynvrdeb.log文件
#解压了easynvr-linux-3.3.3-1908291459.tar.gz
#执行了easynvr-linux-3.3.3-1908291459目录下的start.sh 脚本

4.查看deb包是否安装
dpkg -s easynvr

基于EasyNVR摄像机无插件直播流媒体服务器之linux系统如何打包EasyNVR为deb包?

 

5. 卸载deb包
$ dpkg -r easynvr
#这里要卸载的包名为control文件package字段所定义的 easynvr。
#将/opt/easynvr目录easynvr-linux-3.3.3-1908291459.tar.gz删除后,执行postrm,
#postrm脚本将执行easynvr-linux-3.3.3-1908291459目录下的stop.sh 脚本
#以及删除/opt/easynvr 目录下的文件

dpkg -P easynvrdeb彻底的卸载 包括软件的配置文件等等

6. 卸载后查看deb包
$ dpkg -s easynvr
#这里要卸载的包名为control文件Package字段所定义的 easynvr

基于EasyNVR摄像机无插件直播流媒体服务器之linux系统如何打包EasyNVR为deb包?

 

7. 查看deb包文件内容
$ dpkg -c easynvrdeb.deb

基于EasyNVR摄像机无插件直播流媒体服务器之linux系统如何打包EasyNVR为deb包?

 

8.查看当前目录某个deb包的信息
dpkg --info easynvrdeb.deb

基于EasyNVR摄像机无插件直播流媒体服务器之linux系统如何打包EasyNVR为deb包?

 

9. 解压deb包中所要安装的文件
$ dpkg -X easynvrdeb.deb testdeb
#第一个参数为所要解压的deb包,这里为 easynvrdeb.deb
#第二个参数为将deb包解压到指定的目录,这里为 easynvrdeb

基于EasyNVR摄像机无插件直播流媒体服务器之linux系统如何打包EasyNVR为deb包?

 

10.解压deb包中DEBIAN目录下的文件(至少包含control文件)
$ dpkg -e easnvrdeb.deb testdeb/DEBIAN
#第一个参数为所要解压的deb包,
#第二个参数为将deb包解压到指定的目录,
#这里为 testdeb/DEBIAN

 

基于EasyNVR摄像机无插件直播流媒体服务器之linux系统如何打包EasyNVR为deb包?

基于EasyNVR摄像机无插件直播流媒体服务器之linux系统如何打包EasyNVR为deb包?