我使用的电子已经有一个生产环境运行。在过去的几个月里,我一直在my ci.yml
文件中使用Electron-builder正常发布:
release-linux:
stage: release
image: electronuserland/builder:14
before_script:
- export ARCH="x64"
- export BUILD_SCRIPT="build:linux"
- apt-get update && apt-get install -y build-essential cmake
- apt install -y libusb-1.0-0-dev libudev-dev
运行- apt-get update && apt-get install -y build-essential cmake
行后,安装了libc6
包,该包与latest(2.35
)一起安装。
我的生产环境运行在Ubuntu20.04 LTS上。我假设发布版本的Docker映像运行在一个较新的版本上(例如最新版本)。
问题是我有一些硬件设备可以正常工作在libc6=2.31-0ubuntu9.2
上(这是以前由docker映像自动安装的版本)。现在,不知什么原因,映像正在拉最新版本的libc6
,我的硬件设备停止工作。
- 有没有办法强制电子制造商使用特定的Linux/Ubuntu版本?
- 或者使用最新版本的Ubuntu,但是降级了X1 M6 N1 X版本(尝试了这个版本,但是失败了)。任何关于如何做到这一点的说明都是值得注意的。
更新Ubuntu的生产版本是不是一个选项现在,所以我认为解决方案应该与这个包/库版本。
1条答案
按热度按时间bxjv4tth1#
这个问题是随机自行解决的,但经过一番研究,是
electron-builder
更改导致了这个问题。在此commit changes log中,我们可以看到
buildpack-deps
已从buildpack-deps:22.04-curl
(不工作)更改为buildpack-deps:focal-curl
(工作)。这给予了我们一个线索,让我们看看在哪里,这里是official supported tags for Dockerfiles,这里我们可以看到
focal-curl
指向20.04-curl
,我认为它的输出与20.04
本身不同。然后,看一下使用这个ci配置运行的gitlab作业,
libc6
依赖项在不同的版本下工作。我们的硬件在libc6=2.31
下工作正常,当focal-curl
被electron-builder
dockerfile设置时,libc6=2.31
被使用,但在libc6=2.35
下,20.04
被使用。这不是一个解决方案,但它是问题的原因。现在正在研究如何设置项目,以只使用正确的
electron-builder
配置。目前接受使用相同的配置,但在发布时要小心,注意哪个libc6
版本是工作。