【发布时间】:2020-10-25 23:32:53
【问题描述】:
我正在尝试创建一个 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?
【问题讨论】:
标签: snapcraft