3

我正在尝试创建Qt/QML 应用程序的 snap 包,该应用程序已打包好,当我尝试运行它时/snap/swipe-app/x2/bin/qt5-launch: 74: exec: application: not found出现错误。

这是我的 snapcraft.yaml 文件

name: swipe-app # you probably want to 'snapcraft register <name>'
version: '0.1' # just for humans, typically '1.2+git' or '1.3.2'
summary: Single-line elevator pitch for your amazing snap # 79 char long summary
description: description
grade: devel # must be 'stable' to release into candidate/stable channels
confinement: strict # use 'strict' once you have the right plugs and slots

apps:
  swipe-app:
    command: qt5-launch application
    plugs:
      - unity7
      - home

parts:
  application:
     # See 'snapcraft plugins'
    plugin: qmake
    project-files: ["snap.pro"]
    source: .
    build-packages:
      - qtbase5-dev
    stage-packages:
      # Here for the plugins-- they're not linked in automatically.
      - libqt5gui5
           after: [qt5conf] # A wiki part
4

1 回答 1

0

正如您已经告诉启动脚本您的程序被调用,那么当您运行快照时application,它将尝试从当前工作目录执行。application这里有两点需要注意:

工作目录从快照上下文之外的终端保留。例如,如果您在主目录中/home/your-user,则工作目录swipe-app也将是/home/your-user.

由于上面的工作目录是您的主目录,因此没有任何锚点的命令,例如application,将尝试在您的主目录中执行。因此,在您的示例中,启动脚本将尝试运行相当于/home/your-user/application.

您可以通过确保启动脚本执行 acd来更改工作目录来解决此问题,例如cd $SNAP;或通过添加锚来锚定您的命令,例如command: qt5-launch $SNAP/application.

您可能需要检查的另一件事是您的qmake构建实际上输出了一个名为application. 如果您没有TARGET=snap.pro项目文件中设置,则二进制文件将默认为被调用snap而不是 application. 该行应读取TARGET=application以生成名为application: (ref: https://doc.qt.io/qt-5/qmake-variable-reference.html#target ) 的二进制文件。

于 2018-06-18T11:43:36.557 回答