# 系统信息hcy@ubuntu:~$ uname -aLinux ubuntu 5.4.0-74-generic #83~18.04.1-Ubuntu SMP Tue May 11 16:01:00 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux# CPU信息hcy@ubuntu:~$ lscpu架构:x86_64CPU 运行模式:32-bit, 64-bit字节序:Little Endian...
# 查看示例目录hcy@ubuntu:~/Desktop$ tree debdeb├── DEBIAN│ ├── control│ ├── postinst│ └── postrm└── usr├── bin│ └── dwncs└── share├── applications│ └── dwncs└── icons# 目录配置DEBIAN:control:DEB描述性文件postinst:软件安装后执行脚本,常用于配置软件执行环境postrm:软件卸载后执行脚本,常用于清理收尾工作preinst:软件安装前执行脚本,常用于更新前终止进程prerm:软件卸载前执行脚本,常用于停止与软件包相关联的daemon服务usr:软件安装目录bin:软件包目录dwncs:可执行文件目录share:applications:desktop文件目录icons:图标文件目录
# (1)controlPackage: dwncsVersion: 1.0.1Priority: optionalDescription: 本地组件服务应用Architecture: amd64Maintainer: hcyHomepage:# (2)preinst、postinst、prerm、postrm#!/bin/shexit 0# desktop[Desktop Entry]Comment=本地组件服务应用Exec="/usr/bin/dwncs/dwncs.sh"Icon=Name=dwncsTerminal=falseType=ApplicationX-Deepin-Vendor=user-custom# dwncs.sh(守护进程脚本)#! bin/shexport LD_LIBRARY_PATH=/usr/bin/dwncs/lib:$LD_LIBRARY_PATHcd usr/bin/dwncs#进程名字可修改PRO_NAME=./dwncsUPGRADE=./upgrade${UPGRADE} -dwhile true ; do#用ps获取$PRO_NAME进程数量NUM=`ps aux | grep -w ${PRO_NAME} | grep -v grep |wc -l`#echo $NUM#少于1,重启进程if [ "${NUM}" -lt "1" ];thenecho "${PRO_NAME} was killed"${PRO_NAME} -d#大于1,杀掉所有进程,重启elif [ "${NUM}" -gt "1" ];thenecho "more than 1 ${PRO_NAME},killall ${PRO_NAME}"killall -9 $PRO_NAME${PRO_NAME} -dfi#kill僵尸进程NUM_STAT=`ps aux | grep -w ${PRO_NAME} | grep T | grep -v grep | wc -l`if [ "${NUM_STAT}" -gt "0" ];thenkillall -9 ${PRO_NAME}${PRO_NAME} -dfisleep 3sdoneexit 0
#! bin/shNAME=dwncsDESC=本地组件服务应用VERSION=0.0.1ARCH=amd64AUTHOR=hcyURL=http://10.1.88.166:8080/dwncs/x86_64/DWNCS=dwncs_$VERSION\_$ARCHDESKTOP=$DWNCS/usr/local/share/applicationDEBIAN=$DWNCS/DEBIANAPP=$DWNCS/usr/binEXE=/usr/bin/dwncs/dwncs.shLIB=/usr/bin/dwncs/libCONF=$APP/dwncs/dwncs.conf# 创建desktopmkdir -p $DESKTOPtouch $DESKTOP/dwncschmod 777 $DESKTOP/dwncs# desktopecho "[Desktop Entry]" > $DESKTOP/dwncsecho "Comment=$DESC" >> $DESKTOP/dwncsecho "Exec=\"$EXE\"" >> $DESKTOP/dwncsecho "Icon=" >> $DESKTOP/dwncsecho "Name=dwncs" >> $DESKTOP/dwncsecho "Terminal=false" >> $DESKTOP/dwncsecho "Type=Application" >> $DESKTOP/dwncsecho "X-Deepin-Vendor=user-custom" >> $DESKTOP/dwncs# 创建执行文件目录mkdir -p $APPcp -R dwncs/ $APPtouch $CONFchmod 755 $CONFecho "{" > $CONFecho -e "\t\"srcUrl\": \"$URL\"" >> $CONFecho "}" >> $CONF# controlecho "Package: $NAME" > $DEBIAN/controlecho "Version: $VERSION" >> $DEBIAN/controlecho "Priority: optional" >> $DEBIAN/controlecho "Description: $DESC" >> $DEBIAN/controlecho "Architecture: $ARCH" >> $DEBIAN/controlecho "Maintainer: $AUTHOR" >> $DEBIAN/control# dpkgdpkg -b $DWNCS $DWNCS.deb
# (1)执行pkg.shhcy@ubuntu:~/Desktop/pkg$ '/home/hcy/Desktop/pkg/pkg.sh'dpkg-deb: 正在 'dwncs_0.0.1_amd64.deb' 中构建软件包 'dwncs'。# (2)安装hcy@ubuntu:~/Desktop/pkg$ sudo dpkg -i dwncs-0.0.1_amd64.deb正在选中未选择的软件包 dwncs。(正在读取数据库 ... 系统当前共安装有 183557 个文件和目录。)正准备解包 dwncs-0.0.1_amd64.deb ...正在解包 dwncs (0.0.1) ...正在设置 dwncs (0.0.1) ...# (3)执行dwncshcy@ubuntu:/usr/bin/dwncs$ sudo ./dwncs.shcurrent absolute path : usr/bin/dwncs/dwncs upgrade url: http://10.1.88.166:8080/dwncs/x86_64/dwncs download path: usr/bin/dwncs/download/filepath: usr/bin/dwncs/download/upgrade.jsonresponse code: 200response codemsg: OKlocal_upgrade_file_md5: b41d78418a5280f28a127edd7fd540e6server_upgrade_file_md5: 705d5f78ee56f3e6983170002c5b06c6

# (0)注:# 调整pkg.sh脚本,在postinst脚本中添加开机自启设置# 通过systemctl设置开机自启# (1)dwncs.service[Unit]Description=Example systemd service.[Service]Type=simpleExecStart=/usr/bin/dwncs/dwncs.sh[Install]WantedBy=multi-user.target# (2)pkg.sh调整# postinstecho "#!/bin/sh" > $DEBIAN/postinstecho "sudo cp usr/bin/dwncs/dwncs.service etc/systemd/system/dwncs.service" >> $DEBIAN/postinstecho "sudo chmod 644 etc/systemd/system/dwncs.service" >> $DEBIAN/postinstecho "sudo systemctl start dwncs" >> $DEBIAN/postinstecho "sudo systemctl enable dwncs" >> $DEBIAN/postinst# (3)打包安装hcy@ubuntu:~/Desktop/pkg$ '/home/hcy/Desktop/pkg/pkg.sh'dpkg-deb: 正在 'dwncs-0.0.1_amd64.deb' 中构建软件包 'dwncs'。hcy@ubuntu:~/Desktop/pkg$ sudo dpkg -i dwncs_0.0.1_amd64.deb正在选中未选择的软件包 dwncs。(正在读取数据库 ... 系统当前共安装有 183557 个文件和目录。)正准备解包 dwncs_0.0.1_amd64.deb ...dwncs: 未找到进程正在解包 dwncs (0.0.1) ...正在设置 dwncs (0.0.1) ...Created symlink etc/systemd/system/multi-user.target.wants/dwncs.service → etc/systemd/system/dwncs.service.

注:dwncs安装自启开机自启,访问效果如下

#! /bin/shNAME=dwncsDESC=本地组件服务应用VERSION=0.0.1ARCH=amd64AUTHOR=hcyURL=http://10.1.88.166:8080/dwncs/x86_64/DWNCS=dwncs_$VERSION\_$ARCHDESKTOP=$DWNCS/usr/local/share/applicationDEBIAN=$DWNCS/DEBIANAPP=$DWNCS/usr/binEXE=/usr/bin/dwncs/dwncs.shLIB=/usr/bin/dwncs/libCONF=$APP/dwncs/dwncs.conf# 创建desktopmkdir -p $DESKTOPtouch $DESKTOP/dwncschmod 777 $DESKTOP/dwncs# desktopecho "[Desktop Entry]" > $DESKTOP/dwncsecho "Comment=$DESC" >> $DESKTOP/dwncsecho "Exec=\"$EXE\"" >> $DESKTOP/dwncsecho "Icon=" >> $DESKTOP/dwncsecho "Name=dwncs" >> $DESKTOP/dwncsecho "Terminal=false" >> $DESKTOP/dwncsecho "Type=Application" >> $DESKTOP/dwncsecho "X-Deepin-Vendor=user-custom" >> $DESKTOP/dwncs# 创建执行文件目录mkdir -p $APPcp -R dwncs/ $APPtouch $CONFchmod 755 $CONFecho "{" > $CONFecho -e "\t\"srcUrl\": \"$URL\"" >> $CONFecho "}" >> $CONF# DEBIANmkdir -p $DWNCS/DEBIANtouch $DEBIAN/controltouch $DEBIAN/preinsttouch $DEBIAN/postinsttouch $DEBIAN/prermtouch $DEBIAN/postrmchmod 755 $DEBIAN/controlchmod 755 $DEBIAN/preinstchmod 755 $DEBIAN/postinstchmod 755 $DEBIAN/prermchmod 755 $DEBIAN/postrm# controlecho "Package: $NAME" > $DEBIAN/controlecho "Version: $VERSION" >> $DEBIAN/controlecho "Priority: optional" >> $DEBIAN/controlecho "Description: $DESC" >> $DEBIAN/controlecho "Architecture: $ARCH" >> $DEBIAN/controlecho "Maintainer: $AUTHOR" >> $DEBIAN/control# preinstecho "#!/bin/sh" > $DEBIAN/preinstecho "sudo killall -9 $NAME" >> $DEBIAN/preinstecho "exit 0" >> $DEBIAN/preinst# postinstecho "#!/bin/sh" > $DEBIAN/postinstecho "sudo cp /usr/bin/dwncs/dwncs.service /etc/systemd/system/dwncs.service" >> $DEBIAN/postinstecho "sudo chmod 644 /etc/systemd/system/dwncs.service" >> $DEBIAN/postinstecho "sudo systemctl start dwncs" >> $DEBIAN/postinstecho "sudo systemctl enable dwncs" >> $DEBIAN/postinstecho "exit 0" >> $DEBIAN/postinst# prermecho "#!/bin/sh" > $DEBIAN/prermecho "sudo systemctl stop dwncs" >> $DEBIAN/prermecho "sudo systemctl disable dwncs" >> $DEBIAN/prermecho "sudo killall -9 $NAME" >> $DEBIAN/prermecho "exit 0" >> $DEBIAN/prerm# postrmecho "#!/bin/sh" > $DEBIAN/postrmecho "sudo rm -rf /usr/bin/dwncs" >> $DEBIAN/postrmecho "sudo rm -rf /etc/systemd/system/dwncs.service" >> $DEBIAN/postrmecho "exit 0" >> $DEBIAN/postrm# dpkgdpkg -b $DWNCS $DWNCS.deb
文章转载自hCodeisDawn,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




