我试图创建一个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发布于 2018-06-18 11:43:36
正如您已经告诉启动脚本,您的程序名为application,那么当您运行snap时,它将尝试从当前的工作目录执行application。这里有两件事要注意:
工作目录保存在snap上下文之外的终端上。例如,如果您位于主目录/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:(ref:https://doc.qt.io/qt-5/qmake-variable-reference.html#target)的二进制文件。
https://stackoverflow.com/questions/49587925
复制相似问题