背景分析
從視頻智能化相關技術研發開始計算,智能化在視頻行業內已經發展了十余年,但是視頻行業的智能化應用一直沒有達到預期。目前視頻智能化主要的表現還是集中在前端設備攝像機產品的某些智能功能,以及一些配備智能分析的NVR/DVR和后端的智能分析平台系統。智能化水平還處在初級階段,周邊的硬件及軟件設備還未完善,還有很多環境和應用限制條件。
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文件夾,然后按照如下目錄結構創建文件夾,以及文件
2).寫DEBIAN目錄下3個文件的內容
a).control文件內容:
package: easynvr (軟件名稱,中間不能有空格)
version: 1.1 (軟件版本)
prioritt: optional (軟件對於系統的重要性)
architecture: amd64 (軟件所支持的平台架構)
maintainer: xxx <> (打包人和聯系方式)
description: mydeb (對軟件的描述)
b).postinst文件內容 (該腳本賦予可執行權限:chmod +x postinst):
此腳本可以寫在安裝文件完成后要做的事,比如,解壓等相關工作
c).postrm文件內容( 軟件卸載后,執行該Shell腳本,一般作為清理收尾工作,給該腳本賦予可執行權限:chmod +x postrm):
3).完成以上的制作目錄及文件后可以給做好的easynvrdeb目錄進行打包成.deb包
dpkg -b easynvrdeb/ easynvrdeb.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
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
7. 查看deb包文件內容
$ dpkg -c easynvrdeb.deb
8.查看當前目錄某個deb包的信息
dpkg --info easynvrdeb.deb
9. 解壓deb包中所要安裝的文件
$ dpkg -X easynvrdeb.deb testdeb
#第一個參數為所要解壓的deb包,這里為 easynvrdeb.deb
#第二個參數為將deb包解壓到指定的目錄,這里為 easynvrdeb
10.解壓deb包中DEBIAN目錄下的文件(至少包含control文件)
$ dpkg -e easnvrdeb.deb testdeb/DEBIAN
#第一個參數為所要解壓的deb包,
#第二個參數為將deb包解壓到指定的目錄,
#這里為 testdeb/DEBIAN