Введение

Файл формата исполняемых файлов Linux AppImage (ранее известный как klik и PortableLinuxApps) — это формат с открытым исходным кодом для распространения портативного программного обеспечения на Linux. Он призван обеспечить возможность установки бинарного программного обеспечения независимо от конкретных дистрибутивов Linux, концепция, часто называемая упаковкой из исходного репозитория. В результате один и тот же AppImage можно установить и запустить в Ubuntu, Arch Linux и Red Hat Enterprise Linux без необходимости использования различных файлов. Он разработан как самодостаточный, не требующий прав root и независимый от базового дистрибутива Linux. Впервые выпущенный в 2004 году под названием klik, он постоянно развивался, затем был переименован в 2011 году в PortableLinuxApps, а позднее, в 2013 году, в AppImage. Версия 2 была выпущена в 2016 году.

История

Предшественник AppImage, klik, был разработан в 2004 году Саймоном Питером. Программное обеспечение клиентской части лицензировано по GNU GPL. Klik интегрировался с веб-браузерами на компьютере пользователя. Пользователи загружали и устанавливали программное обеспечение, вводя URL, начинающийся с klik://. Это загружало файл "рецепт" klik, который использовался для генерации файла cmg. В качестве основных компонентов в процесс генерации рецепта обычно подавались предварительно собранные deb-пакеты из репозиториев Debian Stable. Таким образом, один рецепт можно было использовать для распространения пакетов на широкий спектр платформ. С klik одновременно можно было запустить только восемь программ из-за ограничений монтирования сжатых образов с ядром Linux, если только не использовался FUSE. Файл перемонтировался каждый раз при запуске программы, что означало, что пользователь мог полностью удалить программу, просто удалив файл. Следующая версия, klik2, находилась в разработке и должна была нативно включить модуль ядра FUSE, но она так и не вышла за пределы стадии бета-тестирования. Около 2011 года проект klik был приостановлен, а веб-сайт перестал быть доступным. Примерно в то же время Саймон Питер начал проект-преемник под названием PortableLinuxApps с аналогичными целями. Технология была принята, например, репозиторием "portablelinuxgames.org", который предоставлял сотни преимущественно видеоигр с открытым исходным кодом. Около 2013 года программное обеспечение было переименовано из PortableLinuxApps в AppImage, а лицензия была изменена на лицензию MIT. AppImage – это формат, а AppImageKit – конкретная реализация с открытым исходным кодом. Разработка ведется в репозитории GitHub. В 2016 году был разработан проект версии 2 спецификации AppImage. Версия 2 не имеет ограничений по типу файловой системы (в реализации используется SquashFS). Она устраняет фиксированное смещение, определяющее начало образа файловой системы в файле, и позволяет встраивать цифровые подписи непосредственно в AppImage, а не в отдельный файл.

Дизайн

AppImage стремится быть системой развертывания приложений для Linux со следующими задачами: простота, двоичная совместимость, переносимость, независимость от дистрибутива, отсутствие необходимости установки, отсутствие прав root и сохранение исходной операционной системы без изменений. Благодаря этому AppImage не устанавливает программное обеспечение, размещая исполняемые файлы в различных директориях. Вместо этого файл сам по себе является образом файловой системы. При запуске файл монтируется с использованием FUSE. AppImage разработан, чтобы быть проще в использовании, чем традиционные форматы установки, такие как Deb и RPM, поскольку не требует изменения операционной системы или пользовательской среды. Каждый файл самодостаточен; он включает в себя все библиотеки, от которых зависит приложение, и которые отсутствуют в целевой системе. AppImage версии 1.0 представляет собой файл ISO 9660 Rock Ridge (который может быть опционально сжат с помощью zisofs), содержащий минимальный AppDir и среду выполнения. AppImage позволяет встраивать цифровые подписи, которые необходимо проверять отдельно. Формат не требует обязательной валидации подписей, а лишь допускает их включение. AppImage не обеспечивает принудительную изоляцию (sandboxing), но отдельные приложения могут использовать её.

Прием и использование

В 2007 году Klik послужил вдохновением для проекта glick Александра Ларссона, предшественника Flatpak. В 2015 году Линус Торвальдс, создатель ядра Linux, сказал: «Это просто здорово. Я наконец-то попробовал версию Subsurface в формате "AppImage", и она действительно "просто работает"». Марк Шаттлворт отметил, что «AppImage обеспечивают довольно удобный опыт, и я восхищаюсь проделанной работой».