Snappy (система управления пакетами)

Snappy
Скриншот программы Snappy
Тип система управления пакетами
Разработчик Canonical Ltd.
Операционная система GNU/Linux
Репозиторий github.com/snapcore/
Лицензия GNU GPL 3
Сайт snapcraft.io (англ.)

Snappy — система развёртывания и управления пакетами, разработанная Canonical для Ubuntu. Пакет называется snap, утилита для управления — snapd, всё это работает на широком спектре дистрибутивов Linux и позволяет создавать дистрибутивно-независимые программы.

Функциональность

Пакеты snap — это переносимые приложения, работающие на большинстве дистрибутивов Linux. Это отличается от традиционных пакетных менеджеров типа apt или Yum, требующих адаптации приложения под каждый дистрибутив, вследствие чего обновление пакетов замедляется, например, LibreOffice в системе apt обновляется реже, чем на официальном сайте.[1][2]

Пакеты не зависят от какого-либо дистрибьютора приложений и могут быть установлены из любого источника и использованы в разработке upstream[англ.]. Во время развёртывания пакета snap установленный магазин приложений может служить источником обновлений, но не обязательно только он.

Разработчики могут использовать систему, чтобы создавать приложения для командной строки или демонов также как и обычные пользовательские приложения.[3][4] Приложения могут быть обновлены при помощи атомарных или дельта обновлений.[5][6][7]

В июне 2016 snapd был портирован на большинство дистрибутивов, тем самым открывая возможности использования пакетов snap на почти всех дистрибутивах.[8]

Snapcraft

Snapcraft — это утилита для разработчиков, позволяющая паковать свои программы в пакеты snap.[9]

.snap

Файл .snap представляет собой динамично подключаемый сжатый файл с файловой системой внутри (основана на squashfs) и метаданными в декларативном виде, которые интерпретируются системой при создании защищённой песочницы или контейнера.

Использование

Пакеты snap могут быть использованы в интернете вещей от пользовательских продуктов[10] до решений уровня предприятия.[11] Snappy включён в Ubuntu начиная с версии 16.04.

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

На сайте Snapcraft указано, что пакеты предоставляют им большие дистрибьюторы, типа Mozilla, Microsoft, Google. В репозитории есть такие продукты, как браузер Mozilla Firefox(firefox), Microsoft Azure (Azure CLI) и многие другие. В репозитории могут быть выложены разные версии, используемые в программе тестирования, например, для Firefox выложены версии ESR, стабильная, RC, бета, edge.

Доступ к файлам ограничен, например, для Firefox создаётся папка ~/snap/firefox/common/ для эмуляции домашней папки пользователя.

Критика

  • Разработчики Peek — утилиты для захвата экрана перестали поддерживать выпуск версий snap, отчасти из-за того, что текущая реализация песочницы не даёт возможностей записи экрана с Wayland;
  • Snappy до сих пор остаётся пакетным менеджером преимущественно для Ubuntu, например, в Arch Linux snapd давно не обновляется и даже удалён из стандартного репозитория;
  • Сборка пакета snap занимает больше времени, чем сборка в другое портативное приложение;
  • Использование платформы отличается от типовых инструментов системы, пользователю для начала требуется узнать про Snappy — многие пользуются стандартными средствами загрузки пакетов;
  • Центр приложений Ubuntu не даёт возможности использовать данные AppStream[англ.], заставляя добавлять метаданные отдельно;
  • Также общей проблемой всех переносимых пакетов является не только дополнительная компиляция, сборка и отдельный релиз, но и сборка зависимостей в пакет, если их много, следить за каждым сложно.[12]

См. также

  • Программа генерации переносного приложения[англ.]
  • Autopackage[англ.]
  • AppImage
  • flatpak
  • Zero Install[англ.]

Примечания

  1. Upgrading packaged Ubuntu application unreasonably involves upgrading entire OS (англ.). Launchpad (10 мая 2010). Дата обращения: 14 октября 2018. Архивировано 27 июля 2018 года.
  2. DebConf 14: QA with Linus Torvalds на YouTube, начиная с 9:41
  3. "Canonical unveils 6th LTS release of Ubuntu with 16.04". ubuntu blog (англ.). 2016-04-20. Архивировано 22 августа 2018. Дата обращения: 14 октября 2018.
  4. "В Ubuntu 16.04 обеспечена поддержка установки самодостаточных snap-пакетов". OpenNET. 2016-04-13. Архивировано 16 января 2018. Дата обращения: 14 октября 2018.
  5. Shuttleworth, Mark (2014-12-09). "Announcing Ubuntu Core, with snappy transactional updates!". Mark Shuttleworth blog (англ.). Архивировано 1 сентября 2018. Дата обращения: 14 октября 2018.
  6. Willis, Nathan (2015-01-28). "Ubuntu Core and Snappy". LWN.net (англ.). Архивировано 13 октября 2018. Дата обращения: 14 октября 2018.
  7. Vaughan-Nichols, Steven J. (2016-06-14). "Ubuntu Snap takes charge of Linux desktop and IoT software distribution". ZDnet (англ.). Архивировано 26 февраля 2018. Дата обращения: 14 октября 2018.
  8. "Universal "snap" packages launch on multiple Linux distros". Ubuntu blog (англ.). 2016-06-14. Архивировано 21 августа 2018. Дата обращения: 14 октября 2018.
  9. Snapcraft Developer (англ.). Дата обращения: 14 октября 2018. Архивировано 16 мая 2018 года.
  10. Vaughan-Nichols, Steven J. (2015-05-11). "Ubuntu jumps into Internet of Things with Acer, GE, and Microsoft". ZDnet (англ.). Архивировано 9 января 2017. Дата обращения: 14 октября 2018.
  11. "Snappy Core unlocks IoT value within the Dell Edge Gateway 5000 Series". Ubuntu blog (англ.). 2015-10-21. Архивировано 14 октября 2018. Дата обращения: 14 октября 2018.
  12. Snap support for Peek screen recorder discontinued (англ.). Reddit (25 марта 2018). Дата обращения: 14 октября 2018. Архивировано 28 марта 2018 года.
Перейти к шаблону «Пакетные менеджеры для Linux»
Пакетные менеджеры для Linux
dpkg
RPM
APT-RPM[англ.]
DNF
up2date[англ.]
urpmi (rpmdrake[англ.])
Yum
ZYpp
Встраиваемые системы
ipkg[англ.]
opkg[англ.]
Дистрибутиво-независимые
Остальные (доставка бинарных файлов)
Conary[англ.]
Entropy (см. Sabayon Linux)
netpkg
pacman
PiSi
ppm (см. Puppy Linux)
slackpkg
slapt-get
Swaret[англ.]
upkg (см. paldo)
Остальные (доставка исходных кодов)
Portage
sourcy (см. Source Mage)
Надстройки
Autopackage[англ.]
Listaller[англ.]
PackageKit (GNOME Software[англ.], Apper[англ.])
Zero Install[англ.]