据我所知,Appimage 文件是一个包含所有资源的压缩应用程序,运行时会自动安装并执行。
我想要检查我下载的 Appimage 文件中的资源和文件,而无需实际运行 Appimage。
我怎样才能做到这一点?
答案1
不改变其扩展名:
因此,appimage 可以安装或提取。 那是:
要安装它们:(相当于执行这是 OP 想要避免的 —— 正因为如此,才需要注意 —— 正如 @Jasen 的评论中所说)
my.AppImage --appimage-mount
当示例中调用的应用程序被中断(例如,按 Ctrl+C、关闭终端等)时,AppImage 会被卸载。
注意:这仅适用于类型 2 AppImage。类型 1 AppImage 不提供任何自安装机制。要安装类型 1 AppImage,请使用
mount -o loop
提取它们:
挂载 AppImage 的另一种方法是提取其内容。这允许修改内容。生成的目录是有效的 AppDir,用户可以使用 再次从中创建 AppImage
appimagetool
。与挂载 AppImage 类似,有一个简单的命令行开关,无需外部工具即可提取 2 型 AppImage 的内容。只需使用参数 调用 AppImage 即可
--appimage-extract
。这将导致运行时创建一个名为 的新目录squashfs-root
,其中包含 AppImage 的 AppDir 规范的内容。类型 1 AppImage 需要已弃用的工具
AppImageExtract
来提取 AppImage 的内容。它的功能非常有限,并且需要 GUI 才能运行。它会在用户的桌面目录中创建一个新目录。
超级用户上有一个答案如何从 AppImage 中提取文件。
查看我的 appimages,我发现只有其中一部分可以安装gnome 磁盘映像装载程序。 还这里。
更改其扩展名:
并非所有 appimage 都具有完全相同的结构,但都是档案。 维基百科说:”1.0 版的 AppImage 是一个 ISO 9660 Rock Ridge 文件(可以选择 zisofs 压缩),其中包含最小的 AppDir 和微小的运行时。(2 版可能使用其他文件系统映像格式,如 SquashFS)“。
这样就可以提取了。这样你就可以检查文件了。
只需将扩展名从 更改AppImage
为我的文件滚轮存档管理器可以读取的存档扩展名(我使用、等进行了测试zip
)7z
,然后双击该文件即可显示文件滚轮中的内容:
当然,它们也可以被提取。“提取”文件管理器上下文菜单操作也可用于提取档案。(正如评论中所说,该unzip
命令报告了使用扩展名重命名文件的错误zip
,因此重命名为zip
本身并不是正确的选择,但它适用于诸如 之类的档案管理器file-roller
。)
答案2
根据 AppImage文档该--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 将处理所有这些。
答案3
- 用于
binwalk -e app
将appimage的所有部分提取到当前目录。 .squashfs
在输出中找到文件- 使用以下命令将 .squashfs 映像提取到当前目录
unsquashfs -li <file.squashfs>
这可以写成脚本
#!/bin/bash
appimage="$1"
temp=$(mktemp -d)
cd "$temp"
binwalk -e "$1"
find . -name "*.squashfs" -exec unsquashfs -li {} \;
echo "extracted $appimage files to $temp"
以下是一个示例执行
~/TMP/MAGICK2 $ ~/SCRIPTS/archive.appimage.extract ~/DOWNLOADS/APPS/magick
DECIMAL HEX DESCRIPTION
-------------------------------------------------------------------------------------------------------
0 0x0 ELF 64-bit LSB executable, AMD x86-64, version 1
30683 0x77DB LZMA compressed data, properties: 0x09, dictionary size: 131072 bytes, uncompressed size: 4105 bytes
157144 0x265D8 xz compressed data
204032 0x31D00 LZMA compressed data, properties: 0x0B, dictionary size: 16777216 bytes, uncompressed size: 33554432 bytes
204736 0x31FC0 LZMA compressed data, properties: 0x7E, dictionary size: 16777216 bytes, uncompressed size: 100663296 bytes
204928 0x32080 LZMA compressed data, properties: 0x8A, dictionary size: 16777216 bytes, uncompressed size: 100663296 bytes
204992 0x320C0 LZMA compressed data, properties: 0x90, dictionary size: 16777216 bytes, uncompressed size: 33554432 bytes
205312 0x32200 LZMA compressed data, properties: 0xC8, dictionary size: 16777216 bytes, uncompressed size: 50331648 bytes
WARNING: Extractor.execute failed to run '/opt/firmware-mod-kit/trunk/unsquashfs_all.sh '324C0.squashfs'': [Errno 2] No such file or directory
206016 0x324C0 Squashfs filesystem, little endian, version 4.0, compression: gzip, size: 29028995 bytes, 591 inodes, blocksize: 131072 bytes, created: Thu Jan 1 00:00:00 1970
Parallel unsquashfs: Using 4 processors
557 inodes (1101 blocks) to write
drwxr-xr-x root/root 118 2023-12-25 20:45 squashfs-root
-rw-r--r-- root/root 7993 2023-12-25 20:45 squashfs-root/.DirIcon
-rwxr-xr-x root/root 1237 2023-12-25 20:45 squashfs-root/AppRun
-rw-r--r-- root/root 194 2023-12-25 20:45 squashfs-root/imagemagick.desktop
[...]
-rw-r--r-- root/root 18826 2023-12-25 20:45 squashfs-root/usr/share/man/man1/mogrify.1
-rw-r--r-- root/root 8148 2023-12-25 20:45 squashfs-root/usr/share/man/man1/montage.1
-rw-r--r-- root/root 3390 2023-12-25 20:45 squashfs-root/usr/share/man/man1/stream.1
created 541 files
created 34 directories
created 16 symlinks
created 0 devices
created 0 fifos
extracted /home/ychaouche/DOWNLOADS/APPS/magick files to /tmp/tmp.6J1v63xax2
~/TMP/MAGICK2 $ cd /tmp/tmp.6J1v63xax2/
/tmp/tmp.6J1v63xax2 $ ls
total 195M
-rw-r--r-- 1 ychaouche ychaouche 0 Jan 7 15:23 31D00
-rw-r--r-- 1 ychaouche ychaouche 28M Jan 7 15:23 31D00.7z
-rw-r--r-- 1 ychaouche ychaouche 0 Jan 7 15:23 31FC0
-rw-r--r-- 1 ychaouche ychaouche 28M Jan 7 15:23 31FC0.7z
-rw-r--r-- 1 ychaouche ychaouche 0 Jan 7 15:23 32080
-rw-r--r-- 1 ychaouche ychaouche 28M Jan 7 15:23 32080.7z
-rw-r--r-- 1 ychaouche ychaouche 0 Jan 7 15:23 320C0
-rw-r--r-- 1 ychaouche ychaouche 28M Jan 7 15:23 320C0.7z
-rw-r--r-- 1 ychaouche ychaouche 0 Jan 7 15:23 32200
-rw-r--r-- 1 ychaouche ychaouche 28M Jan 7 15:23 32200.7z
-rw-r--r-- 1 ychaouche ychaouche 28M Jan 7 15:23 324C0.squashfs
-rw-r--r-- 1 ychaouche ychaouche 28M Jan 7 15:23 77DB.7z
drwxr-xr-x 3 ychaouche ychaouche 4.0K Dec 25 20:45 squashfs-root
/tmp/tmp.6J1v63xax2 -1- $ cd squashfs-root/
/tmp/tmp.6J1v63xax2/squashfs-root $ ls
total 20K
-rwxr-xr-x 1 ychaouche ychaouche 1.3K Dec 25 20:45 AppRun
-rw-r--r-- 1 ychaouche ychaouche 194 Dec 25 20:45 imagemagick.desktop
-rw-r--r-- 1 ychaouche ychaouche 7.9K Dec 25 20:45 imagemagick.png
drwxr-xr-x 7 ychaouche ychaouche 4.0K Dec 25 20:45 usr
/tmp/tmp.6J1v63xax2/squashfs-root $