Comments 5
Сделай видео с сборки AppImage. Бери приложение с GitHub и собери на видео приложение в формате AppImage, это будет лучше и проще
Про зависимости не очень понятно.
Я правильно понял, что если я установлю несколько AppImage-й с разными приложениями, каждое из которых требует, к примеру, Qt, то у меня будет несколько копий Qt?
И где граница между внешними зависимостями, которые надо положить в AppImage, и системными библиотеками, которые не надо туда класть?
С libc понятно, а, скажем, GStreamer? Или та же Qt для KDE? Они очень даже тянут на звание системных.
Да, всё верно — каждая AppImage содержит собственный набор библиотек .so
, включая Qt, если приложение её требует. Это нормальная практика: Qt-библиотеки занимают не так много места, зато гарантируют, что приложение запустится одинаково на любой системе.
Если исключить Qt из пакета, то при запуске AppImage динамический линковщик будет искать её в системных путях (/usr/lib
, /lib
и т.д.). Поэтому можно не включать библиотеку, если вы уверены, что нужная версия есть в целевой системе, но это делает образ менее переносимым.
AppImage-сообщество и проект linuxdeploy
придерживаются следующего практического правила:
Не включаются системные библиотеки, которые гарантированно присутствуют во всех дистрибутивах Linux (так называемые base system libraries).
Это, например:libc.so.6, libm.so.6, libpthread.so.0, libdl.so.2, librt.so.1, libgcc_s.so.1, libstdc++.so.6, libX11.so.6, libXext.so.6
Включаются внешние зависимости, которые не входят в стандартную базу Linux или могут отличаться между дистрибутивами и версиями.
Это, например:Qt*, GStreamer, OpenCV, SDL2, FFMPEG, libpng, libjpeg, libtiff
Такие библиотеки считаются «частью приложения» и должны поставляться вместе с ним.
Сборка AppImage: Пошаговое руководство с готовыми скриптами