В операционной системе Windows мы довольно часто используем портативные программы. Это программы которые не требуют установки, сохраняют конфигурационные файлы при себе и запускаются независимо от установленных в системе компонентов. Их возможности могут быть очень полезны при создании флешек восстановления, тестирования нового программного обеспечения или просто установки новых программ, которых пока еще нет в репозиториях.

В Linux тоже есть-что то подобное. Вообще говоря, как портативную можно использовать любую программу, просто соберите программу из исходников, скачайте исполняемый файл в интернете или скиньте у знакомого и можете запускать из любой папки.

Но в таком случае остается одна проблема — это переносимость. Программа зависит от большого количества библиотек определенных версий и чтобы она заработала необходимо, чтобы все эти библиотеки были доступны в системе. Но в разных дистрибутивах, даже одни и те же библиотеки могут называться по разному. Поэтому для того чтобы реализовать портативные программы в Linux были придуманы специальные решения.

Одно из таких решений мы и рассмотрим сегодня. Это AppImage, проект основанный Elemantary и Portable Linux Apps. Одна программа состоит из одного файла образа, в котором находятся все необходимые для ее работы библиотеки, конфиги и сама программа. Правда остался один минус — конфигурация сохраняется по прежнему в домашней папке пользователя.

Фактически программа представляет собой ISO образ упакованный специальным способом и содержащий бит исполняемости. Для запуска программ не нужно ничего устанавливать достаточно скачать программу, сделать ее исполняемой и запускать. А благодаря тому, что все библиотеки находятся внутри образа, ее можно использовать в большинстве дистрибутивов Linux. Также такой способ подходит для запуска тестовых программ, которые требуют особые зависимости, но вы можете не засорять систему и просто скачать программу одним файлом.

Портативные программы в Linux

Небольшую коллекцию программ AppImage можно найти на сайте: 

На сайте есть поиск, поэтому вы можете попытаться найти нужную программу:

Чтобы скачать программу, вам нужно перейти на вкладку Files, затем выбрать подходящую версию и просто кликнуть по ней.

После окончания загрузки осталось сделать файл исполняемым с помощью следующей команды:

chmod u+x ~/Загрузки/Chromium-51.0.2684.0-x86_64.AppImage

И можно запускать выполнение:

~/Загрузки/Chromium-51.0.2684.0-x86_64.AppImage

Как видите программа полностью работает, и теперь ее можно записать на флешку и пробовать в другом дистрибутиве.

Но не только здесь можно найти программы в формате AppImage, некоторые разработчики сами распространяют свои продукты в этом формате, например известный видеоредактор OpenShot. Если вы хотите установить эту программу в своей системе и это не Ubuntu, вам придется очень сильно постараться. Поскольку пакеты готовы только для Ubuntu, а программа требует различные зависимости от разных пакетов Python до нужной версии Qt. Но с помощью AppImage вы можете установить программу в пару кликов.

Создание портативных программ в Linux

На самом деле в репозитории этих портативных программ не так уж много, и есть там только самые популярные, но что делать, если нужной вам программы там нет? Все просто, можно создать портативную программу Linux с помощью appimage самому, это очень легко. Для этого даже существуют инструменты с графическим интерфейсом.

В этой статье мы создадим AppImage образ для нового и очень перспективного браузера Vivaldi. Нам понадобятся два инструмента из AppImageKit — AppImageAssistant и AppDirAssisant. Первый предназначен для упаковки образа, а второй для сбора информации и файлов которые будут упакованы. Если кратко, то программа просканирует систему перед установкой программы, потом вы можете устанавливать нужную программу и ее зависимости любым способом, неважно будет то менеджер пакетов, ручная установка или сборка из исходников. Далее программа находит все измененные файлы, помещает их в специальную директорию и уже на основе той директории будет создан образ AppImage. Ну а теперь все по порядку.

Сначала скачаем нужное программное обеспечение:

  •  

    Затем еще раз Вперед:

    Сейчас программа выполняет сканирование системы, чтобы заметить все изменения во время установки программы:

    Как только сканирование будет завершено, можете переходить к установке программы любым удобным способом. Мы установим Vivaldi из скачанного с официального сайта RPM пакета, командой:

    sudo zypper install ~/Загрузки/vivaldi-stable-1.1.453.52-1.x86_64.rpm

    Но не забывайте, что неважно как вы устанавливаете программу.

    Как только установка будет завершена, вернитесь в окно программы AppDirAssistant и снова нажмите Вперед.

    Система будет еще раз просканирована, чтобы выявить все изменения:

    Затем возможно появится вот такое окно с выбором точки просмотра:

    Оставляем значение как есть и нажимаем Вперед. Программа автоматически соберет папку программы Vivaldi, сама определит ее название и подготовит все файлы:

    После завершения будет показано сообщение, что все готово:

    Папки приложений по умолчанию сохраняются в папку Desktop, на данном этапе, вы можете добавить к программе дополнительные библиотеки, просто скопировав их в под-паку папка_приложения.AppDir/usr/lib/

    Узнать какие библиотеки использует программа можно командой ldd, например для нашего Vivaldi:

    ldd /opt/vivaldi/vivaldi-bin | sed 's/=>.*//'|sed 's/t//'|sed 's/ (0x.*//'

    Конечно команда не применима к скриптам, нужно найти именно исполняемый файл.

    Теперь, когда все готово, можно переходить к сборке образа портативной программы AppImage. Для этого запустите утилиту AppImageAssistant:

    ./AppImageAssistant 0.9

    В первом окне мастера просто нажмите Вперед:

    Дальше выберите папку с только что созданной AppDir приложения:

    После этого, сразу же начнется упаковка образа:

    Затем, вы можете взять готовую программу в папке ~/Desctop, скопировать ее куда-нибудь и можно запустить:

    ~/.Vivaldi

    Как видите все работает. Можно скидывать программу на флешку и пользоваться в любой системе.

    Выводы

    Портативные программы Linux — это очень спорная технология. С одной стороны это очень удобно, потому что можно распространять софт поддерживаемый любым дистрибутивом, решается проблема с зависимостями, но с другой, такой способ распространения программ может повлечь за собой увеличение количества вирусов для Linux, ведь минимальное распространение вирусов обусловлено тем, что все программы устанавливаются из небольшого количества надежных и хорошо проверенных источников. А как вы считаете? Нужны ли Portable программы в Linux? Будете ими пользоваться? Нужно ли Losst создать свою библиотеку портативных программ для Linux? Напишите в комментариях!

    Источник: losst.ru