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

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

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

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

関係ないかもしれませんが、私はopenSUSE Tumbleweedを使用しています

答え1

初めAppImage ファイルの内部形式が最新バージョンであるかどうかを確認します。

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

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

--appimage-extract              Extract content from embedded filesystem image

どのように進めるかは自分で決めることができます。この場合、(新しい)タイプ2AppImage 形式が目の前に表示されます。(コマンドの「パス」部分は相対パスでも絶対パスでもかまいません。)

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

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

これにより、埋め込まれているすべてのファイルとその(相対)パスのリストが表示されます。あなたのAppImage抽出するあなたのAppImageという名前のディレクトリに保存します。/path/to/somedir、 走る

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

三番目ヘルパー ツールなしでも AppImages (タイプ 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.
    

「偏執狂」へのヒント:AppImage を信頼したくない場合は、3 番目の方法が推奨されます。これは、(タイプ 2 の AppImage の場合)the.AppImage --appimage-extractまたはを実行すると、実際に AppImage を実行している (ただし、その内容ではない) ことを意味するためですthe.AppImage --appimage-mountthe.AppImage --appimage-offset

アップデート:

下のコメント欄の@jayarjoさんの質問に答えます(変更後に AppImage を再パッケージ化するにはどうすればよいですか?):

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

  2. ただ走れ

     appimagetool -v /path/to/AppDir
    

    コマンドの出力を監視する(-v) に、新しく作成された AppImage の場所と名前を入力します。これで完了です。

答え2

拡張子を .7z に変更します

$ mv file.AppImage file.7z

ファイルローラーで抽出する

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

Linux Mint でテスト済み。

答え3

名前の変更は右クリックのみで行います。例:

圧縮PDF-v0.1-x86_64.AppImage

に:

圧縮pdf-v0.1-x86_64.zip

右クリック

"ここで抽出"

そして働く

フォルダ内のすべてのファイルを1つのフォルダに抽出します

答え4

ここでの回答に基づいて、この簡単な 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

関連情報