创建带AppStream上游元数据的AppImage时如何解决desktop-file-not-found错误?
问题
为项目的AppImage添加AppStream上游元数据时遇到验证失败问题,AppDir文件结构如下:
something.AppDir |__AppRun |__io.github.accountname.repositoryname.desktop |__icon.png |__usr |__share |__metainfo |__io.github.accountname.repositoryname.appdata.xml
appdata.xml文件中包含关联desktop文件的配置:
<launchable type="desktop-id">io.github.accountname.repositoryname.desktop</launchable>
执行appimagetool打包命令:
./appimagetool-x86_64.AppImage something.AppDir
出现以下错误提示:
appimagetool, continuous build (commit 5735cc5), build <local dev build> built on 2023-03-08 22:52:04 UTC Using architecture x86_64 /home/user/projects/something.AppDir should be packaged as something-x86_64.AppImage AppStream upstream metadata found in usr/share/metainfo/io.github.accountname.repositoryname.appdata.xml Trying to validate AppStream information with the appstreamcli tool In case of issues, please refer to https://github.com/ximion/appstream io.github.accountname.repositoryname.appdata.xml I: io.github.accountname.repositoryname:~: content-rating-missing W: io.github.accountname.repositoryname:~: desktop-file-not-found ✘ Validation failed: warnings: 1, infos: 1, pedantic: 4 run_external: subprocess exited with status 3Failed to validate AppStream information with appstreamcli
但单独验证appdata.xml文件时是成功的:
appstreamcli validate --pedantic something.AppDir/usr/share/metainfo/io.github.accountname.repositoryname.appdata.xml
P: io.github.accountname.repositoryname:22: screenshot-no-caption P: io.github.accountname.repositoryname:~: releases-info-missing I: io.github.accountname.repositoryname:~: content-rating-missing P: io.github.accountname.repositoryname:19: screenshot-no-caption ✔ Validation was successful: infos: 1, pedantic: 3
解决方案
核心原因
错误desktop-file-not-found是因为appimagetool调用appstreamcli时,会在标准系统路径查找desktop文件,而你的desktop文件放在了AppDir根目录,不在usr/share/applications/这个标准位置,导致验证时找不到。单独验证appdata.xml时不会检查desktop文件的实际存在性,因此不会报错。
解决步骤
移动desktop文件到标准位置
将AppDir根目录下的io.github.accountname.repositoryname.desktop文件移动到usr/share/applications/目录中,保持文件名不变。调整后的AppDir结构应为:something.AppDir |__AppRun |__icon.png |__usr |__share |__applications |__io.github.accountname.repositoryname.desktop |__metainfo |__io.github.accountname.repositoryname.appdata.xml确认配置一致性
检查appdata.xml中的<launchable>标签内容,确保其desktop-id与移动后的desktop文件名完全一致,无拼写或大小写错误。重新验证并打包
先验证整个AppDir的AppStream元数据:appstreamcli validate --pedantic something.AppDir若验证通过,再执行appimagetool打包命令即可正常完成:
./appimagetool-x86_64.AppImage something.AppDir
额外提示
- 若仍有警告(如
content-rating-missing),可根据需求在appdata.xml中添加<content_rating>标签完善元数据,但此类警告不会导致打包失败; - 确保desktop文件本身符合freedesktop规范,可使用
desktop-file-validate工具单独验证desktop文件的合法性。
内容的提问来源于stack exchange,提问作者Sun Bear
相关产品推荐
相关产品推荐

