Package once and run everywhere.
No need to install, no system libraries or system preferences are altered
Один из ключевых моментов - отсутствие централизации, предполагаемая дистрибуция - качай откуда хочешь. Нет коммерческого стора, как у Snap, нет контролирующей и потенциально ограничивающей сертификации, как у Flatpak - передача и распространение AppImage никем не должна ограничиваться. Для меня это приоритетный формат, так как в нынешнем мире полагаться, что ружье не стрельнет уже не приходится.
Итак: нет DRM, нет сертификатов, нет "владельца", нет сторов и есть поддержка на всех актуальных системах.
Соберем простейшую portable программу:
mkdir -p Hello.AppDir/usr/bin
touch Hello.AppDir/usr/bin/hello
внутри shell-скрипт (а должна быть ваша программа)
#!/bin/sh
echo "Hello from AppImage!"Делаем исполняемым
chmod +x Hello.AppDir/usr/bin/hello
Теперь создадим Entrypoint
Hello.AppDir/AppRun#!/bin/sh
HERE="$(dirname "$(readlink -f "${0}")")"
exec "${HERE}/usr/bin/hello" "$@"AppRun тоже делаем исполняемым
chmod +x Hello.AppDir/AppRun
Теперь файл описания
Hello.AppDir/hello.desktop[Desktop Entry]
Name=Hello
Exec=AppRun
Icon=utilities-terminal
Type=Application
Categories=Utility;Собираем образ
appimagetool Hello.AppDir Hello-x86_64.AppImage
chmod +x Hello-x86_64.AppImage
Можно запускать и распространять:
./Hello-x86_64.AppImage
Hello from AppImage!
Извлечь содержимое обратно
./Hello-x86_64.AppImage --appimage-extract