Como posso extrair arquivos de um AppImage?

Como posso extrair arquivos de um AppImage?

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-extractou significa the.AppImage --appimage-mountque the.AppImage --appimage-offsetvocê 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?):

  1. 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).

  2. 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

informação relacionada