我正在尝试创建MDN的快照包,应用程序已打包好,当我尝试运行它时出现/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
答案 0 :(得分:0)
正如您已告诉启动脚本您的程序被调用application
,然后它会在您运行快照时尝试从当前工作目录执行application
。这里有两点需要注意:
工作目录将从终端外部保留快照上下文中保留。例如,如果您在主目录/home/your-user
中,那么swipe-app
的工作目录也将是/home/your-user
。
由于上面的工作目录是您的主目录,因此没有任何锚点的命令(例如application
)将尝试在您的主目录中执行。因此,在您的示例中,启动脚本将尝试运行等效于/home/your-user/application
的命令。
您可以通过确保启动脚本执行cd
来更改工作目录来解决此问题,例如: cd $SNAP
;或通过添加achor锚定您的命令,例如command: qt5-launch $SNAP/application
。
您可能需要检查的另一件事是您的qmake
版本实际上输出了一个名为application
的二进制文件。如果您尚未在TARGET=
项目文件中设置snap.pro
,则二进制文件将默认为snap
,不 application
。该行应显示TARGET=application
以生成名为application
的二进制文件:(参考:https://doc.qt.io/qt-5/qmake-variable-reference.html#target)。