web-dev-qa-db-ja.com

AppImageからファイルを抽出するにはどうすればよいですか?

簡単な質問、AppImageからファイルを抽出するにはどうすればよいですか?

GUI、CLI、それが仕事を完了する限り、それは問題ではありません。

必要に応じてopenSUSE Tumbleweedを使用しています

6
Sekhemty

まず、AppImageファイルが最新バージョンの内部形式を使用しているかどうかを確認します。

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

出力に次の行が表示された場合:

--appimage-extract              Extract content from embedded filesystem image

続行する方法を自分で結論付けることができます。この場合、(新しい)タイプ2 AppImageフォーマットが目の前にあります(コマンドの「パス」部分は相対または絶対。)

2番目、最初のコマンドが機能しなかった場合は、ヘルパーツールを使用できます。ただし、これにはSudo/root特権が必要です:download appimagetool(もちろん、これはAppImageとして利用できます)。実行可能にして実行します。

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

これにより、your.AppImageに埋め込まれたすべてのファイルとその(相対)パスのリストが表示されます。 your.AppImage/ path/to/somedirという名前のディレクトリに抽出するには、次のコマンドを実行します。

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

3番目、ヘルパーツールを使用せずにAppImage(タイプ1とタイプ2)をマウントすることもできます。

  • タイプ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.
    
  • タイプ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.
    

'paranoid'のヒント:AppImageを信頼したくない場合は、3番目の方法が好ましい。実行中(タイプ2 AppImagesの場合)the.AppImage --appimage-extractまたはthe.AppImage --appimage-mountまたはthe.AppImage --appimage-offsetは、実際にはAppImageを実行していることを意味します(ただし、そのコンテンツは実行しません)。

更新:

以下のコメントで@jayarjoの質問に回答するには(変更後にAppImageを再パッケージ化する方法):

  1. appimagetoolを使用して、既存のAppImageをAppDirに抽出するだけではありません。これを使用して、AppDir(おそらく変更後)を(変更された)AppImageに再パッケージ化することもできます。

  2. とにかく走れ

     appimagetool -v /path/to/AppDir
    

    コマンドの出力を見る(で詳細に作成)-v)は、新しく作成されたAppImageの場所と名前です。それでおしまい。

4
Kurt Pfeifle

ここでの答えに基づいて、この単純なbashスクリプトを作成しました。しかし、ループデバイスで抽出できるAppImageに遭遇したことはありません。編集:ちょうどやった:「wxHexEditor」

ここに:

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

--appimage-extractが機能しない場合があります:

./your.AppImage --appimage-extract

ただし、mount

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