AppImage это проект с открытым исходным кодом, созданный для того, чтобы обеспечить простой способ распространения и переноса программного обеспечения.
Первый проект был выпущен в 2004 году под названием Klik, он постоянно развивался и переименовался в 2011 году в PortableLinuxApps, а затем в 2013 — в AppImage.
AppImage является как бы ISO образами со всеми необходимыми библиотеками и зависимостями внутри одного файла, получается одна программа в одном файле. AppImage может работать на любом рабочем столе Linux дистрибутива как портативное приложение.
Для запуска приложения формата AppImage не нужно ничего устанавливать, достаточно скачать программу, а благодаря тому, что все библиотеки находятся внутри образа, ее можно использовать в большинстве дистрибутивов Linux.
Перед тем как скачать AppImage, необходимо знать архитектуру вашего процессора.
Для этого выполните команду:
$ arch
или
$ uname -m
В результате вы должны увидеть что-то вроде «i686», «x86_64» или «armv7»:
Программы из Windows на Linux. Wine для начинающих
- i686 (или аналогичный) — 32-битный процессор Intel / AMD (на старых машинах).
- x86_64 (или аналогичный) — 64-битный процессор Intel / AMD (современные портативные и настольные компьютеры).
- armv7 (или более поздней версии) — ARM процессор (телефоны и планшеты, Raspberry Pi 2/3 работает на Ubuntu Mate, некоторые Chromebooks. Как правило, 32 бит в настоящее время).
Теперь вы можете загрузить программу, которая наилучшим образом соответствует вашей архитектуре и операционной системе со страницы разработчика или с хранилища в проекте Jfrog: https://bintray.com/probono/AppImages
В хранилище выберите программу для скачивания, затем перейдите на вкладку Files и укажите подходящую архитектуру и версию программы.
Итак, мы скачали программу в формате AppImage: Audacity-2.1.2.glibc2.15-x86_64.AppImage
Первый способ запуска программы формата AppImage
Запуск программы формата AppImage можно произвести через терминал с помощью команды:
$ chmod a+x Subsurface*.AppImage $ ./Subsurface*.AppImage
В нашем случае запуск программы происходит командой:
$ chmod a+x ~/Загрузки/Audacity-2.1.2.glibc2.15-x86_64.AppImage $ ~/Загрузки/Audacity-2.1.2.glibc2.15-x86_64.AppImage
Второй способ запуска программы формата AppImage
На программу с расширением AppImage щелкаем правой кнопкой мыши и в открывшемся окне переходим в раздел права.
Ставим птичку Разрешить запуск этого файла в качестве программы.
Закрываем окно. Запускаем программу стандартно двумя щелчками левой кнопкой мыши.
Debian
- Программа GDebi
- Установка программы GoogleEarth в Linux Debian 8.3
- Распаковка RAR архива в Debian 8.3 программой P7Zip
- Браузер Pale Moon. Установка в Debian 8.3
- 4K Video Downloader — простой загрузчик видео
- Установка браузера SRWare Iron на Debian 8.5
- В Debian 8.3 внезапно пропал звук
- Установка приложения Parom.TV в Debian 8.5
- Установка двухпанельного файлового менеджера Sunflower в Debian 8.5
- Установка калькулятора в Debian 8.5
- Установка Oracle Java 7 (JDK7 и JRE7) в Debian
- Как узнать какую версию Debian или Ubuntu (Xubuntu) вы используете
- Стабильный интернет браузер Vivaldi 1.4 и установка его на Debian 8.5
- Установка Oracle Java 8 (JDK7 и JRE7) в Debian 8.5
- Установка приложения MiniTube в Debian 8.5
- Установка VirtualBox 5.1 в Debian 8.5
- Установка WINE на Debian 8
- Установка PlayOnLinux 4.2.10 программы на Debian 8.5
- Удаление Wine и программ из Wine
- Установка Sublime Text 3 в Debian 8.5 Linux
- Торрент-клиент в Debian 8
- Whisker Menu — альтернативный модуль меню для окружения рабочего стола XFCE
- Настройка времени, часового пояса и синхронизация в Debian 8.6
- Как добавить дополнительные репозитории в Debian 8
- Настройка почтового клиента Claws Mail
- Установка Debian 8 Jessie
- Русификация приложений Debian 8
- Подключение принтера HP 1320 в Debian 8
- Xarchiver архиватор в Debian 8
- Где хранить логины и пароли. Две популярные программы: LastPass и KeePass
- Векторная графика. Inkscape — бесплатный аналог Corel Draw и Adobe Illustrator
- Blender 2.78. Компьютерная графика и анимация
- Что такое AppImage и как запустить файл с таким расширением
- Установка конфигурации Linux + Apache + MySQL + PHP (LAMP) на Debian 8.8
- Настройка sources.list в Debian 9 (Stretch)
- Как установить PyCharm на Debian 10
- Установка Python-3.8 или Python-3.9 на Debian 10
- Резервная копия: TimeShift в Debian 10
Источник: opencentr.ru
Портативные приложения в Linux
В одной из предыдущих заметок мы говорили о форматах установочных файлов в дистрибутивах Linux. Тогда же условились на том, что установка приложений в Linux ничем не отличается от того, что происходит в Windows и macOS. Но есть ли вариант приложений, который не зависит от пакетной базы дистрибутива и одинаково запускается на DEB или RPM-системах?
Устанавливаемые и портативные приложения
С устанавливаемыми приложениями мы встречаемся постоянно. Подразумевается, что мы скачали установочный файл, запустили его и программа «прописалась» в системе по определенным путям, хранится в конкретном каталоге. Если попробовать перенести папку с установленной программой на другой ПК, то существует вероятность того, что она не запустится.
Портативные приложения отличаются тем, что не зависят от системы и компьютера, на которых их запускают. Программа не создает связей с системными файлами и реестром. Такими приложениями часто пользуются те, кто постоянно в пути и возит с собой ноутбук или, например, системные администраторы, у которых под рукой всегда есть флэшка с набором portable-версий софта.
Формат портативных приложений для Windows или macOS не меняется, это все те же EXE и DMG. Давайте посмотрим, как обстоит дело в системах на базе ядра Linux.
AppImage
Формат разрабатывался в рамках проекта под названием Klik в 2004 году человеком по имени Симон Петер. Позже Klik переименовали в AppImage и это название он сохраняет до сих пор.
AppImage-файл является сжатой версией программы, внутри него программа запускается и выполняет все нужные процедуры. При этом она не размещает файлы по системным папкам и является полностью самодостаточной. Запустить AppImage-приложение очень просто: скачать, сделать исполняемым и запустить, дважды кликнув мышкой.
Интересным является тот факт, что проект AppImage повлиял на другого разработчика и тот начал делать формат, о котором пойдет речь дальше.
Flatpak
Алекс Ларсон вдохновился идеей Klik и в 2007 году представил миру собственный вариант формат исполняемых файлов в Linux под названием Glick. В последствие, его переименуют во Flatpak. Любой файл такого формата представляет собой замкнутый контейнер, внутри которого «живет» программа. Но при этом Flatpak нельзя в полной мере назвать портативным, так как не получится перенести его на флэшку и запустить на другом ПК. Преимуществом формата является универсальность в запуске на любом дистрибутиве без надобности заморачиваться с зависимостями.
Уже разработанные другими разработчиками приложения в формате Flatpak хранятся в хабе, откуда их можно скачать. Кроме того, установить Flatpak-приложения можно установить из терминала. Современные Linux-дистрибутивы (например, Fedora) имеют встроенную поддержку Flatpak.
Snappy
Разработкой этого формата занимается компания Canonical (разработчики Ubuntu). Потому ожидаемо Ubuntu стала испытательной площадкой для внедрения Snap-пакетов (с версии 22.04, например, браузер Firefox поставляется только в Snap-версии). Может не за горами тот момент, когда весь предустановленный в Ubuntu софт перейдет на Snappy.
Существующие версии программ в формате Snap доступны в Snap Store. Оттуда их можно скачать и установить, если в вашей системе имеется поддержка Snap.
Личный опыт
Для меня удобными в использовании формата остаются AppImage и Flatpak. Snap-пакеты я использую в случае крайней необходимости, так как мне не нравится агрессивный способ их продвижения компанией Canonical. Решение перевести Firefox полностью на Snap без возможности выбора для пользователя вызвало недовольство сообщество, кроме того, первое время после выхода версии 22.04 браузер запускался медленнее, чем его не Snap-вариант.
Чтобы определить удобный для себя формат портативных приложений в Linux нужно попробовать каждый из описанных выше. Если вы уже опытный пользователь, то напишите в комментариях используете ли портативные программы и в каком формате.
Ну и не забываем подписываться на канал, комментировать и ставить лайки! Обратная связь от аудитории важна для дальнейшего развития!
Источник: dzen.ru
AppImage: Portable-приложения для Linux систем
Listen to this article
Распространение приложений в линуксе — это боль. Причем в наше время цикл обновлений приложений все уменьшается и эта боль чувствуется все сильнее. В связи с этим появляются технологии вроде snap, flatpak, которые декларируют решение этих проблем. Некоторые дистрибутивы даже начинают довольно агрессивную политику по их внедрению. Однако, несмотря на то, что про сами эти технологии много говорят (и ещё больше жалуются), про то, как они работают написано довольно мало.
В мире windows победила идеология, где каждое приложение тащит свои зависимости с собой (за исключением совсем системных). Нередко можно видеть, что приложение кладет в свою папку какой-нибудь gl.dll, sqlite.dll и подобное.
В линуксовых дистрибутивах идеология немножко другая. Приложение — это конструктор из других более мелких программ или библиотек, устанавливаемых независимо друг от друга. Если разным приложениям требуется одна и та же зависимость, они её переиспользуют. Чтобы не устанавливать сотни пакетов зависимостей вручную, можно пользоваться пакетным менеджером, который сделает это за нас.
Такой подход имеет свои плюсы и минусы. Из плюсов:
- если какой-нибудь QT используется сотней приложений, то он будет установлен не 100 раз, а только 1.
- Если в каком-то пакете, например openssl, обнаружатся проблемы, то вы можете один раз обновить один пакет и вся система сразу будет пользоваться пропатченой версией, разработчикам конечных приложений не нужно делать вообще ничего.
- Это хорошо сочетается с идеологией линукса «программа должна делать одну вещь и делать её хорошо».
- Многообразие дистрибутивов и следовательно форматов пакетов. Для поддержки всех версий нужно прилагать огромное количество усилий. Посмотрите только на такие плашки, сам факт того, что они существуют, несколько пугает.
- А что делать, если двум приложениям требуются разные, несовместимые версии пакетов?
- А что делать если приложению нужен пакет, который не предоставляется дистрибутивом?
- А что делать авторам приложений, если они хотят выкатить новую фичу, но она опирается на версию другого пакета, которого ещё нет в каких-то дистрибутивах. Скорость инноваций сильно падает и в некоторых областях это очень критично.
- Если дистрибутив обновляется (а вместе с ним все пакеты), нужно проверять работоспособность приложения. При этом хочется верить, что ментейнеры у проекта ещё есть. И да, вам будут присылать баг репорты на старые версии приложения в старых дистрибутивах, то есть нужно ещё поддерживать старые версии продукта, нельзя просто сказать «это починено в новой версии, обновитесь»
- Возможность поправить баг и обновить пакет для всех — обоюдоострый меч. По причине того, что это иногда банально сложно — исправить что-то и сохранить все контракты (явные и неявные) вашей библиотеки. Вполне возможно своим «фиксом» автор пакета неявно создаст баг всем другим, кто от него зависит.
А ещё есть очень специфический тип приложений — игры. Их особенность в том, что они практически всегда closed source, после определенного времени вообще не обновляются, но при этом они активно используют железо, то есть им нужна серьезная поддержка со стороны ОС и драйверов. И как, спрашивается, нам можно запустить игру 10 летней давности на современном дистрибутиве, где все библиотеки уже уехали очень далеко?
В общем с распространением приложений в линуксе очень много проблем. Технологии приведенные в названии поста пытаются решить эти проблемы.
Приложения для Linux, которые работают где угодно
С сайта Portable Linux Apps можно загрузить приложения не требующие установки. Скачанные приложения необходимо просто запустить (перед этим дав приложению права на исполнение).
Среди приложений, на сайте проекта доступны: плееры, браузеры, торрент-клиенты, интернет-мессенжеры, твиттер-клиенты, RSS-клиенты, графические редакторы и многое другое…
Приложения можно держать в любом каталоге или на флешке и запускать когда требуется.
Как запустить AppImage?
Чтобы запустить AppImage, просто:
Сделать его исполняемым
$ chmod a+x Subsurface*.AppImage
$ ./Subsurface*.AppImage
Это было легко, не так ли?
Ключевая идея формата AppImage — одно приложение = один файл . Каждый AppImage содержит приложение и все файлы, необходимые приложению для запуска. Другими словами, каждый AppImage не имеет никаких зависимостей, кроме тех, которые включены в целевые базовые операционные системы.
Формат AppImage идеально подходит для исходной упаковки , это означает, что вы получаете программное обеспечение непосредственно от исходного автора (авторов) без каких-либо посредников, точно так, как задумал автор (авторы).
Что такое файл AppImage?
AppImage представляет собой файл ISO 9660 со сжатием zisofs, содержащий минимальный AppDir (каталог, содержащий приложение и все файлы, необходимые для его запуска, которые не являются частью целевых базовых операционных систем) и крошечный исполняемый файл среды выполнения, встроенный в его заголовок. . Следовательно, AppImage — это и файл ISO 9660 (который вы можете смонтировать и изучить), и исполняемый файл ELF (который вы можете выполнить).
Когда вы запускаете AppImage, крошечная встроенная среда выполнения монтирует файл ISO и выполняет содержащееся в нем приложение.
Минимальный AppImage потенциально может выглядеть так:
———————————————————- | | | | ELF | ISO9660 zisofs compressed data containing | | embedded | AppRun | | in ISO9660 | .DirIcon | | header | SomeAppFile | | | | ———————————————————
- AppRun выполняется ли бинарная шляпа при запуске AppImage
- .DirIcon содержит значок PNG размером 48×48 пикселей, который используется для AppImage
- SomeAppFile может быть какой-то случайный файл, который требуется приложению для запуска
Однако, чтобы обеспечить автоматическую генерацию, обработку и более богатые метаданные, формат AppImage следует несколько более сложному соглашению:
———————————————————- | | | | ELF | ISO9660 zisofs compressed data containing | | embedded | AppRun | | in ISO9660 | appname.desktop | | header | usr/bin/appname | | | usr/lib/libname.so.0 | | | usr/share/icons/*/48×48/apps/iconname.png | | | usr/share/appname/somehelperfile | | | .DirIcon | | | | ———————————————————
- ELF, встроенный в заголовок ISO9660, всегда выполняет файл, вызываемый AppRun внутри файла ISO9660.
- Файл AppRun внутри файла ISO9660 не является фактическим исполняемым файлом, а представляет собой крошечный вспомогательный двоичный файл, который находит и выполняет фактическое приложение. Общие файлы AppRun были реализованы в bash и C как части AppImageKit. Версия C обычно предпочтительнее, поскольку она быстрее и более переносима.
- AppRun обычно не содержит жестко запрограммированной информации о приложении, а извлекает ее из файла appname.desktop , следующего за спецификацией файла рабочего стола. Минимальный appname.desktop файл, достаточный для AppImage, должен содержать
[Запись рабочего стола] Name=AppName Exec=appname Icon=iconname
Обратите внимание, что формат AppImage был задуман для облегчения преобразования пакетов deb и rpm в формат AppImage с минимальными ручными усилиями. Следовательно, он содержит некоторые соглашения в дополнение к тем, которые указаны в формате AppDir, с которыми он совместим в той степени, в которой неупакованный AppImage может использоваться в качестве AppDir с ROX Filer.
Создание образов приложений
AppImageKit
Формат AppImage дополняется набором инструментов под названием AppImageKit, которые обеспечивают конкретную реализацию идей, выраженных в формате, и могут значительно упростить работу с AppImage.
В настоящее время AppImageKit содержит (среди прочего)
- create-appdir , инструмент командной строки, работающий в Ubuntu, который превращает упакованное программное обеспечение в AppDirs. Этот инструмент можно использовать для полуавтоматической подготовки AppDirs, которые можно использовать в качестве входных данных для AppImageAssistant. Обратите внимание, что хотя create-appdir был написан для Ubuntu, он также должен работать в Debian и может быть перенесен в другие дистрибутивы, а затем с использованием соответствующих менеджеров пакетов вместо apt-get.
- AppImageAssistant , приложение с графическим интерфейсом, которое превращает AppDir в AppImage.
- AppRun — исполняемый файл, который находит и выполняет приложение, содержащееся в AppImage. create-appdir автоматически встраивает AppRun в созданные AppDirs.
- runtime — крошечный двоичный файл ELF, встроенный в заголовок каждого AppImage. AppImageKit автоматически встраивает среду выполнения в создаваемые AppImages.
AppImageKit также содержит дополнительные инструменты и помощники.
Общий рабочий процесс создания AppImage включает следующие шаги:
- Соберите подходящие двоичные файлы. Если приложение уже скомпилировано, вы можете использовать существующие двоичные файлы (например, содержащиеся в архивах .tar.gz, deb или rpm). Обратите внимание, что двоичные файлы не должны быть скомпилированы в более новых дистрибутивах, чем те, на которые вы ориентируетесь. Другими словами, если вы ориентируетесь на Ubuntu 9.10, вам не следует использовать двоичные файлы, скомпилированные на Ubuntu 10.04.
- Соберите подходящие двоичные файлы всех зависимостей, которые не являются частью базовых операционных систем, на которые вы ориентируетесь. Например, если вы ориентируетесь на Ubuntu, Fedora и openSUSE, вам необходимо собрать все библиотеки и другие зависимости, необходимые для запуска вашего приложения, которые не являются частью Ubuntu, Fedora и openSUSE.
- Создайте рабочий AppDir из ваших двоичных файлов. Работающий AppImage запускает ваше приложение, когда вы запускаете его AppRun файл.
- Превратите свой AppDir в AppImage. Это сжимает содержимое вашего AppDir в один самомонтирующийся и самоисполняемый файл.
- Протестируйте свой AppImage на всех базовых операционных системах, на которые вы ориентируетесь. Это важный шаг, который нельзя пропускать. Тонкие различия в дистрибутивах делают это обязательным. Хотя в большинстве случаев можно создавать AppImages, которые работают в различных дистрибутивах, это не происходит автоматически, а требует тщательной ручной настройки.
Хотя теоретически можно было бы выполнить все эти шаги вручную, AppImageKit содержит инструменты, которые значительно упрощают задачи.
В большинстве случаев программное обеспечение, которое вы хотите упаковать в виде AppImage, уже упаковано для одного из широко используемых дистрибутивов. На момент написания этой статьи большая часть программного обеспечения была доступна для Ubuntu (включая программное обеспечение в личных архивах пакетов, PPA) и других репозиториев. Если ваше приложение там уже доступно (а есть вероятность), то создать AppImage с помощью инструментов, содержащихся в AppImageKit, особенно просто.
- Запустите версию Ubuntu, на которую вы ориентируетесь, или более старую версию. Не запускайте более новую версию Ubuntu, чем та, на которую вы ориентируетесь, иначе ваш AppImage, скорее всего, не будет работать в целевой версии. Рекомендуется запускать с официальной системы Ubuntu Live CD (или Live USB), поскольку она гарантированно находится в известном состоянии по умолчанию.
- Если ваше программное обеспечение доступно в репозитории PPA или другом стороннем репозитории, добавьте репозиторий в систему (путем редактирования /etc/apt/sources.list или с помощью add-apt-repository ).
- Запустите sudo apt-get update , чтобы обновить информацию о пакете.
- Запустите create-appimage . Например, если вы хотите создать AppImage для gnubik , запустите create-appimage gnubik . Это похоже на бег apt-get install gnubik ; однако вместо установки приложения в вашу систему он создает AppImage вашего приложения. Обратите внимание, что AppImage содержит gnubik.desktop и AppRun .
Примечание
create-appimage автоматически извлекает зависимости, которые не являются частью вашей текущей установки операционной системы. Возможно, этого недостаточно для удовлетворения всех зависимостей, которые не являются частью всех целевых дистрибутивов. Следовательно, вам, возможно, придется вручную скопировать некоторые дополнительные зависимости в AppDir, пока он не запустится во всех целевых дистрибутивах.
Примечание
create-appimage автоматически исправляет двоичные файлы в вашем AppImage, так что абсолютный путь /usr заменяется относительным путем ././ (что просто означает «здесь»), что эффективно делает двоичные файлы перемещаемыми. Хотя этого достаточно для большинства приложений C/C++, этого может быть недостаточно для приложений, использующих некоторые фреймворки более высокого уровня, такие как Perl, Python, C# и т. д. В этом случае вам придется настраивать приложение вручную, пока оно не запустится из любой местонахождение («перемещаемое»).
Примечание
Если ваше приложение не запускается, когда вы дважды щелкаете AppRun файл, вам нужно сначала исправить это, прежде чем вы сможете перейти к созданию AppImage из AppDir. Команда strace может быть полезна для определения файлов, которые не могут быть найдены приложением (например, strace -eopen -f ./AppRun 2> find -type f . -exec sed -i -e ‘s|/usr|././|g’ <> ; ; cd — which заменяет все вхождения на /usr which ././ просто означает «здесь».
[Вход на рабочий стол] Имя=Мое Приложение Exec=myapp Значок = мое приложение
AppImage — портативные программы для Linux
Поскольку AppImage — это портативные программы многих интересует, как их всё таки установить в систему чтобы программой было удобно пользоваться. Файлы AppImage можно разместить в папках ~/Applications/ или ~/.local/bin/ или ~/bin/, а затем просто создать ярлык для удобного запуска. Разместить его можно в ~/.local/share/applications/, это папка в которой находятся локальные ярлыки пользователя. Например для Firefox в папке ~/bin/ ярлык будет выглядеть так:
[Desktop Entry]
Version=1.0
Name=Firefox
Comment=Start AppImage Firefox Browser
Exec=~/bin/Firefox-x86_64-20200413141725.AppImage
Icon=/usr/share/icons/hicolor/128×128/apps/firefox.png
Terminal=false
Type=Application
Где можно взять APPIMAGE?
На официальном сайте AppImage есть список программ, распространяемых таким образом. Небольшую коллекцию программ AppImage можно найти на этом сайте. Здесь находятся программы собранные их разработчиками и сторонними пользователями.
Источник: rucore.net