由于Electron官方编译Linux版本不支持VAAPI编码,需要自行源码编译,这个工作还是有一些挑战性,首先是硬件需要8G以上内存,200G左右硬盘,以及10M以上的国际互联网访问通道。
可能因为各种原因,好不容易下载好的120G源码,在某台机器上由于硬件问题无法编译,需要更换机器,如果反复重复上述工作,都将是天大的折磨。
所以为了复用成果,一次下载在多个机器上可以反复使用,测试了一下使用Docker容器进行编译,以可以避免破坏某台高性能机器(一般上面有比较重要的内容,但临时借用几小时编译下得到编译成果,而不破坏主机现场环境还是可以的,Docker容器的价值也正在于此)。
本次实测通过3台主机:
- 4U至强服务器:硬伤是SAS机械盘比较慢
- MacBook Intel i7 16G
- Mac mini M4: 硬件是256的ssd,存储已经满了(arm主机,实际也可以运行x86 docker进行编译)
如果有已经下载好的electron源码,可以通过移动硬盘(最好是ssd)或者nfs网络共享的方式挂载到上面映射目录~/electronSRC,我的目录下面就两个文件夹,官方的dept_tools和src目录。
注意
编译electron(及chromium,nodejs)对于文件属性、权限敏感,推荐使用Linux环境下ext4或苹果原生APFS,不要使用exFat、Fat32、NTFS等文件系统。
方案1. 挂载nfs到容器映射数据目录:
1 | mkdir ~/electronSRC |
方案2. 将挂载的移动硬盘链接到目录:
1 | ln -s /Volumes/Untitled/electronSRC ~/electronSRC |
或者直接下载我分享的docker镜像“全新”下载所有源码并编译(或者使用官方推荐的ubuntu:22.04自行按Electron官方说明构建编译环境):
1 | docker run -it --name electron-build \ |
*如果是mac m4 arm CPU,加一个参数--platform linux/amd64启动容器,apple m4的并发编译性能和大内存还是很快的,哪怕是经过Rosetta2动态转换运行x86容器。
进入容器后,开始编译:
1 | cd /workspace/electronSRC/src |
耐心等待数小时,即可在out/Release目录下获取编译结果:
1 | root@1d643c874719:/workspace/electronSRC/src# ls -hl out/Release/dist.zip |
总磁盘消耗:
1 | Filesystem Size Used Avail Capacity iused ifree %iused Mounted on |
如果没有预先下载好的源码,也可以先全新下载(下载到你容器映射的主机目录,例如:~/electronSRC,请确保你的/home目录可用空间有120G+的可用空间):
1 | cd /workspace/electronSRC |
然后再重复上面的编译步骤即可(注意,此下载过程你需要耐心,耐心,耐心以及运气,动辄下一整天或者……几天,看你的国际网络质量,反复失败是正常的)。
如果下载过程或编译过程始终出错了,删掉重来……

