¿Cómo puedo extraer archivos de una AppImage?

¿Cómo puedo extraer archivos de una AppImage?

Pregunta sencilla, ¿cómo puedo extraer archivos de una AppImage?

GUI, CLI, no importa, siempre y cuando haga el trabajo.

Estoy usando openSUSE Tumbleweed si es importante

Respuesta1

Primero, mire si su archivo AppImage está usando la versión más reciente de su formato interno:

/path/to/your.AppImage --appimage-help

Si ve la siguiente línea en el resultado:

--appimage-extract              Extract content from embedded filesystem image

Puedes concluir tú mismo cómo proceder. En este caso tienes un (más nuevo)tipo 2Formato AppImage frente a ti. (La parte 'ruta' del comando puede ser relativa o absoluta).

Segundo, si el primer comando no funcionó, puede utilizar una herramienta auxiliar. Sin embargo, necesitas privilegios sudo/root para esto:descargarappimagetool(que por supuesto está disponible como AppImage). Hazlo ejecutable y ejecuta:

/path/to/appimagetool-x86_64.AppImage --list /path/to/your.AppImage

Esto debería darle una lista de todos los archivos y sus rutas (relativas) incrustadas entu.AppImage. Extraertu.AppImageen un directorio llamado y ubicado en/ruta/a/algúndir, correr

mkdir /path/to/somedir
/path/to/appimagetool-x86_64.AppImage /path/to/your.AppImage /path/to/somedir

Tercero, también puedes montar AppImages (tipo 1 y tipo 2) sin la herramienta 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.
    

Consejo para los 'paranoicos':Si no desea confiar en AppImage, es preferible el tercer método. Porque ejecutar (para AppImages de tipo 2) the.AppImage --appimage-extracto significa the.AppImage --appimage-mountque the.AppImage --appimage-offseten realidad estás ejecutando una AppImage (aunque no su contenido).

Actualizar:

Para responder la pregunta de @jayarjo en el comentario a continuación (¿Cómo volver a empaquetar AppImage después de las modificaciones?):

  1. Puedes usarherramienta de imagen de aplicaciónno solo para extraer una AppImage existente en un AppDir. También puede usarlo para volver a empaquetar AppDir (posiblemente después de algunos cambios) en una AppImage (modificada).

  2. Solo corre

     appimagetool -v /path/to/AppDir
    

    Observe la salida del comando (detallada por-v) para la ubicación y el nombre de la AppImage recién creada. Eso es todo.

Respuesta2

cambiar el nombre de la extensión a .7z

$ mv file.AppImage file.7z

extraer con file-roller

$ file-roller --extract-here file.7z 

Probado en Linux Mint.

Respuesta3

Solo cambio el nombre con clic derecho, ejemplo:

comprimir-pdf-v0.1-x86_64.AppImage

a:

comprimir-pdf-v0.1-x86_64.zip

luego haga clic derecho

"Extraer aqui"

y trabajando

extraer todos los archivos dentro en una carpeta

Respuesta4

Según la respuesta aquí, creé este script bash simple. Pero nunca encontré una AppImage que pudiera extraer con un dispositivo de bucle. EDITAR: Acabo de hacer: "wxHexEditor"

Aquí:

#!/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

información relacionada