银河麒麟(Kylin) - V10 SP1桌面操作系统ARM64编译 draw.io 画图工具

银河麒麟(Kylin) - V10 SP1桌面操作系统ARM64编译 draw.io 画图工具

原因

项目需求及源码编译

测试环境

测试机配置

型号:联想CF4720J

CPU:飞腾D2000/8 (2.3GHz)

内存:16G

硬盘:256G SSD

系统:Kylin-Desktop-V10-GFB-Release-020

平台架构:ARM

准备工作

  1. 银河麒麟V10操作系统
  2. Node.js(建议 v18 或更高版本)
  3. npm
  4. Git
  5. Java 8+(用于运行 Closure Compiler)
  6. Python 3(用于构建脚本)

获取源码

bash 复制代码
git clone https://github.com/jgraph/drawio-desktop.git
cd drawio-desktop
git checkout v29.2.9

编译

  • 初始化所有子模块
bash 复制代码
git submodule update --init --recursive
  • 安装依赖
bash 复制代码
npm install  --verbose

  • 编译构建
bash 复制代码
npm run release-linux


警告:
这个错误是因为 electron-builder 试图将构建结果发布到 GitHub,但你没有设置 GitHub Token。你需要禁用发布功能,或者使用只构建不发布的命令。
不用管它因为项目构建已经完成

  • 查看生成的文件
bash 复制代码
ls -la dist/
可能包含:
  • draw.io-29.2.9.AppImage
  • draw.io_29.2.9_arm64.deb
  • draw.io-29.2.9.x86_64.rpm
  • draw.io-29.2.9.snap

如图:

构建完成文件会自动打包成 .AppImage、.deb 、.rpm 、格式

如果需要构建 Snap 包:

bash 复制代码
npm run release-snap

我不需要,所以没有构建Snap 包。

如果遇到 electron 下载问题:

  • 设置国内镜像:
bash 复制代码
# 临时设置环境变量
export ELECTRON_MIRROR="https://npmmirror.com/mirrors/electron/"

# 或者永久设置
echo 'electron_mirror="https://npmmirror.com/mirrors/electron/"' >> ~/.npmrc
echo 'ELECTRON_MIRROR="https://npmmirror.com/mirrors/electron/"' >> ~/.bashrc
source ~/.bashrc

# 然后重新安装
npm install

配置构建参数自行查看

  • 如果需要自定义配置,可以查看对应的配置文件:
bash 复制代码
# 查看 Linux 构建配置
cat electron-builder-linux-mac.json

# 查看 snap 构建配置
cat electron-builder-snap.json

构建参数命令查看:

bash 复制代码
npm  run

开发模式运行

  • 如果你想先测试应用是否正常工作:
bash 复制代码
npm start

如果弹窗口未进入软件或者卡死的状态、因为缺失依赖或者依赖下载不全造成的请重复以下操作:

bash 复制代码
# 1. 清理历史依赖以及构建的历史数据
rm -rf node_modules dist 

npm cache clean --force

# 2. 确保依赖安装正确
npm install

# 3. 构建 Linux AppImage
npm run release-linux

# 4. 输出文件在 dist/ 目录
ls -la dist/

银河麒麟V10操作系统安装Node 18.x

  • 使用 nvm(Node Version Manager)
bash 复制代码
# 安装 Node.js 18
nvm install 18
# 选择 Node.js 18
nvm use 18
# 确认 Node.js 版本
node --version  # 应该显示 v14.x.x 或更高
npm --version

安装

  • 安装方式 1:AppImage(无需安装,直接运行)
bash 复制代码
# 赋予执行权限
chmod +x dist/draw.io-29.2.9.AppImage

# 直接运行
./dist/draw.io-29.2.9.AppImage

# 或复制到系统目录
sudo cp dist/draw.io-29.2.9.AppImage /usr/local/bin/drawio
  • 安装方式 2:DEB 包(Ubuntu/Debian/deepin)
bash 复制代码
sudo apt install ./dist/draw.io-arm64-29.2.9.deb
# 或者使用 dpkg
sudo dpkg -i dist/draw.io-arm64-29.2.9.deb
sudo apt install -f  # 修复依赖


deb安装包安装完成未报错、在开始菜单打开draw.io画图工具正常画图。

构建过程中出现的问题

如果编译中出现报错 ①

如果出现github/download/fpm@2.1.4连接超时:

  • 重新执行
bash 复制代码
npm run release-linux

如果编译中出现报错 ②


如果出现权限错误:

bash 复制代码
# 修复目录权限
sudo chown -R $USER:$USER ~/.cache/electron
sudo chown -R $USER:$USER ~/.npm
sudo chown -R $USER:$USER .

如果缺少依赖(对于 deepin/UOS):

bash 复制代码
sudo apt-get install -y \
    libgtk-3-0 \
    libnss3 \
    libasound2 \
    libxss1 \
    libgconf-2-4 \
    fakeroot \
    rpm \
    snapd

如果编译中出现报错 ③

javascript 复制代码
zhang@zhang:~/drawio-desktop$ npm run release-linux

> draw.io@29.2.9 release-linux /home/zhang/drawio-desktop
> electron-builder --config electron-builder-linux-mac.json --publish always

/home/zhang/drawio-desktop/node_modules/http-proxy-agent/dist/index.js:45
        this.proxyHeaders = opts?.headers ?? {};
                                 ^

SyntaxError: Unexpected token .
    at Module._compile (internal/modules/cjs/loader.js:723:23)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:789:10)
    at Module.load (internal/modules/cjs/loader.js:653:32)
    at tryModuleLoad (internal/modules/cjs/loader.js:593:12)
    at Function.Module._load (internal/modules/cjs/loader.js:585:3)
    at Module.require (internal/modules/cjs/loader.js:692:17)
    at require (internal/modules/cjs/helpers.js:25:18)
    at Object.<anonymous> (/home/cetc36/drawio-desktop/node_modules/builder-util/src/nodeHttpExecutor.ts:3:1)
    at Module._compile (internal/modules/cjs/loader.js:778:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:789:10)
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! draw.io@29.2.9 release-linux: `electron-builder --config electron-builder-linux-mac.json --publish always`
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the draw.io@29.2.9 release-linux script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.

npm ERR! A complete log of this run can be found in:
npm ERR!     /home/zhang/.npm/_logs/2026-01-10T04_01_48_775Z-debug.log
zhang@zhang:~/drawio-desktop$

这个错误是因为你的 Node.js 版本太低,不支持可选链操作符 。drawio-desktop 需要 Node.js 14 或更高版本。

如果编译中出现报错 ④

bash 复制代码
zhang@zhang:~/drawio-desktop$ npm run release-linux

> draw.io@29.2.9 release-linux /home/zhang/drawio-desktop
> electron-builder --config electron-builder-linux-mac.json --publish always

Error: Cannot find module 'stream/promises'
Require stack:
- /home/zhang/drawio-desktop/node_modules/@electron/universal/dist/cjs/sha.js
- /home/zhang/drawio-desktop/node_modules/@electron/universal/dist/cjs/index.js
- /home/zhang/drawio-desktop/node_modules/app-builder-lib/out/macPackager.js
- /home/zhang/drawio-desktop/node_modules/app-builder-lib/out/index.js
- /home/zhang/drawio-desktop/node_modules/electron-builder/out/builder.js
- /home/zhang/drawio-desktop/node_modules/electron-builder/out/cli/cli.js
- /home/zhang/drawio-desktop/node_modules/electron-builder/cli.js
    at Function.Module._resolveFilename (internal/modules/cjs/loader.js:931:15)
    at Function.Module._load (internal/modules/cjs/loader.js:774:27)
    at Module.require (internal/modules/cjs/loader.js:1003:19)
    at require (internal/modules/cjs/helpers.js:107:18)
    at Object.<anonymous> (/home/zhang/drawio-desktop/node_modules/@electron/universal/src/sha.ts:3:1)
    at Module._compile (internal/modules/cjs/loader.js:1114:14)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:1143:10)
    at Module.load (internal/modules/cjs/loader.js:979:32)
    at Function.Module._load (internal/modules/cjs/loader.js:819:12)
    at Module.require (internal/modules/cjs/loader.js:1003:19)
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! draw.io@29.2.9 release-linux: `electron-builder --config electron-builder-linux-mac.json --publish always`
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the draw.io@29.2.9 release-linux script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.

npm ERR! A complete log of this run can be found in:
npm ERR!     /home/zhang/.npm/_logs/2026-01-10T05_39_31_024Z-debug.log

这个错误表明你的 Node.js 版本虽然可能满足了基础要求,但仍低于构建所需依赖的内部版本。stream/promises 模块在 Node.js 15.0.0 或更高版本 中才被引入。

  • 建议大家请使用Node.js 18.x

如果编译中出现报错 ⑤

bash 复制代码
Error: EACCES: permission denied, mkdtemp '/home/zhang/drawio-desktop/node_modules/electron/electron-download-xWbmdd'

这个权限错误是因为你用 sudo 或其他方式以 root 权限安装了部分依赖,导致目录权限混乱。请按以下步骤修复:

bash 复制代码
# 清理 node_modules 和缓存
sudo rm -rf node_modules package-lock.json ~/.npm/_logs/*
sudo rm -rf ~/.cache/electron ~/.electron

# 重置目录权限
sudo chown -R $USER:$USER .
sudo chmod -R 755 .

# 重新安装依赖(不要用 sudo!)
npm install 

如果问题仍然存在

bash 复制代码
# 清理更彻底的缓存
npm cache clean --force

# 删除全局 electron 缓存
rm -rf ~/.electron
rm -rf /tmp/electron-*

# 重新安装
npm install

如果编译中出现报错 ⑥

报这个错误是因为你把 build 文件夹删掉了

  • 需要重新下载源码构建
bash 复制代码
git clone https://github.com/jgraph/drawio-desktop.git

如果编译中出现报错 ⑦

bash 复制代码
zhang@zhang:~/drawio-desktop/dist$ ./draw.io-arm64-29.2.9.AppImage
(node:1580805) electron: Failed to load URL: file:///tmp/.mount_draw.iUe6g3f/resources/app.asar/drawio/src/main/webapp/index.html?dev=0&test=0&gapi=0&db=0&od=0&gh=0&gl=0&tr=0&browser=0&picker=0&mode=device&export=https%3A%2F%2Fconvert.diagrams.net%2Fnode%2Fexport&disableUpdate=0&enableSpellCheck=0&enableStoreBkp=1&isGoogleFontsEnabled=0&appLang=zh-CN with error: ERR_FILE_NOT_FOUND
(Use `drawio --trace-warnings ...` to show where the warning was created)
[1580923:0115/135829.072363:ERROR:components/viz/service/main/viz_main_impl.cc:189] Exiting GPU process due to errors during initialization

你正在运行自己构建的 AppImage 版本,但遇到了运行时错误。这表明问题在于构建过程本身,或者应用打包时资源路径有问题。

  • GPU 初始化错误是次要问题
  • 检查构建的 AppImage 内容
  • 重新构建项目

完成

编译成功:Kylin-Desktop-V10-GFB-Release-020-ARM64-编译 draw.io 画图工具deb安装包

编译成功:Kylin-Desktop-V10-GFB-Release-020-ARM64-编译 draw.io 画图工具AppImage格式

源码:drawio-desktop-29.2.9.tar.gz是源码文件

相关推荐
Dxy12393102164 小时前
深度解析 Elasticsearch 8.13.4 范围查询 DSL
大数据·elasticsearch
PNP Robotics4 小时前
PNP机器人分享具身操作策略和数据采集
大数据·人工智能·学习·机器人
企业智能研究4 小时前
数据治理是什么?数据治理对企业有什么价值
大数据·人工智能
Zilliz Planet5 小时前
官宣 | Milvus 2.6云上GA:三层存储降本85% 、速度快ES 4-7 倍,多数据类型支持
大数据·elasticsearch·搜索引擎·全文检索·milvus
峥嵘life5 小时前
Android16 系统每月Google安全补丁导入说明
大数据·elasticsearch·搜索引擎
Dxy12393102165 小时前
Elasticsearch 8.13.4 地理范围查询实战指南
大数据·elasticsearch·jenkins
天草二十六_简村人6 小时前
ES索引检索课程名称时,同时支持模糊搜索和精准搜索
大数据·后端·elasticsearch·搜索引擎·全文检索
sld1686 小时前
S2B2B系统:多级分销与渠道管理的数字化利器
大数据·人工智能
irizhao6 小时前
高质量数据集从0到1系统化建设步骤
大数据·人工智能