web-dev-qa-db-fra.com

Comment puis-je extraire des fichiers d'une apparition?

Question simple, comment puis-je extraire des fichiers d'une apparition?

Gui, CLI, peu importe, tant qu'il fait le travail.

J'utilise OpenSUSE Tumbleweed si cela importe

6
Sekhemty

Premier , regardez si votre fichier Appimage utilise la dernière version de son format interne:

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

Si vous voyez la ligne suivante dans la sortie:

--appimage-extract              Extract content from embedded filesystem image

vous pouvez vous conclure comment procéder. Dans ce cas, vous avez un (nouveau) type 2 Format Appimage devant vous. (La partie "chemin" de la commande peut être relative ou absolue.)

Deuxièmement , si la première commande n'a pas fonctionné, vous pouvez utiliser un outil d'assistance. Cependant, vous avez besoin de privilèges sudo/root pour ce: télécharger appimagetool (quel cours est disponible en tant qu'appimage). Faites-le exécuter et exécuter:

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

Cela devrait vous donner une liste de tous les fichiers et de leurs chemins (relatifs) intégrés au votre.AppImage. À extraire votre.AppImage dans un répertoire nommé et situé à /chemin/à/somedir, exécution

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

troisième , vous pouvez monter des Appimages (type 1 ainsi que type 2) sans l'outil d'assistance également:

  • Type 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.
    
  • Type 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.
    

Conseil pour le "Paranoid": Si vous ne voulez pas faire confiance à l'apparition, la troisième méthode est préférable. Parce que courir (pour les apparences de type 2) the.AppImage --appimage-extract ou alors the.AppImage --appimage-mount ou alors the.AppImage --appimage-offset signifie que vous exécutez réellement une apparition (bien que ce n'est pas son contenu).

Mettre à jour:

Répondre à la question de @jayarjo dans le commentaire ci-dessous ( Comment rééditer l'apparition après modification ?):

  1. Vous pouvez utiliser Appimagetool Pas seulement pour extraire une apparence existante dans un appdir. Vous pouvez l'utiliser pour relancer également l'appdir (éventuellement après quelques modifications) dans une apparition (modifiée).

  2. Vient de courir

     appimagetool -v /path/to/AppDir
    

    Regarder la sortie de la commande (fabriqué Verbose par -v) Pour l'emplacement et le nom de l'Appimage nouvellement créé. C'est ça.

4
Kurt Pfeifle

Basé sur la réponse ici, j'ai créé ce script bash simple. Mais je n'ai jamais rencontré une apparition que je pouvais extraire avec un appareil de boucle. EDIT: JUSTE: "WXHEXEDITOR"

Ici:

#!/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
0
Mach Seven

Le --appimage-extract pourrait ne pas fonctionner parfois:

./your.AppImage --appimage-extract

Cependant, mount fait

mkdir /tmp/mountpoint
Sudo mount -o loop your.AppImage /tmp/mountpoint
0
caot