Авторские статьи

Будущее Убунту со Snappy.


Canonical объявила, что в будущем Snappy заменит apt на всех версиях Ubuntu. Новая модель обновления обещает бо́льшую стабильность и безопасность для системы и приложений. Snappy уже сейчас используется в Ubuntu Core, минималистичная версия для облаков, мобильных устройств и встраиваемых систем. Следующая цель - Ubuntu Desktop Next. Этот дистрибутив создан специально для обкатки новых, радикальных технологий, таких как дисплейный сервер Mir и оболочка Unity 8. И вот в нём теперь snappy заменит apt.

Чтобы лучше понять о чём идёт речь советую прочесть статью Модель транзакционного обновления Snappy. Кратко напомню, что Canonical решила отойти от парадигмы "прикладной софт не отличим от системного". Для Snappy система и софт раздельные понятия и для этого под систему будет 2 раздела, доступных на чтение всем остальным. Эти два раздела System-a/b и позволяют механизм отката (rollback). В свежей системе раздел system-a будет занят системой, а system-b будет пустым, ибо отформатирован. После первого обновления системы через snappy update оба раздела system-a/b будут содержать образ системы, только разных версий. "Snappy update" не только производит обновление системы в другой раздел, но и "переключается" между ними, делая текущим то один, то другой. Это то что касается системы, а вот что касается прикладного софта:

  • Каждый snappy пакет ставится в свой каталог. Snappy FHS (Filesystem Hierarchy Standard - стандарт иерархии файловой системы) отводит каждой программе (и её версиям) /apps/программа/версия/
  • Snappy пакеты никогда не перезаписывают файлы других пакетов или старые файлы своего же пакета ранней версии.
  • Snappy пакет может лишь читать свой каталог и писать в специальное место, доступное для записи. За этим следит AppArmor через свои профиля в обязательном режиме enforce.

Сейчас Убунту использует Advanced Packaging Tool (apt) для управления пакетами и это унаследовано от Debian. Snappy радикально меняет систему управления пакетами и это потребует перехода с пакетов Дебиан на свои пакеты Snappy. Это серьезное изменение, учитывая огромное количество пакетов, и пройдёт оно не быстро, навсегда отдаляя от репозиториев Дебиан. Многих напугает такой "раскол", но нас уверяют, что раскола нет и не будет. Просто вместо обычной синхронизации кодовой базы нового релиза Убунту с текущей кодовой базой Дебиан, будет создание snappy пакета на основе его эквивалента в Дебиан.

Snappy применяет другой подход в вопросах безопасности, содержимого пакета и метода обновления. Snappy изначально создавался для избавления Убунту на мобильных устройствах, с их меньшим быстродействием по сравнению с десктопами, от полного разрешения зависимостей (full dependency resolution) в пакетах. Но snappy хорош не только для мобильного сектора. Вот его плюсы:

  • Разделение. Snappy разделяет пользовательские файлы, конфигурационные настройки и данные, от кода приложений. Код приложений хранится на разделе, смонтированный только-на-чтение, для бо́льшей безопасности и стабильности. Это исключает подмену бинарников и делает процесс обновления предсказуемым.
  • Защита. Пользовательские настройки программ автоматически бакапятся во время обновлений или откатов. Это исключает риск для пользователей.
  • Атомарность. Пакеты snappy являются автономными или самодостаточными (self-contained). Все зависимости приложения идут вместе с ним. Apt полагается на разрешение зависимостей и доустанавливает требуемые пакеты во время установки приложения. Snappy идёт другим путём и даёт лёгкую возможность поставить разные версии приложения и сделать работу приложения более стабильным и независящим от зависимостей. Извините за каламбур. Пла́той такого решения будет более занятое дисковое пространство.
  • Микро. Snappy использует при обновлении системы дельты между образами (delta image-based update system), что уже позволяет в мобильной сфере с её ограничениями пропускной способности сети и размерами локальных хранилищ быстро и легко обновляться Ubuntu Phone. Но маленькие обновления пригодятся и в других секторах: десктопы, сервера, облака и т.д.
  • Стабильность. Главное что нарушает работу приложения - изменение кода. Часто изменения в библиотеках ломают работу программы. Snappy изолирует программу от подобных изменений, поскольку 1) программа идёт со своими зависимостями и 2) пакеты обновляются через серию дельт образов и ничего не удаляется. Все версии доступны пользователю и есть возможность откатиться к версии где-всё-работало.
  • Безопасность. Snappy улучшает общую безопасность системы с помощью AppArmor и цифровых подписей. Цифровые подписи гарантируют, что пакет не был модифицирован после выпуска. AppArmor следит за соблюдением программы своего поведения в системе и предотвращает вред или чтение защищённой информации.
  • Чаще новое. Убунту - не rolling дистрибутив. Прикладной софт в основе своей не обновляется в рамках релиза Убунту, кроме случаев латания дыр. Чтобы получать новые версии программы многие добавляют к официальным репозиториям нужный репозиторий PPA. Но из-за чего так всё сложно с прикладным софтом сторонних разработчиков? Дело в том, что в deb пакете кроме бинарников есть maintainer script, которые выполняют команды под root. Майнтейнеру пакета всё нужно проверить при добавлении софта в официальный репозиторий. Обновился софт? Нужно всё повторить заново. Чтобы автоматически одобрять тысячи новых программ и ускорить их появление у пользователей сделано следующее. Если программа заявит и будет строго работать в затребованных рамках политики безопасности, то она будет одобрена автоматом. А проконтролировать её поведение поручено AppArmor. Если программа вздумает отклониться от заявленных ею же рамках, то она не сможет работать в системе. Политики безопасности + AppArmor = Автоматическое одобрение = Быстрое появление в официальных репозиториях.

Майкл Холл (Michael Hall) из Canonical дал ответы на вопросы на портале Reddit.

Будет ли всё в Убунту основываться на snappy вместо deb?

В конечном итоге, да. Но системные образы и даже некоторые приложения в snappy пакете будут созданы из deb.

Что произойдёт после Ubuntu 16.04, подразумевая что Mir и Unity 8 будут использоваться по умолчанию? Будет две ветки? Одна с пакетами click, а другая с deb?
Да, это в планах, но детали будут ясны после Ubuntu Online Summit.

Убунту отдаляется от dpkg и apt? Что это означает для отношений с проектом Дебиан?
Наши системные образы по-прежнему делаются из deb и отношения с Дебиан никак не меняются.

Как snappy (или click) улучшают процесс обновления на десктопе? Он принесёт улучшения безопасности или конфиденциальности?
Пакеты snap более безопасны и софт из своего upstream может быть обновлён в любой момент без заморозки в релизе Убунту. Это даёт всем больше обновлённых и безопасных программ, чей upstream будет иметь больше контроля над его распределением среди пользователей.

Snappy = Click?
Snappy является эволюцией click и заменит его в мобильном секторе. Snappy на десктопе имеет имя Snappy Personal и будет являться в мобильном и десктопном секторе тем, чем Snappy Core является для облаков и IoT - базовым образом, обеспечивающим минимальную функциональность для старта.

Преимущества Snappy пакетов перед Click?

Snappy пакеты могут предоставлять платформы или сервисы, нужные другим snap пакетам. Click так не может. Инструмент Snappy может обновить системный образ, а для click нужен был отдельный инструмент.


Дериваты типа Kubuntu, Xubuntu ... должны тоже перейти на snappy?
Как они захотят, так и будет. Если захотят получить выгоду, то могут использовать snappy.

В сценариях будущего вы видите переезд PPA с деб на snappy?
С snappy PPA будут не нужны.

У меня всё не складывалось на рабочей машине с Ubuntu Desktop Next, но появление в ней snappy подталкивает меня усерднее решить возникшие проблемы и пощупать новую технологию собственноручно. Особенно момент с разными версиями одной и той же программы. Не наврал ли я? Может разные версии программ - это для механизма отката? Но об этом в следующей статье.

Дата последней правки: 2016-06-07 18:32:52

RSS vasilisc.com   


Разделы

Главная
Новости
Ворох бумаг
Видео Linux
Игры в Linux
Безопасность
Статьи об Astra Linux
Статьи о FreeBSD
Статьи об Ubuntu
Статьи о Snappy
Статьи об Ubuntu Phone
Статьи о Kubuntu
Статьи о Xubuntu
Статьи о Lubuntu
Статьи об Open Source
Карта сайта