简单的问题,如何从 AppImage 中提取文件?
GUI、CLI,没关系,只要能完成工作就行。
如果有必要的话,我会使用 openSUSE Tumbleweed
答案1
第一的,看看你的 AppImage 文件是否使用其内部格式的最新版本:
/path/to/your.AppImage --appimage-help
如果您在输出中看到以下行:
--appimage-extract Extract content from embedded filesystem image
你可以自己决定如何继续。在这种情况下,你有一个(较新的)类型 2AppImage 格式。(命令的“路径”部分可以是相对的,也可以是绝对的。)
第二如果第一个命令不起作用,您可以使用辅助工具。但是,您需要 sudo/root 权限才能执行此操作:下载appimagetool
(当然,它也可以作为 AppImage 使用)。使其可执行并运行:
/path/to/appimagetool-x86_64.AppImage --list /path/to/your.AppImage
这将为您提供嵌入的所有文件及其(相对)路径的列表你的.AppImage。 提取你的.AppImage进入名为并位于的目录/路径/到/somedir, 跑步
mkdir /path/to/somedir
/path/to/appimagetool-x86_64.AppImage /path/to/your.AppImage /path/to/somedir
第三另外,您也可以不使用辅助工具来挂载 AppImage(类型 1 以及类型 2):
第 1 类:
mkdir mountpoint sudo mount -o loop my.AppImage mountpoint/ # You can now inspect the contents # You can now also copy the contents to a writable location of your hard disk sudo umount mountpoint/ # Do not forget the umount step! # If you do forget it, your system may exhibit unwanted behavior.
类型 2:
mkdir mountpoint my.AppImage --appimage-offset 123456 # This is just an example output sudo mount my.AppImage mountpoint/ -o offset=123456 # you can now inspect the contents sudo umount mountpoint/ # Do not forget the umount step! # If you do forget it, your system may exhibit unwanted behavior.
对“偏执狂”的提示:如果您不想信任 AppImage,则第三种方法更可取。因为运行(对于类型 2 AppImage)the.AppImage --appimage-extract
或the.AppImage --appimage-mount
或the.AppImage --appimage-offset
意味着您实际上正在执行 AppImage(但不是其内容)。
更新:
回答下面评论中@jayarjo 的问题(修改后如何重新打包AppImage?):
您可以使用图像处理工具不仅仅是将现有的 AppImage 提取到 AppDir 中。您还可以使用它来将 AppDir(可能在进行一些更改后)重新打包回(修改后的)AppImage。
赶紧跑
appimagetool -v /path/to/AppDir
观察命令的输出(通过
-v
) 作为新创建的 AppImage 的位置和名称。就这样。
答案2
将扩展名重命名为 .7z
$ mv file.AppImage file.7z
使用 file-roller 提取
$ file-roller --extract-here file.7z
在 Linux Mint 上测试。
答案3
我仅使用右键单击重命名,例如:
压缩-pdf-v0.1-x86_64.AppImage
到:
压缩-pdf-v0.1-x86_64.zip
然后右击
“从这里提取”
和工作
将所有文件解压到一个文件夹中
答案4
根据此处的答案,我创建了这个简单的 bash 脚本。但我从未遇到过可以用循环设备提取的 AppImage。编辑:刚刚做了:“wxHexEditor”
这里:
#!/bin/bash
APP="$2"
UNPK="$(echo $APP | sed 's/\.AppImage//')"
case "$1" in
-a)
chmod +x $APP;
./$APP --appimage-extract
mv squashfs-root $UNPK
;;
-b)
mkdir -p /tmp/$UNPK
sudo mount -o loop $APP /tmp/$UNPK &>/dev/null
mkdir -p ~/Desktop/$UNPK
cp -R /tmp/$UNPK/* ~/Desktop/$UNPK &>/dev/null
sudo umount /tmp/$UNPK
;;
*)
echo
echo " Usage: appunpack [option] AppImageFile"
echo
echo " Options: -a Unpack using --appimage-extract"
echo " -b Unpack using a loop device"
;;
esac