pkg2appimageを使ってAppimageを作成する方法。

まずはpkg2appimageのインストール

$ git clone https://github.com/AppImage/AppImages.git appimages
  • Fedora 37ではこれ以外に、dpkgとlibmdが必要。
# dnf install dpkg libmd
  • ※はまりポイントとしてFedora提供のdpkgはバージョンが古い。
    • 対策としては http://ftp.debian.org/debian/pool/main/d/dpkg/ から dpkg_1.21.20_amd64.deb をダウンロードしてバイナリを使うとよい。
    • ln -s /usr/lib64/libbz2.so /usr/lib64/libbz2.so.1.

AppImage化したいアプリのymlを作成する

  • 例: shashlikをAppImage化したい場合。
app: shashlik # アプリ名

ingredients:
  packages: # ここにdebファイルを列挙する
  dist: kinetic
  sources: # debファイルの取得元
    - deb http://security.ubuntu.com/ubuntu kinetic-security main
    - deb http://security.ubuntu.com/ubuntu kinetic main
script:
  - cp -a /tmp/shashlik/opt .
  - touch shashlik.svg # FIXME
  - cat > shashlik.desktop <<\EOF
  - [Desktop Entry]
  - Type=Application
  - Terminal=true
  - Name=shashlik
  - Exec=./opt/shashlik/bin/shashlik-run com.atomicadd.tinylauncher "Desktop"
  - Categories=Development;
  - Icon=shashlik
  - EOF
  - # ADD AppRun
  - cat > ./AppRun <<\EOF
  - #!/bin/sh
  - HERE=$(dirname $(readlink -f "${0}"))
  - PKG_DIR=$HERE/opt
  - cd ${HERE}/opt
  - export LD_LIBRARY_PATH=${HERE}/usr/lib:${HERE}/usr/lib/x86_64-linux-gnu/:${HERE}/lib/x86_64-linux-gnu/:$LD_LIBRARY_PATH
  - ${HERE}/opt/shashlik/bin/shashlik-run com.atomicadd.tinylauncher "Desktop"
  - EOF
  - chmod a+x ./AppRun
  - # Set Version
  - echo "0.9.3" > ../VERSION
  - find ./opt/ -type f -exec sed -i -e "s@/opt/@././@g" {} \;

パッケージ化する

$ ARCH=x86_64 ./pkg2appimage shashlik.yml