Snapcraft:找不到可执行文件

Snapcraft: Cannot find executable

我正在尝试创建一个 snap 包,并且已经 snapcraft 构建了一个。

但是,当尝试 运行 二进制文件时,在安装我新构建的 snap 后,我得到:

cannot snap-exec: cannot exec "/snap/foobar/x1/snap/command-chain/snapcraft-runner": no such file or directory

snapcraft-runner 文件存在,所以我假设错误是因为这个找不到我的二进制文件。

这是我 snapcraft.yaml

中的相关部分
confinement: devmode
base: bare
build-base: core18

parts:
  foobar:
    plugin: dump
    source: bin/foobar_x64.tgz

apps:
  foobar:
    command: foobar

我正在 snap 之外构建一个静态链接的二进制文件,所以我真的不需要里面的任何东西。这只是为了让人们可以使用包管理器来更新它,我想限制它(稍后)。

tgz 只包含一个二进制文件 foobar。我的假设是它不在 PATH 中,这就是它找不到它的原因。我尝试使用组织指令将其移动到 bin/ 中,我尝试将命令更改为各种内容,例如 ${SNAP}/foobar/foobar.

所有这些在构建过程中都被拒绝了,因为它抱怨找不到二进制文件,或者说命令包含非法字符。

./foobar 的行为与 foobar 相同,它构建,然后不起作用。

二进制文件也肯定复制并可执行:

$ file /snap/foobar/x1/foobar 
/snap/foobar/x1/foobar: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), statically linked, no section header

$ ls -la /snap/foobar/x1/foobar 
-rwxrwxr-x 1 root root 1786200 Jul  5 21:00 /snap/foobar/x1/foobar
``


How can I get it to find my executable?

我已经解决了这个问题。

这个wrapper可以禁用,然后好像找到了a/the binary

在你的 snapcraft.yaml 下 apps -> yourapp 添加 adapter: none

例如

apps:
  foobar:
    command: foobar
    adapter: none