我正在尝试使用最新版本的appImage-builder,因为我的应用程序的appimage使用旧版本的appImage-builder不再运行在ubuntu 22.04上。所以我得到命令,试着看看它是否能与新的appImage-builder一起工作。
目前(2022年6月),只有基于ubuntu 18.04的1.0以下版本在docker上可用(我们以前使用docker来构建appimage)。
新版本可通过github (https://github.com/AppImageCrafters/appimage-builder/releases)获得。然而,我似乎无法执行:
appimage-builder --generate
或
appimage-builder --recipe AppImageBuilder.yml
是否有关于如何正确使用。appimage版本的appImage-builder的可用文档?所有我能找到https://appimage-builder.readthedocs.io/en/latest/似乎是指docker版本或appImage-builder的手动构建版本。
根据您得到的错误消息,这里可能有几个问题。
如果你得到一个与FUSE相关的错误,那么你需要安装libfuse2
包与apt install libfuse2
。AppImages依赖于libfuse2,但Ubuntu从22.04年起就不再包括它了,转而支持libfuse3。
如果你得到一个与"file not found"相关的错误,那么可能是你没有安装AppImageLauncher。遗憾的是,对于类型2的AppImages,设计决定是在可执行文件的偏移量8处用3个神奇字节修改可执行文件的ELF头。这意味着Linux链接器将不会运行该文件。AppImageLauncher实际上将文件复制到一个临时目录,并将幻数归零,以便能够执行它。
调试此类问题的一个很好的起点是运行strace
命令,它将让您看到哪个系统调用可能导致错误。请记住,如果您尝试执行一个文件并得到File not found
,这可能意味着在系统上找不到文件指定的链接器,或者ELF头无效。您还可以通过直接使用链接器来运行可执行文件,这可能会给您更多提示。例如:/lib64/ld-linux-x86-64.so.2 <NAME-OF-YOUR-EXECUTABLE>
.