# 系统信息
hcy@ubuntu:~$ uname -a
Linux 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_64
CPU 运行模式:32-bit, 64-bit
字节序:Little Endian
...
复制
# 查看示例目录
hcy@ubuntu:~/Desktop$ tree deb
deb
├── 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)control
Package: dwncs
Version: 1.0.1
Priority: optional
Description: 本地组件服务应用
Architecture: amd64
Maintainer: hcy
Homepage:
# (2)preinst、postinst、prerm、postrm
#!/bin/sh
exit 0
# desktop
[Desktop Entry]
Comment=本地组件服务应用
Exec="/usr/bin/dwncs/dwncs.sh"
Icon=
Name=dwncs
Terminal=false
Type=Application
X-Deepin-Vendor=user-custom
# dwncs.sh(守护进程脚本)
#! bin/sh
export LD_LIBRARY_PATH=/usr/bin/dwncs/lib:$LD_LIBRARY_PATH
cd usr/bin/dwncs
#进程名字可修改
PRO_NAME=./dwncs
UPGRADE=./upgrade
${UPGRADE} -d
while true ; do
#用ps获取$PRO_NAME进程数量
NUM=`ps aux | grep -w ${PRO_NAME} | grep -v grep |wc -l`
#echo $NUM
#少于1,重启进程
if [ "${NUM}" -lt "1" ];then
echo "${PRO_NAME} was killed"
${PRO_NAME} -d
#大于1,杀掉所有进程,重启
elif [ "${NUM}" -gt "1" ];then
echo "more than 1 ${PRO_NAME},killall ${PRO_NAME}"
killall -9 $PRO_NAME
${PRO_NAME} -d
fi
#kill僵尸进程
NUM_STAT=`ps aux | grep -w ${PRO_NAME} | grep T | grep -v grep | wc -l`
if [ "${NUM_STAT}" -gt "0" ];then
killall -9 ${PRO_NAME}
${PRO_NAME} -d
fi
sleep 3s
done
exit 0
复制
#! bin/sh
NAME=dwncs
DESC=本地组件服务应用
VERSION=0.0.1
ARCH=amd64
AUTHOR=hcy
URL=http://10.1.88.166:8080/dwncs/x86_64/
DWNCS=dwncs_$VERSION\_$ARCH
DESKTOP=$DWNCS/usr/local/share/application
DEBIAN=$DWNCS/DEBIAN
APP=$DWNCS/usr/bin
EXE=/usr/bin/dwncs/dwncs.sh
LIB=/usr/bin/dwncs/lib
CONF=$APP/dwncs/dwncs.conf
# 创建desktop
mkdir -p $DESKTOP
touch $DESKTOP/dwncs
chmod 777 $DESKTOP/dwncs
# desktop
echo "[Desktop Entry]" > $DESKTOP/dwncs
echo "Comment=$DESC" >> $DESKTOP/dwncs
echo "Exec=\"$EXE\"" >> $DESKTOP/dwncs
echo "Icon=" >> $DESKTOP/dwncs
echo "Name=dwncs" >> $DESKTOP/dwncs
echo "Terminal=false" >> $DESKTOP/dwncs
echo "Type=Application" >> $DESKTOP/dwncs
echo "X-Deepin-Vendor=user-custom" >> $DESKTOP/dwncs
# 创建执行文件目录
mkdir -p $APP
cp -R dwncs/ $APP
touch $CONF
chmod 755 $CONF
echo "{" > $CONF
echo -e "\t\"srcUrl\": \"$URL\"" >> $CONF
echo "}" >> $CONF
# control
echo "Package: $NAME" > $DEBIAN/control
echo "Version: $VERSION" >> $DEBIAN/control
echo "Priority: optional" >> $DEBIAN/control
echo "Description: $DESC" >> $DEBIAN/control
echo "Architecture: $ARCH" >> $DEBIAN/control
echo "Maintainer: $AUTHOR" >> $DEBIAN/control
# dpkg
dpkg -b $DWNCS $DWNCS.deb
复制
# (1)执行pkg.sh
hcy@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)执行dwncs
hcy@ubuntu:/usr/bin/dwncs$ sudo ./dwncs.sh
current 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.json
response code: 200
response codemsg: OK
local_upgrade_file_md5: b41d78418a5280f28a127edd7fd540e6
server_upgrade_file_md5: 705d5f78ee56f3e6983170002c5b06c6
复制
# (0)注:
# 调整pkg.sh脚本,在postinst脚本中添加开机自启设置
# 通过systemctl设置开机自启
# (1)dwncs.service
[Unit]
Description=Example systemd service.
[Service]
Type=simple
ExecStart=/usr/bin/dwncs/dwncs.sh
[Install]
WantedBy=multi-user.target
# (2)pkg.sh调整
# postinst
echo "#!/bin/sh" > $DEBIAN/postinst
echo "sudo cp usr/bin/dwncs/dwncs.service etc/systemd/system/dwncs.service" >> $DEBIAN/postinst
echo "sudo chmod 644 etc/systemd/system/dwncs.service" >> $DEBIAN/postinst
echo "sudo systemctl start dwncs" >> $DEBIAN/postinst
echo "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/sh
NAME=dwncs
DESC=本地组件服务应用
VERSION=0.0.1
ARCH=amd64
AUTHOR=hcy
URL=http://10.1.88.166:8080/dwncs/x86_64/
DWNCS=dwncs_$VERSION\_$ARCH
DESKTOP=$DWNCS/usr/local/share/application
DEBIAN=$DWNCS/DEBIAN
APP=$DWNCS/usr/bin
EXE=/usr/bin/dwncs/dwncs.sh
LIB=/usr/bin/dwncs/lib
CONF=$APP/dwncs/dwncs.conf
# 创建desktop
mkdir -p $DESKTOP
touch $DESKTOP/dwncs
chmod 777 $DESKTOP/dwncs
# desktop
echo "[Desktop Entry]" > $DESKTOP/dwncs
echo "Comment=$DESC" >> $DESKTOP/dwncs
echo "Exec=\"$EXE\"" >> $DESKTOP/dwncs
echo "Icon=" >> $DESKTOP/dwncs
echo "Name=dwncs" >> $DESKTOP/dwncs
echo "Terminal=false" >> $DESKTOP/dwncs
echo "Type=Application" >> $DESKTOP/dwncs
echo "X-Deepin-Vendor=user-custom" >> $DESKTOP/dwncs
# 创建执行文件目录
mkdir -p $APP
cp -R dwncs/ $APP
touch $CONF
chmod 755 $CONF
echo "{" > $CONF
echo -e "\t\"srcUrl\": \"$URL\"" >> $CONF
echo "}" >> $CONF
# DEBIAN
mkdir -p $DWNCS/DEBIAN
touch $DEBIAN/control
touch $DEBIAN/preinst
touch $DEBIAN/postinst
touch $DEBIAN/prerm
touch $DEBIAN/postrm
chmod 755 $DEBIAN/control
chmod 755 $DEBIAN/preinst
chmod 755 $DEBIAN/postinst
chmod 755 $DEBIAN/prerm
chmod 755 $DEBIAN/postrm
# control
echo "Package: $NAME" > $DEBIAN/control
echo "Version: $VERSION" >> $DEBIAN/control
echo "Priority: optional" >> $DEBIAN/control
echo "Description: $DESC" >> $DEBIAN/control
echo "Architecture: $ARCH" >> $DEBIAN/control
echo "Maintainer: $AUTHOR" >> $DEBIAN/control
# preinst
echo "#!/bin/sh" > $DEBIAN/preinst
echo "sudo killall -9 $NAME" >> $DEBIAN/preinst
echo "exit 0" >> $DEBIAN/preinst
# postinst
echo "#!/bin/sh" > $DEBIAN/postinst
echo "sudo cp /usr/bin/dwncs/dwncs.service /etc/systemd/system/dwncs.service" >> $DEBIAN/postinst
echo "sudo chmod 644 /etc/systemd/system/dwncs.service" >> $DEBIAN/postinst
echo "sudo systemctl start dwncs" >> $DEBIAN/postinst
echo "sudo systemctl enable dwncs" >> $DEBIAN/postinst
echo "exit 0" >> $DEBIAN/postinst
# prerm
echo "#!/bin/sh" > $DEBIAN/prerm
echo "sudo systemctl stop dwncs" >> $DEBIAN/prerm
echo "sudo systemctl disable dwncs" >> $DEBIAN/prerm
echo "sudo killall -9 $NAME" >> $DEBIAN/prerm
echo "exit 0" >> $DEBIAN/prerm
# postrm
echo "#!/bin/sh" > $DEBIAN/postrm
echo "sudo rm -rf /usr/bin/dwncs" >> $DEBIAN/postrm
echo "sudo rm -rf /etc/systemd/system/dwncs.service" >> $DEBIAN/postrm
echo "exit 0" >> $DEBIAN/postrm
# dpkg
dpkg -b $DWNCS $DWNCS.deb
复制
文章转载自hCodeisDawn,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。
评论
热门文章
【国产化】Loongson mips64el Electron应用适配
2021-09-16 5568浏览
【Linux】x86_64 ubuntu16虚拟机交叉编译Mips64el平台软件
2021-09-16 3670浏览
【Linux】x86_64 ubuntu16虚拟机交叉编译Aarch64平台软件
2021-09-16 3244浏览
【Docker】搭建Gitlab & Gitlab Runner
2021-09-16 1568浏览
【DevOps】Gitlab CI/CD + Docker + React + Springboot 持续集成部署
2021-09-16 1405浏览