打包deb的模板目录,给有需要自己打包DEB安装包的人一些思路
首相讲一下打包目录,也可以叫做一个DEB的项目名称
假设 我的 打包目录叫 DEB-Template 里面 有 opt usr 这写叫做虚拟目录 安装deb后就是 /opt
对应的脚本书写也要对用真实目录
下面是我的一个打包目录的结构图 这个脚本DEB-Template-uninstall更具自己的名字应用名字改成 APP-nama-uninstall 这样应为包多了怕有一样的
脚本有点乱 自己修改 一下 要注意的是,有善后脚本的 一定要拷贝到其他非安装目录,应为要是在安装目录里卸载后就没有了postrm脚本无法调用
lib 目录下的两个脚本的使用
#简单举个例子 MY_USER_DIR=`/opt/CN-i8520-MILLET/DEB-Template/lib/MY-USER-PWD 1` cp -r /opt/CN-i8520-MILLET/DEB-Template/lib/MY-USER-PWD ${MY_USER_DIR}
附件下载 :DEB-Template.zip 把 distrobox 打包成一个deb安装包的实列cn.i8520.distrobox.zip
distrobox
下面讲一下 control 文件的主要组成部分
#包名称 Package: deb.template #版本 Version: 0.1 Prioritt: optional Architecture: amd64 #包大小 Installed-Size: 168 #Depends: zenity #维护者信息 Maintainer: [i8520 <[email protected]>] #版本说明 Description: 版本 1.4.2.1
postinst 脚本
#!/bin/bash #用户路径相当于$HOME,但是这个有ROOT用户和普通用户的区别建议使用这个 MY_USER_DIR=`/opt/CN-i8520-MILLET/DEB-Template/lib/MY-USER-PWD 1` #用户名 MY_USER_NAME=`/opt/CN-i8520-MILLET/DEB-Template/lib/MY-USER-PWD` #桌面路径,应为有些桌面是中英文的 MY_Desktop=`/opt/CN-i8520-MILLET/DEB-Template/lib/MY-Desktop` #创建删除一个/opt/CN-i8520-MILLET/uninstall 目录用于存放卸载脚本 UninstallDir="/opt/CN-i8520-MILLET/uninstall" if [ -d "${UninstallDir}" ]; then echo "目录 ${UninstallDir} 存在." cp -r /opt/CN-i8520-MILLET/DEB-Template/DEB-Template-uninstall ${UninstallDir} echo "OK卸载脚本已拷贝" else echo -e "创建${UninstallDir}目录\n用于拷贝uninstall执行脚本,用于使用卸载命令删除不干净的的问题\nOk已创建" mkdir -p ${UninstallDir} sleep 1 #拷贝卸载脚 cp -r /opt/CN-i8520-MILLET/DEB-Template/DEB-Template-uninstall ${UninstallDir} echo "OK卸载脚本已拷贝" fii #--------------------------------------------- #添加环境变量 i8520="export distrobox=/usr/local" i8520X=`cat /etc/profile|grep 'distrobox'|sed -n 1p` if [[ ! X${i8520} = X${i8520X} ]];then #执行的辅助安装脚本 /opt/CN-i8520-MILLET/distrobox-1.4.2.1/install echo 'export distrobox=/usr/local' | sudo tee -a /etc/profile echo 'export PATH=$distrobox/bin:$PATH' | sudo tee -a /etc/profile source /etc/profile else echo "OK" fi #--------------------------------------------- exit 0
postrm 脚本
#!/bin/bash #MY-USER-PWD MY-Desktop 这两个文件卸载后就不存在了,所以需要拷贝到其他地方 #用户路径相当于$HOME,但是这个有ROOT用户和普通用户的区别建议使用这个 MY_USER_DIR=`/opt/CN-i8520-MILLET/DEB-Template/lib/MY-USER-PWD 1` #用户名 MY_USER_NAME=`/opt/CN-i8520-MILLET/DEB-Template/lib/MY-USER-PWD` #桌面路径,应为有些桌面是中英文的 MY_Desktop=`/opt/CN-i8520-MILLET/DEB-Template/lib/MY-Desktop` UninstallDir="/opt/CN-i8520-MILLET/uninstall" #--------------------------------------------------- #删除环境变了 i8520="export distrobox=/usr/local" #匹配包行distrobox的行并删除 i8520X=`cat /etc/profile|grep 'distrobox'|sed -n 1p` if [[ ! X${i8520} = X${i8520X} ]];then echo "OK 环境变量已经删除" else sed -i "/distrobox/d" /etc/profile source /etc/profile fi #------------------------------------------------------- FileUninsta="${UninstallDir}/DEB-Template-uninstall" # 使用if语句和[ -f ]测试来检查文件是否存在 if [ -f "$FileUninsta" ]; then #执行善后删除脚本 bash ${FileUninsta} rm -rf ${FileUninsta} else echo "ok 善后工作已经结束" fi exit 0
打包命令 dpkg-deb -b 打包目录路径 保存的路径/包名称.deb
比如
dpkg-deb -b $HOME/桌面/DEB-Template $HOME/桌面/deb.template.deb
安装 sudo dpkg -i $HOME/桌面/deb.template.deb
卸载 sudo apt-get autoremove --purge deb.template -y
点赞
好帖。
这两个文件其实不是一定要有的,根据要打包的应用按需编写。
打包的话可以简单点直接cd 到包的根目录执行
dpkg -b . ..
这样它就会在上级目录自动生成deb安装包,并自动生成规范的包名。
好贴,留步。
Popular Ranking
Popular Events
打包deb的模板目录,给有需要自己打包DEB安装包的人一些思路
首相讲一下打包目录,也可以叫做一个DEB的项目名称
假设 我的 打包目录叫 DEB-Template 里面 有 opt usr 这写叫做虚拟目录 安装deb后就是 /opt
对应的脚本书写也要对用真实目录
下面是我的一个打包目录的结构图 这个脚本DEB-Template-uninstall更具自己的名字应用名字改成 APP-nama-uninstall 这样应为包多了怕有一样的
脚本有点乱 自己修改 一下 要注意的是,有善后脚本的 一定要拷贝到其他非安装目录,应为要是在安装目录里卸载后就没有了postrm脚本无法调用
lib 目录下的两个脚本的使用
附件下载 :DEB-Template.zip 把
distrobox
打包成一个deb安装包的实列cn.i8520.distrobox.zip下面讲一下 control 文件的主要组成部分
postinst 脚本
postrm 脚本
打包命令 dpkg-deb -b 打包目录路径 保存的路径/包名称.deb
比如
安装 sudo dpkg -i $HOME/桌面/deb.template.deb
卸载 sudo apt-get autoremove --purge deb.template -y