electron打包deb失败后,用linux生成deb包探究

1,083 阅读3分钟

electron在linux打包deb包探究

1. linux生成deb包

  1. 了解deb包包目录结构 Snipaste_2023-03-16_09-33-40.png
  2. 了解目录后开始动手

(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。

参考地址 max.book118.com/html/2017/0…

  • 创建以下文件
 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 应用类型

  1. 开始打包
 //dpkg -b 需要打包文件  打包后的deb文件
 dpkg -b pack electronVue.deb

到这其实,已经能打一个包试试了,但是这个软件安装后只在当前用户使用,因为还未对文件的权限进行修改

  1. 权限修改
chown root:root -R apack
chmod 755 -R pack

从这步逐渐变的麻烦了,每次发布包还得,还得切root账号,删除文件,然后复制新的包文件,加权限,有没有一个简单的脚本快速执行呢?

  1. 自己编写一个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
  1. 整体脚本
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