我正在尝试创建一个snap包,并且已经让snapcraft构建了一个。
但是,在尝试运行二进制文件时,在安装新构建的快照后,我得到:
cannot snap-exec: cannot exec "/snap/foobar/x1/snap/command-chain/snapcraft-runner": no such file or directorysnapcraft-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。我的假设是它不在路径中,这就是它找不到它的原因。我试着用organize指令把它移到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?发布于 2020-07-06 06:28:54
我已经修复了这个问题。
这个包装器可以被禁用,然后它似乎会找到一个/二进制文件
在您的snapcraft.yaml中的apps -> yourapp下添加adapter: none
例如。
apps:
foobar:
command: foobar
adapter: nonehttps://stackoverflow.com/questions/62745954
复制相似问题