【问题标题】:Snapcraft: Cannot find executableSnapcraft:找不到可执行文件
【发布时间】: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


    【解决方案1】:

    我已经解决了这个问题。

    这个包装器可以被禁用,然后它似乎找到了一个/二进制

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

    例如

    apps:
      foobar:
        command: foobar
        adapter: none
    

    【讨论】:

      猜你喜欢
      • 2019-11-02
      • 2013-11-20
      • 2012-07-22
      • 2017-05-07
      • 1970-01-01
      • 2021-12-14
      相关资源
      最近更新 更多