electron在linux打包deb包探究
1. linux生成deb包
- 了解deb包包目录结构

- 了解目录后开始动手
(1). 需要创建目录(文件等)
- pack
- DEBIAN
- control
- postinst.sh
- postrm.sh
- preinst.sh
- prerm.sh
- opt
- apps
- electron-vue
- bin
- user
- share
- applications
- electronVue.desktop
- icons
- electron-vue
- icon.ico
- icon.png
(2). 创建DEBIAN文件夹
- 创建control
//软件包名
Package: electronVue
//版本号
Version: 0.0.1
//软件的类别(可选参数:utils、net、mail、text、devel,等)
Section: utils
//软件对于系统的重要程度(影响软件是否能直接卸载)
//(可选参数:required、standard、 optional、extra,等)
Priority: optional
//系统架构(32位:is86,64位软件:amd64,同时都可以:all)
//不知道可以通过,cat /proc/version
Architecture: amd64
//软件安装后大小(kb)
Installed-Size: 218600
//维护者(格式:名称<邮箱>)
Maintainer: name<electronVue@163.com>
//供应者
Provides: typora
//软件描述
Description: electron文件打包成deb。
- 创建以下文件
postinst.sh
postrm.sh
preinst.sh
preinst.sh
(3). opt文件夹
- bin文件(放置electron项目打包后**/dist/linux-arm64-unpacked**目录下文件)
(4). user文件夹
- electronVue.desktop文件
[Desktop Entry]
Name=electronVue
Name[zh_CN]=某某发布机管理系统
Categories=Development
Comment=Dynaroser User ecample
Exec=/opt/electronVue/bin/electronVue show
Icon=/user/share/icons/electron-vue/icon.png
Terminal=false
Type=Application
X-Deepin-Vendor=user-custom
X-ubuntu-Touch=true
Name 程序名称(electronVue.desktop这个文件显示的名称,加[zh_CN]显示中文)
Categories 分类的位置
Comment 制作deb时使用的工具
Exec 可执行文件存放的位置
Icon 图标存放的位置
Terminal 是否使用终端
Type 应用类型
- 开始打包
//dpkg -b 需要打包文件 打包后的deb文件
dpkg -b pack electronVue.deb
到这其实,已经能打一个包试试了,但是这个软件安装后只在当前用户使用,因为还未对文件的权限进行修改
- 权限修改
chown root:root -R apack
chmod 755 -R pack
从这步逐渐变的麻烦了,每次发布包还得,还得切root账号,删除文件,然后复制新的包文件,加权限,有没有一个简单的脚本快速执行呢?
- 自己编写一个sh脚本
- 创建一个sh脚本(#! /bin/bash 开头的)
touch 一键打包.sh
脚本内容
- 递归删除打包目录bin下的文件
rm -r /pack/opt/apps/electron-vue/bin/*
递归删除一定要确定好目录,慎
- 复制项目打包好的免安装包
cp -r electronVue/dist/linux-arm64-unpacked/* /pack/opt/apps/electron-vue/bin
- agentuser赋予root权限
chown root:root -R pack
chmod 755 -R pack
- 给准备打包的文件确定(版本和环境文件名)
echo "测试输入(c), 正式输入(z)"
read deb_env
if [ -n "$deb_env" ]
then
if [ "$deb_env" == "c" -o "$deb_env" == "C" ]
then
deb_env="测试"
elif [ "$deb_env" == "z" -o "$deb_env" == "Z" ]
then
deb_env="正式"
else
echo '输入错误'
exit
fi
else
deb_env=""
echo '非测试和正式'
fi
echo "输入版本号"
read version
if [ -z "$version" ]
then
echo '请勿输入空的版本号'
exit
else
echo "版本$version"
fi
- 重写control文件
echo '重写control文件'
cat <<EOF > ./agentuser/DEBIAN/control
Package: electronVue
Version: $version
Section: utils
Priority: optional
Architecture: amd64
Installed-Size: 218600
Maintainer: name<electronVue@163.com>
Provides: typora
Description: electron文件打包成deb。
EOF
- 开始打包
echo '开始打包'
packageName=pack$deb_env$version.deb
echo $packageName
sudo dpkg -b pack $packageName
chown root:root $packageName
chmod 755 $packageName
- 整体脚本
rm -r /pack/opt/apps/electron-vue/bin/*
cp -r electronVue/dist/linux-arm64-unpacked/* /pack/opt/apps/electron-vue/bin
echo "测试输入(c), 正式输入(z)"
read deb_env
if [ -n "$deb_env" ]
then
if [ "$deb_env" == "c" -o "$deb_env" == "C" ]
then
deb_env="测试"
elif [ "$deb_env" == "z" -o "$deb_env" == "Z" ]
then
deb_env="正式"
else
echo '输入错误'
exit
fi
else
deb_env=""
echo '非测试和正式'
fi
echo "输入版本号"
read version
if [ -z "$version" ]
then
echo '请勿输入空的版本号'
exit
else
echo "版本$version"
fi
echo '重写control文件'
cat <<EOF > ./agentuser/DEBIAN/control
Package: electronVue
Version: $version
Section: utils
Priority: optional
Architecture: amd64
Installed-Size: 218600
Maintainer: name<electronVue@163.com>
Provides: typora
Description: electron文件打包成deb。
EOF
echo '开始打包'
packageName=pack$deb_env$version.deb
echo $packageName
sudo dpkg -b pack $packageName
chown root:root $packageName
chmod 755 $packageName