参考:
文章目录
导出可执行程序依赖库
在.out文件所在目录下创建export.py,内容如下:
import shutil
import os
outpath = "../export_lib" # -- 设置依赖库lib输出路径
os.makedirs(outpath) if not os.path.exists(outpath) else None
command = "ldd ./xxx" # -- xxx更换为要打包的可执行文件名
out_string = os.popen(command)
data = out_string.readlines()
data = [[data_.split()[0], data_.split()[2]] for data_ in data if len(data_.split()) == 4]
print(data)
for data_ in data:
shutil.copy(data_[1], os.path.join(outpath, data_[0]))
安装打包工具
sudo apt-get install dpkg-dev
创建工作目录
mkdir mypackage
cd mypackage
设定安装的路径
root@ubuntu:/home/hebbe/work# mkdir -p usr/src
root@ubuntu:/home/hebbe/work# mkdir -p usr/lib
root@ubuntu:/home/hebbe/work# mkdir DEBIAN
usr/lib文件安装后会在根目录下的lib文件里,其余和DEBIAN同层级文件在根目录文件下
DEBIAN
主要就用了以下三个,其余还未用过。
编写控制文件control
在package目录下必须创建一个DEBIAN文件夹里面使用vim创建一个control文件,里面包含软件安装包信息,卸载软件包名称为里面的Package,注意冒号和空格必须要添加。
查看当前系统Architecture:x86_64
指令:arch or uname -a
Package: xxxPlus
Version: 1.0.1
Section: utils
Priority: optional
Architecture: amd64
Depends:
Maintainer: xxx@163.com
Description: xxxPlus package
postinst解包数据后运行的脚本
我只配置了环境变量
postrm软件卸载后执行的脚本
删除安装后的文件夹;
删除配置文件;
使用 dpkg 命令构建 deb包
root@ubuntu:/home/hebbe/work# sudo chmod 755 * -R
root@ubuntu:/home/hebbe/work# dpkg -b . /home/hebbe/xxxPlus_1.0.1_amd64.deb
dpkg -b VK2GBOXPackage VK2GBOXPackage_1.0.2_arm64.deb
注意权限是755 ,否则会报错,例如
dpkg-deb: error: control directory has bad permissions 777 (must be >=0755 and <=0775)
至此,便已打包完成。
安装 deb包
dpkg -i xxxPlus_1.0.1_i386.deb
查看版本信息
dpkg-deb --info 安装包名称.deb
卸载deb包
注意是和control文件里的package里面一致的名称,否则会提示找不到安装包
sudo apt-get remove xxxPlus
or
dpkg -r xxxPlus
查询安装包信息
全部:
dpkg --list
过滤:
dpkg --list | grep 安装包名称