首页 > 系统相关 >手把手教你在Linux上构建Electron

手把手教你在Linux上构建Electron

时间:2024-09-27 10:49:37浏览次数:9  
标签:opt node nodejs 手把手 electron Electron Linux PATH

开发electron最大的特点就是可以使用web技术来开发跨平台应用,大部分开发都是在windows/mac上开发的electron应用,我使用的是electorn-builder来构建应用,官网提供支持在windows上使用docker来实现Linux版本的构建。可以直接在Linux服务器上完成构建:

构建Linux环境的electron主要的步骤:

  1. 安装依赖:node、python(如需要)
  2. 将源代码上传到Linux环境
  3. 构建应用

安装步骤:

一、安装node

在Linux上安装nodejs,可以在windows上先下载把Linux版本的nodejs包下载到本地后,再拷贝到Linux上

1、查看Linux系统架构

uname -m | arch

在这里插入图片描述

2、下载nodejs,Linux安装包下载:nodejs

在这里插入图片描述

3、下载到本地之后,将nodejs压缩包上传到Linux服务器上,可以使用终端工具或者ssh传输MobaXTerm终端工具下载地址

将压缩包上传到服务器目录,一般是用户目录(/home/username)

~代表用户目录

4、将文件解压到指定nodejs的安装目录,这里安装到了/opt目录下

  1. 在/opt下创建nodejs目录

    cd /opt

    mkdir nodejs

  2. 将压缩包拷贝到/opt/nodejs目录下

    mv ~/node-v16.20.2-linux-x64.tar.xz /opt/nodejs

  3. 切换到/opt/nodejs目录下,解压压缩包

    cd /opt/nodejs/

    tar -xvf node-v16.20.2-linux-x64.tar.xz

  4. 记住解压的bin目录,后续设置环境变量

    目录:/opt/nodejs/node-v16.20.2-linux-x64/bin

5、使用vi或者vim命令编辑 /etc/profile 文件,将nodejs的bin目录添加到环境变量中

export PATH=“/opt/nodejs/node-v16.20.2-linux-x64/bin:$PATH”

  1. vim /etc/profile

  2. 按下键盘的 i 即可编辑文件,在文件末尾添加环境变量,如下:

    在这里插入图片描述

  3. 设置完毕后,按下 esc 键退出编辑模式,输入 :wq! 保存编辑并退出

  4. 修改了环境变量文件之后,需要重新加载配置文件以生效,使用命令 source /etc/profile

  5. 输入 node -v 测试是否安装成功

二、安装python

我的程序用到grpc,涉及到了node与c++的调用,为了包之间的适配,需要借用python环境来重新构建依赖以完成grpc与electron的适配

1、将python3.11.5在windows上下载后,上传到Linux

安装步骤:

  1. cd python-3.11.5

  2. ./configure --preofx=/opt/python3

  3. make j 10 :同时运行十个作业,若失败的话,可以使用make

  4. su

  5. make install

2、将 python3 目录下的 bin 目录设置环境变量

  1. vim /etc/profile
  2. export PATH=$PATH:/opt/python3/bin
  3. 设置完成保存后,重新运行配置文件:source /etc/profile

三、构建electron

将windows下开发的electron源代码拷贝到Linux上,保证将windows版本的node_modules删除,在Linux上进行编译

1、在Linux上的electron源代码目录下,确保没有windows版本的node_modules,然后进行构建:

  1. 设置npm和electron的镜像,可以使用国内淘宝镜像顺利的下载资源,执行 npm config edit

  2. 执行 npm config edit之后,会进入到 npm 的配置文件,设置镜像

    在这里插入图片描述

    ELECTRON_BUILDER_BINARIES_MIRROR=https://npmmirror.com/mirrors/electron-builder-binaries/
    ELECTRON_MIRROR=https://npmmirror.com/mirrors/electron/
    registry=https://registry.npmmirror.com/
    
  3. 设置完镜像后退出

  4. 确保electron代码中对Linux下build进行了配置

    linux: {
        icon,
        target: 'AppImage',
        maintainer: "zj"
    }
    
  5. 在electron的根目录下执行 npm install

  6. 我的代码中使用到了 grpc,可能会报错grpc与electron版本不兼容的问题,此时需要使用 electron-rebuild 来重新构建完成包之间的兼容

  7. 安装了 electron-rebuild 之后,在 package.json 中的 scripts 中设置 "rebuild": “electron-rebuild -f -w yourmodule”

    在这里插入图片描述

  8. 执行 npm run rebuild ,开始重新构建。在我测试的时候发现:使用node16.20.2版本搭配python3.11.5版本可以完成rebuild重新构建

  9. 打包构建程序:npm run electron:build

2、修改Linux下chrome-sandbox沙盒的权限

由于electron嵌入了Chromium和Node.js,

在Linux系统上,进程和文件的权限管理比其他操作系统更加严格和细粒度。chrome-sandbox 是一个提升了特权的进程,它需要特定的权限来运行。

在构建代码后,运行.AppImage程序,可能会报错:

The SUID sandbox helper binary was found, but is not configured correctly. Rather than run without sandboxing I'm aborting now. You need to make sure that /tmp/.mount_xxxxx/chrome-sandbox is owned by root and has mode 4755.

3、设置chrome-sandbox权限

  1. 需要将node_modules/electron/dist/chrome-sandbox设置权限为4755,并且设置root用户权限

  2. 执行命令:sudo chown root:root chrome-sandbox && sudo chmod 4755 chrome-sandbox

  3. 重新构建build

4、禁用沙盒

  1. 若设置chrome-sandbox权限后,重新构建仍然报错,可以禁用沙盒运行程序

  2. 在启动程序后面加参数 --no-sandbox

  3. 执行:./electron-app --no-sandbox 。此时可以成功运行程序

环境变量配置

Linux上设置环境变量的两种方式:1. 全局设置,设置后所有用户生效 2. 设置属于指定用户的环境变量

  1. 全局:/etc/profile/
    1. 设置PATH:export PATH=/opt/nodejs/bin:$PATH
    2. 设置PATH追加:export PATH=$PATH:/opt/python3/bin
    3. 设置完PATH之后需要重新运行:source /etc/profile
  2. 用户的环境变量:~/.bashrc | ~/.cshrc

标签:opt,node,nodejs,手把手,electron,Electron,Linux,PATH
From: https://blog.csdn.net/weixin_71329368/article/details/142587168

相关文章

  • Centos Linux 查看网卡IP地址的方法
    方法一:通过hostname命令进查看IPv4地址[root@sre01~]#hostname-I192.168.236.100同时查看IPv6地址[root@sre01~]#hostname-ife80::efee:7ca0:acf0:ad72%ens33192.168.236.100方法二:通过ip命令[root@sre01~]#ipashowens332:ens33:<BROADCAST,MULTICAST,UP,LOWER_UP......
  • Linux 查询设备信息
    Linux系统查询“设备信息”的方法--简单记录在Linux系统中查询IntelCeleronN2807的相关信息,可以使用以下几种方法:一、使用lscpu命令打开终端,直接输入lscpu命令并回车。该命令会输出CPU的详细信息,包括架构、核心数、线程数、缓存大小等。你可以在输出结果中查......
  • linux系统scp命令
    scp远程传输scp的语法语法:scp源数据的机器远程机器选项:-r递归传输文件夹及文件夹内的内容1、把当前机器上的文件、目录发送给其他机器scp传输文件把当前机器上的/etc/passwd文件发送给其他机器示例:当前登录的机器是172.16.1.20,把当前机器的/etc/passwd文件,发送给1......
  • Linux-基础实操篇-时间日期类
    date指令-显示当前日期基本语法date(功能描述:显示当前时间)date+%Y(功能描述:显示当前年份)date+%m(功能描述:显示当前月份)date+%d(功能描述:显示当前是哪一天)date"+%Y-%m-%d%H:%M:%S"(功能描述:显示年月日时分秒)应用实例案例1:显示当前时间信息date案例......
  • 手把手教你建【货币】一题的网络流模型
    现在已知如下问题,并告诉你这题可以用网络流来解决,你该怎么做,该怎么建出网络流的模型?一些前提:显然可以发现绝不可能走横向向左的边,但可能走竖向向上的边(如下图)那么图其实就是这样的:问从\(s\)到\(t\)的最小花费如果没有那\(m\)条限制,我们直接跑最短路就行了,加上这些限制......
  • linux 操作系统下dig命令的使用和介绍
    linux操作系统下dig命令的使用和介绍dig(DomainInformationGroper)是一个强大的命令行工具,用于查询DNS(域名系统)服务器,获取有关域名及其相关记录的信息。它广泛用于网络管理和故障排除dig命令的基本功能查询DNS信息:dig可以查询各种类型的DNS记录,包括A记录(IP地址)、MX记......
  • 数据结构:实现链式结构二叉树(Tree) 手把手带你入门数据结构~
    文章目录前言一、链式结构二叉树的概念1.定义2.节点结构3.操作4.优势与劣势二、链式结构二叉树的实现1.树结构的定义2.树的遍历(1)前序遍历(2)中序遍历(3)后序遍历3.二叉树结点个数4.二叉树叶子结点个数5.二叉树第k层结点个数6.二叉树的深度/高度7.二叉树查找值为......
  • Linux云计算 |【第四阶段】NOSQL-DAY2
    主要内容:Redis集群概述、部署Redis集群(配置manage管理集群主机、创建集群、访问集群、添加节点、移除节点)一、Redis集群概述1、集群概述所谓集群,就是通过添加服务器的数量,提供相同的服务,从而让服务器达到一个稳定、高效的状态;而单个Redis服务运行存在不稳定性,当Redis服务......
  • linux主机入侵排查 爆破登录
    一、系统排查分析1.用户信息的排查#查看用户和密码cat/etc/shadowcat/etc/passwd#查看组信息cat/etc/group#查看历史命令history#查看最近登录成功的用户及信息last#查看主机所有用户最近一次登录信息lastlog#查看当前用户信息id#查看当前登录系统......
  • Linux系统基本概念与文件系统组成
    基本概念Linux是一种广受欢迎的开源操作系统,具有高度的灵活性、稳定性和安全性。以下是Linux的一些基本概念:一、起源与发展起源:Linux最初由芬兰计算机科学家林纳斯·托瓦兹(LinusTorvalds)在1991年首次发布。它是基于当时的Minix操作系统,开发出的一个免费的类Unix操作系统......