来自: 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 shutil
import os
controlText = """Package: ws
Version: 1.262-1
Section: base
Priority: optional
Architecture: amd64
Depends: python3 (>= 3.8.0)
Maintainer: Wang Shuang <ws156858@163.com>
Description: it's a demo
"""
serviceText = """[Unit]
Description=WS-Service
[Service]
WorkingDirectory=/usr/local/WS
User=root
Type=simple
ExecStartPre=/bin/sleep 20
ExecStart=python3 /home/hello.py
Restart=always
[Install]
WantedBy=multi-user.target
"""
postinst = """#!/bin/bash
echo "postinst"
"""
version = '1.2.3'
targetName = f"WS{version}-1"
shutil.rmtree(targetName, True)
try:
os.remove(targetName + ".deb")
except:
pass
os.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}")