来自: http://lnmp.ailinux.net/dpkg-deb
1 dpkg
(1) 语法
dpkg (选项) (参数)参数: 指定要操作的.deb软件包。
(2) 选项
-i:安装软件包;-r:删除软件包;-P:删除软件包的同时删除其配置文件;-L:显示于软件包关联的文件;-l:显示已安装软件包列表;--unpack:解开软件包;-c:显示软件包内文件列表;--confiugre:配置软件包。
(3) 示例
dpkg -i package.deb # 安装包dpkg -r package # 删除包dpkg -P package # 删除包(包括配置文件)dpkg -L package # 列出与该包关联的文件dpkg -l package # 显示该包的版本dpkg --unpack package.deb # 解开deb包的内容dpkg -S keyword # 搜索所属的包内容dpkg -l # 列出当前已安装的包dpkg -c package.deb # 列出deb包的内容dpkg --configure package # 配置包
2 dpkg-deb
(1) 语法
dpkg-deb命令是Debian Linux下的软件包管理工具,它可以对软件包执行打包和解包操作以及提供软件包信息。
(2) 选项
-c:显示软件包中的文件列表;-e:将主控信息解压;-f:把字段内容打印到标准输出;-x:将软件包中的文件释放到指定目录下;-X:将软件包中的文件释放到指定目录下,并显示释放文件的详细过程;-W:显示软件包的信息;-l:显示软件包的详细信息;-R:提取控制信息和存档的清单文件;-b:创建debian软件包。(--build)
(3) 示例
dpkg-deb -b WS1.2.3-1 # 把文件夹打包为deb软件包, 包名为WS1.2.3-1
0 打包deb专用py脚本
import shutilimport oscontrolText = """Package: wsVersion: 1.262-1Section: basePriority: optionalArchitecture: amd64Depends: python3 (>= 3.8.0)Maintainer: Wang Shuang <ws156858@163.com>Description: it's a demo"""serviceText = """[Unit]Description=WS-Service[Service]WorkingDirectory=/usr/local/WSUser=rootType=simpleExecStartPre=/bin/sleep 20ExecStart=python3 /home/hello.pyRestart=always[Install]WantedBy=multi-user.target"""postinst = """#!/bin/bashecho "postinst""""version = '1.2.3'targetName = f"WS{version}-1"shutil.rmtree(targetName, True)try:os.remove(targetName + ".deb")except:passos.makedirs(targetName, exist_ok=True)os.makedirs(os.path.join(targetName, 'usr/local/WS/'), exist_ok=True)os.makedirs(os.path.join(targetName, 'etc/WS/'), exist_ok=True)os.makedirs(os.path.join(targetName, 'DEBIAN'), exist_ok=True)os.makedirs(os.path.join(targetName, 'lib/systemd/system'), exist_ok=True)with open(f"{targetName}/DEBIAN/control", 'w') as f:f.write(controlText)with open(f"{targetName}/DEBIAN/postinst", 'w') as f:f.write(postinst)os.chmod(f"{targetName}/DEBIAN/postinst", 0o755)with open(f"{targetName}/lib/systemd/system/ws.service", 'w') as f:f.write(serviceText)os.system(f"dpkg-deb --build {targetName}")
