我有一个我想为多种架构构建的快照。现在,在snapcraft.yaml
文件中,我将包装器定义为要执行的二进制文件,它设置了应用程序运行所需的环境变量。
它包含的一段脚本代码如下:
#!/bin/sh
ARCH='x86_64-linux-gnu'
export LD_LIBRARY_PATH=$SNAP/usr/lib/$ARCH:$LD_LIBRARY_PATH
显然,硬编码ARCH
不是最优的,因为非 amd64 构建将无法正常工作。但是,使用 Snapcraft 时,使用拱形检测dpkg-architecture
将不起作用。
如何在使用 Snapcraft 构建快照时动态检测包装器中的主机架构以设置正确的库路径?
代码作为snappy 桌面示例的一部分提供。
二进制包装器(和服务文件)
SNAP_ARCH
为您定义环境变量。不幸的是,这不是一个理想的解决方案,因为它们不是三胞胎,但它应该足以让您通过案例陈述或其他东西到达那里。为了完整起见,我最终使用了以下 shell 片段:
然而,随着包装器开始变得复杂,我更倾向于创建一个 Snapcraft 插件。