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

原因
项目需求及源码编译
测试环境
测试机配置
型号:联想CF4720J
CPU:飞腾D2000/8 (2.3GHz)
内存:16G
硬盘:256G SSD
系统:Kylin-Desktop-V10-GFB-Release-020
平台架构:ARM
准备工作
- 银河麒麟V10操作系统
- Node.js(建议 v18 或更高版本)
- npm
- Git
- Java 8+(用于运行 Closure Compiler)
- 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格式