Вопрос или проблема
Я только что прочитал статью Знакомьтесь с Etcher, стильным инструментом для записи образов USB в открытом доступе. В ней говорится о загрузке AppImage.
Да, Linux; пакеты для Linux распространяются в виде .appimage для 32-битных и 64-битных дистрибутивов и должны работать на всех основных Linux-дистрибутивах без каких-либо проблем. На данный момент команда не планирует предоставлять нативный установщик .deb (или .rpm).
Что такое AppImages? Как они отличаются от снаппаков?
Основная информация
Относительно установки
Я цитирую страницу проекта AppImage здесь:
AppImages можно скачивать и запускать без установки или необходимости в правах администратора.
Сделать исполняемым
Вы можете сделать AppImage исполняемым следующим образом:
chmod a+x exampleName.AppImage
Запуск
Вы можете запустить AppImage следующим образом:
./exampleName.AppImage
Дополнительная информация
О AppImage
Вы можете найти некоторую общую информацию о AppImage здесь.
Я цитирую страницу проекта AppImage здесь:
Ключевая идея формата AppImage — одно приложение = один файл. Каждый
AppImage содержит приложение и все файлы, необходимые для его работы. Другими
словами, каждый AppImage не имеет зависимостей, кроме тех, что включены
в целевую базовую операционную систему.
Википедия добавляет
AppImage (и предшествующие ему klik и portablelinuxapps) не
устанавливают программное обеспечение в традиционном смысле (т.е. они не
распределяют файлы по всей системе).Они используют один файл на приложение. Каждый из них автономный: он включает все библиотеки, от которых зависит приложение и которые не являются частью базовой системы. В этом отношении он похож на “виртуализацию приложений”. Можно использовать файл AppImage даже если они не суперпользователи, или они используют live CD. Файлы AppImage часто проще, чем компиляция и установка приложения, так как фактическая установка не производится. Файл AppImage — это сжатый образ, который временно монтируется для доступа к программе, но не требует извлечения программы или изменения базы системы.
Файл README.md
из проекта AppImageKit-project предлагает множество дополнительных информации, таких как случаи использования, решаемое пространство и цели.
Случаи использования
-
Как пользователь, я хочу зайти на страницу загрузки, скачать приложение от оригинального разработчика и запустить его на своей системе Linux так же, как поступил бы с приложением для Windows или Mac.
-
Как тестер, я хочу иметь возможность получить последнюю экспериментальную версию приложения с сервера постоянной сборки и протестировать его на своей системе, не нуждаясь в компиляции и без беспокойства о том, что я могу испортить свою систему.
-
Как автор приложения или независимый разработчик программного обеспечения, я хочу предоставлять пакеты для систем на базе Linux так же, как делаю это для Windows и OS X без необходимости включать их в распространение и без необходимости собирать для множества различных дистрибутивов.
Цели
- Быть простым.
AppImage задуман как очень простой формат, который легко
понимать, создавать и управлять.
- Поддерживать совместимость двоичных файлов.
AppImage — это формат для распространения программного обеспечения в двоичном виде. Программное обеспечение, упакованное как AppImage, предназначено для максимальной двоичной совместимости со множеством систем. Потребность в (пере)компиляции программного обеспечения должна быть значительно уменьшена.
- Быть дистрибутивно-агностичным.
AppImage должен выполняться на всех базовых операционных системах (дистрибутивах), для которых он был создан (и для более поздних версий). Например, вы могли бы одновременно целиться на Ubuntu 9.10, openSUSE 11.2 и Fedora 13 (и более поздние версии), не производя и не поддерживая отдельные пакеты для каждого целевого определения.
- Устранять необходимость в установке.
AppImages содержат приложение в формате, который позволяет запускать его напрямую из архива, без необходимости предварительной установки. Это сравнимо с live CD. До появления live CD операционные системы сначала приходилось устанавливать, прежде чем их можно было использовать.
- Сохранять приложения сжатыми всё время.
Поскольку приложение остается упакованным всё время, оно никогда не распаковывается на жесткий диск. Компьютер распаковывает приложение на лету при его доступе. Поскольку распаковка быстрее чтения с жесткого диска на большинстве систем, это дает преимущество в скорости в дополнение к экономии места. Также время, необходимое для установки, полностью устраняется.
- Позволять размещать приложения где угодно.
AppImages “перемещаемы”, что позволяет пользователю хранить и выполнять их из любого местоположения (включая CD-ROM, DVD, сменные диски, USB-накопители).
- Делать приложения только для чтения.
Поскольку AppImages являются файлами только для чтения по своей задумке, пользователем можно быть уверенным, что приложение не изменит себя в ходе работы.
- Не требовать повторной компиляции.
AppImages должны создаваться из уже существующих двоичных файлов без необходимости повторной компиляции. Это значительно ускоряет процесс создания AppImage, поскольку не требуется участие компилятора. Это также позволяет сторонним организациям упаковывать закрытые приложения в AppImages. (Тем не менее, может быть полезно, если разработчики популярных приложений будут собирать исходный код специально для генерации AppImage.)
- Оставлять базовую операционную систему неизмененной.
Поскольку AppImages предназначены для работы на системах, которые не были специально подготовлены администратором, AppImages не могут требовать какой-либо необычной подготовки базовой ОС. Следовательно, они не могут полагаться на специальные дополнения ядра, модули ядра или какие-либо приложения, которых нет в целевых дистрибутивах по умолчанию.
- Не требовать root прав.
Поскольку AppImages предназначены для запуска конечными пользователями, они не должны требовать учетной записи администратора (root) для установки или использования. Они могут быть установлены администратором (например, в многопользовательских сценариях) по желанию.
Прежде чем вы сможете запустить AppImage, вам нужно сделать его исполняемым. Это функция безопасности в Linux. Существуют два основных способа сделать AppImage исполняемым:
С помощью графического интерфейса
или
С использованием командной строки
chmod a+x Some.Appimage
Теперь дважды щелкните по файлу, чтобы запустить его ИЛИ щелкните правой кнопкой мыши > Запуск
Базовая идея может показаться похожей между двумя системами, но между снаппами и AppImages есть некоторые различия в проектировании.
Некоторые “большие” из тех, которые приходят на ум, это:
-
Безопасность, с точки зрения конфайнмента: Пакеты Snap работают в песочнице, и им не разрешено выходить за её пределы и достигать других частей системы, которые они не должны трогать. Это более сильный защитный слой, который работает параллельно с системой разрешений. Очевидно, это немного раздражает, когда с ним приходится иметь дело в начале (и позже), но с точки зрения системного администрирования это именно то, что администратор хочет для своих пользователей.
-
Безопасность: Установка программного обеспечения, взятого из интернета, так безопасна, как и облизывание столбов на улице. Иногда ничего не происходит, иногда возникают серьёзные проблемы со здоровьем. У пакетов Snap есть свои собственные репозитории, которые контролируются компанией Canonical, как и обычные стандартные репозитории Ubuntu. Вы можете продолжать и устанавливать
.deb
файлы из интернета, но это будет ваш выбор, а не проблема проектирования. -
Установка: AppImages предназначены для эквивалента “портативных исполняемых файлов Windows”. Все библиотеки автономны, и любой пользователь может просто загрузить и выполнить один из них. С другой стороны, пакеты
snap
— это полноценные пакеты, и они должны быть установлены (отroot
, или сsudo
) через соответствующий менеджер пакетов (snap install tic-tac-toe
вызывает ошибку: требуетсяsudo
!) -
Удаление: Чтобы удалить пакет snap, необходимо использовать менеджер пакетов
snap remove ...
с правами, необходимыми для этого. AppImages, с другой стороны, просто “там”. Так что любой пользователь не хочет этот AppImage? Он/она просто удаляет файл, и он исчезает.
Хотя я настоятельно советую быть осторожным при использовании AppImages, я лично использую некоторые из них сам.
Я нахожу их особенно полезными на своей рабочей системе, где у меня нет доступа root
(только у администратора), но мне нужна последняя версия конкретного программного обеспечения, которую, к счастью, разработчик предоставил в форме Appimage.
Я немного боюсь, что в них действительно может содержаться плохой код, поэтому я проверил по возможности идентичность издателя. Я не уверен на 100%, что это программное обеспечение безвредное, но я сделал всё, что мог.
AppImages требуют FUSE для работы. Filesystem in Userspace (FUSE) — это система, которая позволяет пользователям без root монтировать файловые системы.
Установка FUSE
Многие дистрибутивы имеют рабочую настройку FUSE “из коробки”. Однако, если она у вас не работает, возможно, потребуется установить и настроить FUSE вручную.
Например, в Ubuntu:
sudo apt-get install fuse
sudo modprobe fuse
sudo usermod -a -G fuse $USER
Например, в openSUSE:
sudo zypper install fuse
Резерв
Если вы не хотите устанавливать FUSE, вы можете либо монтировать, либо извлекать AppImage.
Чтобы смонтировать AppImage и запустить приложение, просто выполните
sudo mount -o loop Some.AppImage /mnt
/mnt/AppRun
Если это не сработает, у вас может быть экспериментальный тип 2 AppImage. Они требуют, чтобы вы передавали -o offset=...
в команду mount
. Запустите AppImage с --appimage-offset
, чтобы узнать правильное значение для смещения.
В то время как snap фокусируется только на Ubuntu, AppImage является кросс-дистрибутивным и также работает на Fedora, Debian, OpenSUSE, CentOS и т.д.
AppImage не требует поддержки среды выполнения или инфраструктуры от дистрибутива Linux и поэтому работает практически везде. Он позволяет авторам приложений напрямую доставлять свое программное обеспечение пользователям Linux, как это делается для Windows и OS X; без Canonical или какого-либо другого “посредника” между автором программного обеспечения и конечным пользователем.
Если приложение предоставлено в формате AppImage, пользователь может зайти на сайт оригинального автора, чтобы загрузить его, например, MuseScore с https://musescore.org/en/download. Сделайте AppImage исполняемым (либо с помощью файлового менеджера, либо chmod a+x ./yourAppImage
), после чего вы сможете запустить приложение, просто дважды щелкнув по нему.
Ни один из приведенных выше ответов не помог мне, потому что ни один из них не показывал, как установить AppImage. Под установкой я обычно понимаю: разместить исполняемый файл там, где обычно хранятся исполняемые файлы на диске, и сделать его доступным через меню приложений.
На примере Arduino IDE:
- Сделайте AppImage исполняемым
chmod +x ./arduino-ide_nightly-20230209_Linux_64bit.AppImage
- Переместите его в директорию Applications:
Цитируя документацию AppImage:
Важный момент о формате AppImage — вы можете хранить файлы AppImage там, где хотите. […] Если не хотите оставлять их в $HOME/Downloads, тогда $HOME/Applications — хороший выбор. Многие сторонние инструменты (особенно те, которые занимаются интеграцией рабочего стола) используют это местоположение также. Другие опции включают $HOME/.local/bin и $HOME/bin, которые особенно полезны для CLI-инструментов.
mv arduino-ide_nightly-20230209_Linux_64bit.AppImage ~/Applications/
- Добавьте его в меню приложений:
Для этого нам нужно добавить Desktop Entry (подробнее здесь)
touch ~/.local/share/applications/arduino-ide.desktop
Откройте его в своем любимом текстовом редакторе и добавьте настройки, похожие на это:
[Desktop Entry]
Version=1.0
Name=Arduino IDE
Exec=/home/piotrek/Applications/arduino-ide_nightly-20230209_Linux_64bit.AppImage
Terminal=false
Type=Application
Categories=Utility;Development;
Просто не забудьте изменить “Exec”, чтобы указать место, где хранится ваш AppImage.
- Сделайте его исполняемым
chmod +x ~/.local/share/applications/arduino-ide.desktop
На этом этапе ваше приложение должно появиться в меню приложений.
Если вы используете KDE, возможно, вам придется щелкнуть правой кнопкой мыши на значке меню приложений на панели задач, выбрать “Редактировать приложения” и просто нажать “Сохранить”. KDE затем обновит свой кэш, и приложение появится в меню.
Если вы используете GNOME, выполните gsettings reset org.gnome.shell app-picker-layout
для обновления списка (или войдите/выйдите из системы)
Теперь AppImageLauncher делает его действительным простым и удобным для запуска/создания файла рабочего стола. Попробуйте его
После установки вы захотите подключить его к меню рабочего стола.
Чтобы быстро интегрировать его в меню рабочего стола, можно использовать один хитрый трюк, чтобы загрузить более старый репозиторий Debian (при условии, что старая версия находится в репозитории), например,
$ sudo apt-get install digikam
После этого щелкните правой кнопкой мыши по значку меню и выберите настроить...
.
(Это так выглядит в Cinnamon. Ваш рабочий стол может выглядеть иначе.)
После этого откройте редактор меню
.
Найдите приложение и отредактируйте его свойства, обновив “Команду:”. Измените ее на путь к вашему новому файлу AppImage.
(!! Это оставляет старую версию на вашем диске, тратя место, и есть способы сделать это чище, но это действительно быстро для того, чтобы ваше новое AppImage заработало из меню.)
…Теперь, чтобы очистить это:
Вам нужно удалить старый пакет, но при этом сохранить его файлы рабочего стола и значков.
-
Найдите все файлы робочих столов digikam. Один из способов найти их — использовать
locate
:$ locate digikam.desktop
/usr/share/applications/org.kde.digikam.desktop
~/.local/share/applications/org.kde.digikam.desktop
Первый из них — ваш системный по умолчанию (для всех пользователей), второй — только для вас. Второй (местный) обычно перекрывает первый, если они оба существуют.
Кроме того, вам не нужны оба. Таким образом, если вы хотите, вы можете удалить локальный и полагаться только на системный. Это проще для поддержания порядка.
Самый простой способ исправить это — это перемещение, которое перезаписывает следующим образом:
$ cd /usr/share/applications
$ sudo mv ~/.local/share/applications/org.kde.digikam.desktop .
-
Далее нужно переименовать этот файл, чтобы пакетный очиститель не удалял его, когда вы запустите его позже. Обратите внимание: как только вы сохраните ваши изменения или изменения в файле рабочего стола, меню автоматически найдет ваши изменения и обновится.
$ sudo mv org.kde.digikam.desktop org.kde.digikam.appimage.desktop
-
Теперь откройте его, чтобы найти название значка, который он использует (на который указывает):
$ sudo grep Icon org.kde.digikam.appimage.desktop # Обратите внимание на заглавные ‘I’
Icon=digikam -
Теперь найдите связанные файлы значков
$ locate digikam | grep icons
/usr/share/icons/hicolor/128×128/apps/digikam.png
/usr/share/icons/hicolor/16×16/apps/digikam.png
/usr/share/icons/hicolor/22×22/apps/digikam.png
/usr/share/icons/hicolor/256×256/apps/digikam.png
/usr/share/icons/hicolor/32×32/apps/digikam.png
/usr/share/icons/hicolor/48×48/apps/digikam.png
/usr/share/icons/hicolor/64×64/apps/digikam.png
/usr/share/icons/hicolor/scalable/apps/digikam.svgz
/usr/share/icons/oxygen/base/128×128/apps/digikam.png
/usr/share/icons/oxygen/base/16×16/apps/digikam.png
/usr/share/icons/oxygen/base/22×22/apps/digikam.png
/usr/share/icons/oxygen/base/256×256/apps/digikam.png
/usr/share/icons/oxygen/base/32×32/apps/digikam.png
/usr/share/icons/oxygen/base/48×48/apps/digikam.png
/usr/share/icons/oxygen/base/64×64/apps/digikam.png
/var/lib/app-info/icons/debian-buster-main/48×48/digikam_digikam.png
/var/lib/app-info/icons/debian-buster-main/64×64/digikam_digikam.png
Те, которые вас интересуют, находятся в дереве /usr/share/icons/
.
Переименование этих файлов сложно. Проще просто переименовать всё дерево (чтобы сохранить его), удалить, а затем вернуть дерево обратно, когда закончите.
$ cd /usr/share
$ sudo mv icons icons~ # сохранить дерево значков
$ sudo apt-get purge digikam && sudo mv icons~ icons #удалить и восстановить дерево
.
Ответ или решение
Что такое AppImage?
Теория:
AppImage – это формат пакетов программного обеспечения, который позволяет пользователям Linux запускать приложения без их установки. Он был разработан с целью облегчения дистрибуции приложений на разных дистрибутивах Linux. Вся программа и необходимые библиотеки пакуются в один исполняемый файл, что устраняет необходимость в управлении зависимостями. Основная идея – "одно приложение = один файл", где каждый AppImage содержит само приложение и все необходимые для его работы файлы, кроме тех, что уже включены в целевую операционную систему.
Пример:
Например, если разработчик создает графическое приложение для редактирования изображений и решает предоставить его в формате AppImage, пользователь сможет скачать один файл, сделать его исполняемым и тут же запустить без необходимости устанавливать дополнительные пакеты или менять системные настройки.
Применение:
Чтобы использовать AppImage, выполните следующие шаги:
-
Скачивание: Найдите и скачайте файл с расширением
.AppImage
с официального сайта приложения или надежного источника. -
Придание прав на исполнение:
Откройте терминал и перейдите в директорию, куда вы скачали файл. Затем выполните команду:chmod a+x имя_файла.AppImage
Это придаст ему необходимые права на исполнение.
-
Запуск: После того как файл стал исполняемым, вы можете запустить его, двойным кликом в графической оболочке, если ваш файловый менеджер это позволяет, либо через командную строку:
./имя_файла.AppImage
Сравнение с другими пакетными системами, такими как Snap:
AppImage отличается от других систем упаковки вроде Snap своим подходом. Snap-пакеты разработаны для использования системы Canonical и обеспечивают более высокий уровень безопасности за счет песочницы (sandbox), которая ограничивает взаимодействие приложения с остальной системой. Snap требует установки через специальный менеджер пакетов и работает в изолированной среде, что снижает риск воздействия возможных уязвимостей.
С другой стороны, AppImage не требует установки в традиционном смысле, и для запуска приложения не нужны права суперпользователя. Это позволяет пользователям скачивать и запускать приложения напрямую, как если бы это был исполняемый файл в Windows. Однако стоит учитывать, что в силу этого подхода безопасность AppImage зависит от источника, с которого скачан файл, и от надежности автора приложения.
Заключение:
AppImage представляет собой удобный и универсально поддерживаемый формат, который позволяет облегчить работу с приложениями в Linux, особенно когда речь идет о необходимости протестировать последние версии ПО без долгих настроек и установки пакетов. Однако пользователи должны быть осторожны и выбирать только проверенные источники для скачивания AppImage-файлов, чтобы избежать потенциальных угроз безопасности.
Подводя итог, AppImage – это мощный инструмент для пользователей Linux, позволяющий быстро и удобно работать с приложениями, сохраняя при этом простоту управления и совместимость с различными дистрибуциями.