Pergunta simples, como posso extrair arquivos de um AppImage?
GUI, CLI, não importa, desde que faça o trabalho.
Estou usando o openSUSE Tumbleweed se for importante
Responder1
Primeiro, verifique se o seu arquivo AppImage está usando a versão mais recente de seu formato interno:
/path/to/your.AppImage --appimage-help
Se você vir a seguinte linha na saída:
--appimage-extract Extract content from embedded filesystem image
você mesmo pode concluir como proceder. Neste caso você tem um (mais recente)tipo 2Formato AppImage na sua frente. (A parte 'caminho' do comando pode ser relativa ou absoluta.)
Segundo, se o primeiro comando não funcionou, você pode usar uma ferramenta auxiliar. No entanto, você precisa de privilégios sudo/root para isso:downloadappimagetool
(que, claro, está disponível como AppImage). Torne-o executável e execute:
/path/to/appimagetool-x86_64.AppImage --list /path/to/your.AppImage
Isso deve fornecer uma lista de todos os arquivos e seus caminhos (relativos) incorporados noseu.AppImage. Extrairseu.AppImageem um diretório chamado e localizado em/caminho/para/algumdir, correr
mkdir /path/to/somedir
/path/to/appimagetool-x86_64.AppImage /path/to/your.AppImage /path/to/somedir
Terceiro, você também pode montar AppImages (tipo 1 e tipo 2) sem a ferramenta auxiliar:
Tipo 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.
Tipo 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.
Dica para o 'paranóico':Se você não quiser confiar no AppImage, o terceiro método é preferível. Porque executar (para AppImages tipo 2) the.AppImage --appimage-extract
ou significa the.AppImage --appimage-mount
que the.AppImage --appimage-offset
você está realmente executando um AppImage (embora não seu conteúdo).
Atualizar:
Para responder à pergunta de @jayarjo no comentário abaixo (como reembalar o AppImage após modificações?):
Você pode usarferramenta de imagem do aplicativonão apenas para extrair um AppImage existente em um AppDir. Você também pode usá-lo para reempacotar o AppDir (possivelmente após algumas alterações) de volta em um AppImage (modificado).
Apenas corra
appimagetool -v /path/to/AppDir
Observe a saída do comando (tornado detalhado por
-v
) para o local e o nome do AppImage recém-criado. É isso.
Responder2
renomear extensão para .7z
$ mv file.AppImage file.7z
extrair com rolo de arquivo
$ file-roller --extract-here file.7z
Testado em Linux Mint.
Responder3
Eu só renomeio com clique direito, exemplo:
compress-pdf-v0.1-x86_64.AppImage
para:
compactar-pdf-v0.1-x86_64.zip
então clique com o botão direito
"Extrair aqui"
e trabalhando
extraia todos os arquivos dentro de uma pasta
Responder4
Com base na resposta aqui, criei este script bash simples. Mas nunca encontrei um AppImage que pudesse extrair com um dispositivo de loop. EDIT: Acabei de fazer: "wxHexEditor"
Aqui:
#!/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