首页 > 系统相关 >element-forge在Linux Centos中打包构建时遇到的异常问题解决方案

element-forge在Linux Centos中打包构建时遇到的异常问题解决方案

时间:2024-01-15 11:35:09浏览次数:39  
标签:name Centos package element electron 7.1 Linux forge deb

环境:
Linux CentOS8 x64
electron:27.1.0
electron-forge: 7.1.0

electron dev依赖包
"devDependencies": {
"@electron-forge/cli": "^7.1.0",
"@electron-forge/maker-deb": "^7.1.0",
"@electron-forge/maker-rpm": "^7.1.0",
"@electron-forge/maker-squirrel": "^7.1.0",
"@electron-forge/maker-zip": "^7.1.0",
"@electron-forge/plugin-auto-unpack-natives": "^7.1.0",
"@electron/rebuild": "^3.3.0",
"@vitejs/plugin-vue": "3.1.0",
"electron": "^27.1.0"
}

异常记录

Cannot make for rpm, the following external binaries need to be installed: rpmbuild

An unhandled rejection has occurred inside Forge:
Error: Cannot make for rpm, the following external binaries need to be installed: rpmbuild

出现这个错误,代表你的系统上缺少环境依赖包,需要进行安装。
安装命令:dnf install rpm-build.x86_64;有的异常给出的并不是包名,
而是命令,所以这个时候就需要查询这个命令是在哪个包中再进行安装。
也可以通过dnf search <包名>命令进行尝试性的检索,看看能不能找到。

An unhandled rejection has occurred inside Forge:
Error: /tmp/electron-packager/tmp-9UkTiG/resources/app/node_modules/@serialport/bindings-cpp/build/node_gyp_bins/python3: file "../../../../../usr/libexec/platform-python3.6" links out of the package

出现这个错误是一个bug,这里需要修改forge.config.js文件或等同的配置项内容,添加hooks项。
修改后的文件内容如下:

const path = require('path')
const fs = require('node:fs/promises');

module.exports = {
  packagerConfig: {
    asar: true,
    ...
  },
  makers: [
    ...
  ],
  plugins: [
    ...
  ],
  hooks: {
    packageAfterPrune: async (_config, buildPath) => {
      const gypPath = path.join(
          buildPath,
          'node_modules',
          '@serialport',
          'bindings-cpp',
          'build',
          'node_gyp_bins'
      );
      await fs.rm(gypPath, {recursive: true, force: true});
    }
  }
};

注意:其他配置内容保留你自己的即可。

'@serialport','bindings-cpp'这里是我这边的模块名称,替换你自己的模块命令。

导致这个错误的原因相关的文档记录:
node_gyp_bins导致下游包构建失败
在 Mac 上启用 asar 时,Electron forge 会抛出“.../python3.8”链接超出包”错误

Cannot make for deb, the following external binaries need to be installed: dpkg, fakeroot

An unhandled rejection has occurred inside Forge:
Error: Cannot make for deb, the following external binaries need to be installed: dpkg, fakeroot
at MakerDeb.ensureExternalBinariesExist

如果你构建deb格式的包,那么可能就会出现上面这种错误,还是需要安装这2个依赖包。

在安装之前先执行yum -y install epel-release添加扩展仓库包。

安装命令:yum install dpkg-1.20.9-4.el8.x86_64

自己确认是否需要额外安装的包:dpkg-devel.x86_64 dpkg-dev.noarch

fakeroot安装命令:dnf install fakeroot.x86_64 fakeroot-libs.x86_64

Package name must start with an ASCII number or letter

Error: Package name must start with an ASCII number or letter
at DebianInstaller.sanitizeName

这里是构建名称的强制条件,我这边没有通过forge.config.js文件单独配置名称,所以我这里修改的是package.json文件的内容。

  "name": "test-exec-name",

You may need to re-bundle the app using Electron Packager's "executableName" option.

An unhandled rejection has occurred inside Forge:
Error: could not find the Electron app binary at "/path1/path2/...". You may need to re-bundle the app using Electron Packager's "executableName" option.

这里也就是根据你提供的name名称,并未找到二进制文件目录,要不你单独指定,要不你就统一名称,例如:name和productName名称保持一致。
这是关于deb marker配置项:https://js.electronforge.io/interfaces/_electron_forge_maker_deb.InternalOptions.MakerDebConfigOptions.html

error: License field must be present in package: (main package)

这个错误很明确,就是你没有声明许可协议。在package.json包中添加"license": "GPL"即可,协议的值根据你自己的需要进行修改。

最后的最后,你可以放心执行npm run make进行构建了,我这边遇到的错误都已放在这里了。

标签:name,Centos,package,element,electron,7.1,Linux,forge,deb
From: https://www.cnblogs.com/XingXiaoMeng/p/17965019

相关文章

  • Centos7 yum方式安装 mysql 5.6
    Centos7安装mysql5.6[root@server1~]#cat/etc/redhat-releaseCentOSLinuxrelease7.4.1708(Core)[root@server1~]#uname-r3.10.0-693.el7.x86_64一、安装MySQL前准备1)查看系统是否存在旧版本rpm-qa|grepmysql可能出现一到多个结果,也可能没有2)卸载旧版......
  • 实验一使用 Linux 系统的常用命令
    2.使用Linux系统的常用命令启动Linux虚拟机,进入Linux系统,通过查阅相关Linux书籍和网络资料,或者参考本教程官网的“实验指南”的“Linux系统常用命令”,完成如下操作:(1)切换到目录/usr/bin;(2)查看目录/usr/local下所有的文件;(3)进入/usr目录,创建一个名为test的目录,并查......
  • Centos创建一个Python虚拟环境
      在CentOS上创建一个Python虚拟环境,可以使用virtualenv工具。以下是创建和激活虚拟环境的基本步骤:1.安装virtualenv  如果还没有安装virtualenv,可以使用以下命令安装:sudo yum install python3-virtualenv  请注意,这里假设使用的是Python3。如果使用的是Py......
  • Centos部署xxl-job记录
    XXL-JOB是一个分布式任务调度平台,其核心设计目标是开发迅速、学习简单、轻量级、易扩展,使用JAVA语言开发,底层依赖mysql1、安装MySQL1.下载MySQLyum包wgethttp://repo.mysql.com/mysql57-community-release-el7-10.noarch.rpm2.安装MySQL源rpm-Uvhmysql57-community-rele......
  • GEC6818开发板Linux环境中telnet的搭载
    一、首先打开开发板的Linux①通过232串口通信线连接开发板打开②打开网络配置文件(/etc/init.d/rcS)[root@GEC6818/]#vi/etc/init.d/rcS③用vi打开文件,在文件里面添加如下命令:#启动eth0网卡,并设置IP为192.168.1.124/sb......
  • windows下打包go项目放在linux上部署
    1.打开命令提示符或终端,并导航到包含main.go的目录。2.使用以下命令进行交叉编译:GOOS=linuxGOARCH=amd64gobuild-omyprogram 这将生成一个名为myprogram的可执行文件,该文件是为Linux上的AMD64架构编译的。5.现在,你可以将生成的myprogram文件复制到Linux系统上运行。......
  • linux 内核和应用层之间的通信方式
    系统调用应用与内核通信的方式中,最常用的就是系统调用。如常见的open、write、read、ioctl等系统调用。当系统调用时,触发一个软中断,处理器进入内核模式。参数传递到内核空间,完成通信过程。内核完成服务之后,将数据返回给应用,并设置处理器为用户模式。copy_to_user()/copy_from_......
  • Linux 环境中使用 LVGL
    原文:https://www.cnblogs.com/jzcn/p/17011647.html之前有记录过在esp32中使用LVGL的笔记,需要的小伙伴可以了解一下,esp-idf移植lvgl8.3.3我之前整理的学习资料:https://www.cnblogs.com/jzcn/p/16647106.html一、准备材料开发板:一块linux的开发板或linux的虚拟机lvg......
  • linux 驱动 --- unlocked_ioctl 与 compat_ioctl
    1、compat_ioctl:支持64bit的driver必须要实现的ioctl,当有32bit的userspaceapplicationcall64bitkernel的IOCTL的时候,这个callback会被调用到。如果没有实现compat_ioctl,那么32位的用户程序在64位的kernel上执行ioctl时会返回错误:Notatypewriter2、如果是64位的用户程序运行......
  • Vue 3 + TypeScript + Vite + Element-Plus + Router + Axios + Pinia项目搭建(内含完
    Vue3+TypeScript+Vite+Element-Plus+Router+Axios+Pinia项目搭建(内含完整架构)安装Vue3+ts+vitenpminitvite@latest选择y,新建项目名称,选择vue,选择vue-ts下载完成后执行以下命令行cd新建的项目名称npminpmrundev安装Element-Plusnpminstallelement-plus-......