我想检查一下我下载的Appimage文件中的资源和文件,而不实际运行Appimage。
我该如何做到这一点?
因此,一个AppImage可以被挂载或提取。也就是说:
要挂载它们:(相当于执行它们,这是OP想要避免的 - 正因为如此,需要注意 - 如@Jasen在评论中所述)
my.AppImage --appimage-mount
The AppImage is unmounted when the application called in the example is interrupted (e.g., by pressing Ctrl+C, closing the terminal etc.).
Note: This is only available for type 2 AppImages. Type 1 AppImages do not provide any self-mounting mechanism. To mount type 1 AppImages, use
mount -o loop
提取它们的方法:
另一种挂载AppImage的替代方法是提取其内容。
这样可以修改内容。生成的目录是一个有效的AppDir,用户可以再次使用
appimagetool
从中创建AppImage。类似于挂载AppImage,有一个简单的命令行开关可以无需外部工具来提取类型2的AppImage的内容。只需调用带有参数
--appimage-extract
的AppImage。这将导致运行时创建一个名为squashfs-root
的新目录,其中包含AppImage的AppDir规范的内容。类型1的AppImage需要使用已弃用的工具
AppImageExtract
来提取其内容。它在功能上非常有限,需要图形界面才能运行。它会在用户的桌面目录下创建一个新目录。
在superuser上有一个回答如何从AppImage中提取文件。
看着我的应用图像,我发现只有其中一些可以使用gnome-disk-image-mounter挂载。还有这里。并非所有的AppImage都具有完全相同的结构,但它们都是存档文件。根据维基百科的说法:“版本1.0的AppImage是一个ISO 9660 Rock Ridge文件(可选择进行zisofs压缩),其中包含一个最小的AppDir和一个微小的运行时环境。(版本2可能使用其他文件系统镜像格式,如SquashFS)”。
因此,可以进行提取。通过这种方式,您可以检查文件。
只需将扩展名从AppImage
更改为我的文件管理器file-roller可以读取的存档扩展名(我已经测试过zip
、7z
等),然后双击该文件即可在file-roller中显示其内容:
test.zip
并运行unzip test.zip
,但是我收到了以下消息:未找到中央目录签名。这个文件要么不是一个zip文件,要么它是一个多部分存档的一部分。在后一种情况下,中央目录和zip文件注释将在此存档的最后一个磁盘上找到。 注意:test.zip可能是一个普通的可执行文件,而不是一个存档文件。
- Wildcardunzip
工具则是以扩展名为导向,并寻找更多与扩展名相关的属性来进行操作。因此,可以使用文件管理器的提取操作或者file-roller -f
来代替unzip
。请参阅file-roller --help
获取详细信息。 - cipricus--appimage-mount
选项允许您挂载和检查内容。./Joplin.AppImage --appimage-mount /tmp/mount_myXXXX
./whatever.AppImage --help
来显示,但要查看AppImage特定选项,您可以运行:./whatever.AppImage --appimage-help
AppImage options:
...
--appimage-mount Mount embedded filesystem image and print
mount point and wait for kill with Ctrl-C
--appimage-extract
来进行解压。 - cipricus
mount
命令,但即使如此,你仍需要从文件中提取图像偏移量。他们的错误跟踪器中已经记录了一个关于创建能够自动挂载的外部命令的问题,编号为bug #830。 - IMSoP