我如何检查 Appimage 里面的文件?

我如何检查 Appimage 里面的文件?

据我所知,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为我的文件滚轮存档管理器可以读取的存档扩展名(我使用、等进行了测试zip7z,然后双击该文件即可显示文件滚轮中的内容:

在此处输入图片描述

当然,它们也可以被提取。“提取”文件管理器上下文菜单操作也可用于提取档案。(正如评论中所说,该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

  1. 用于binwalk -e app将appimage的所有部分提取到当前目录。
  2. .squashfs在输出中找到文件
  3. 使用以下命令将 .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 $

相关内容