简单问题,如何从AppImage中提取文件?
无论是图形界面还是命令行界面都可以,只要能完成任务就行。 如果有关系的话,我正在使用openSUSE Tumbleweed
无论是图形界面还是命令行界面都可以,只要能完成任务就行。 如果有关系的话,我正在使用openSUSE Tumbleweed
/path/to/your.AppImage --appimage-help
--appimage-extract Extract content from embedded filesystem image
appimagetool
(当然也可以作为一个 AppImage 文件提供)。将其设置为可执行并运行:/path/to/appimagetool-x86_64.AppImage --list /path/to/your.AppImage
mkdir /path/to/somedir
/path/to/appimagetool-x86_64.AppImage /path/to/your.AppImage /path/to/somedir
类型1:
mkdir mountpoint
sudo mount -o loop my.AppImage mountpoint/
# 现在您可以检查内容了
# 您还可以将内容复制到硬盘的可写位置
sudo umount mountpoint/
# 不要忘记卸载步骤!
# 如果忘记了,系统可能会出现意外行为。
类型2:
mkdir mountpoint
my.AppImage --appimage-offset
123456 # 这只是一个示例输出
sudo mount my.AppImage mountpoint/ -o offset=123456
# 现在您可以检查内容了
sudo umount mountpoint/
# 不要忘记卸载步骤!
# 如果忘记了,系统可能会出现意外行为。
对于“多疑者”的提示:如果您不想信任AppImage,第三种方法更可取。因为运行(对于类型2的AppImages)the.AppImage --appimage-extract
或the.AppImage --appimage-mount
或the.AppImage --appimage-offset
意味着您实际上正在执行一个AppImage(尽管不是其内容)。
回答下面评论中@jayarjo的问题(如何在修改后重新打包AppImage?):
你不仅可以使用appimagetool将现有的AppImage提取到AppDir中,还可以使用它将(经过一些更改后的)AppDir重新打包成(修改后的)AppImage。
只需运行
appimagetool -v /path/to/AppDir
观察命令的输出(通过-v
参数使其详细显示),以获取新创建的AppImage的位置和名称。就是这样。
appimagetool -v /path/to/AppDir
”。通过命令的输出(由*-v
*使其详细显示),可以找到新创建的AppImage的位置。就是这样。 - Kurt Pfeifleappimagetool
会出现“尚未实现”的错误信息。 - Nemo$ mv file.AppImage file.7z
$ file-roller --extract-here file.7z
compress-pdf-v0.1-x86_64.AppImage
给:compress-pdf-v0.1-x86_64.zip
然后右键单击--appimage-extract
有时可能无法正常工作:
./your.AppImage --appimage-extract
mount
并不会。mkdir /tmp/mountpoint
sudo mount -o loop your.AppImage /tmp/mountpoint
#!/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
appimagetool
时,我遇到了同样的问题。问题是AppImage应用程序无法执行,因为出现了Exec格式错误
。readelf -h AppImageFile
命令的信息计算得出。请参见这里 ELF文件的大小。/tmp/appimagetool
中。 ELFSIZE=$(readelf -h /tmp/appimagetool)
START_OF_SECTION=$(echo $ELFSIZE | grep -oP "(?<=Start of section headers: )[0-9]+")
SECTION_SIZE=$(echo $ELFSIZE | grep -oP "(?<=Size of section headers: )[0-9]+")
SECTION_NO=$(echo $ELFSIZE | grep -oP "(?<=Number of section headers: )[0-9]+")
APPIMG_OFFSET=$(( $START_OF_SECTION + $SECTION_SIZE * $SECTION_NO ))
/usr/local/share/appimagetool
中,使用以下命令。unsquashfs -o $APPIMG_OFFSET -d /usr/local/share/appimagetool /tmp/appimagetool
ln -s /usr/local/share/appimagetool/AppRun /usr/local/bin/appimagetool