Почему существуют snap-пакеты - есть ли реальная необходимость?

Предположения

Честно говоря, я не знаю много о snap-пакетах - но это не имеет отношения к этому вопросу - см. Ниже. Я предполагаю, что система значительно отличается от существующей.

Имеет ли смысл изменение?

Есть ли реальная потребность, достаточно сильная? То есть - есть ли новый вариант использования, который достаточно важен для разработки нового формата, и связанная с ним инфраструктура?

Не было ли возможно изменить текущий метод, чтобы охватить также новые варианты использования?

Или я упускаю суть?

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

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

Итак, почему они существуют?


Предпосылки

Моя первая реакция была «Это не имеет смысла!»

Это похоже на ситуацию, когда На сайте физики кто-то спросил, несчастный, почему никто не обсуждает его блестящие новые идеи в ответах. Это сильно походило на идеи сумасшедшего; Так далеко от реальных физических знаний, что было трудно найти точку, чтобы даже начать. Я написал ответ, который не затрагивал его идеи одним словом, но объяснил, почему нельзя просто обсуждать предположения о сумасшедших идеях - не первый случай этого. Я думаю, что ответ на самом деле был удачным.

Если мои предположения были верны, этот случай похож.

Но тогда, может быть, нет - посмотрим.

13
задан 16 June 2016 в 08:10

2 ответа

Да, в этом есть реальная необходимость.

Необходимость в чем-то подобном существует с тех пор, как впервые одна программа зависела от другой.

Давайте проясним:

Управление зависимостями - это трудно .

Есть причина, по которой это называется зависимостями ада . Упаковочные системы, такие как RPM и Debian, были созданы с целью избежания ада зависимостей. Однако, кто-то должен заплатить за это:

  1. На Windows, где программы связывают свои зависимости, пользователь должен позаботиться об обновлениях (и о любых проблемах безопасности из-за их отсутствия). Если я хочу версию X чего-то для моего приложения, просто: я предоставляю его вместе с моим приложением. Как мне теперь справляться с обновлениями?
  2. На большинстве дистрибутивов Linux (следующих за Debian или Red Hat), где программа может зависеть от программного обеспечения из репозитория, программа из репозитория должна зависеть от программного обеспечения из репозитория. Если мне нужна версия X чего-то для моего приложения, и дистрибутив предоставляет X, просто: Я полагаюсь на это. А если нет? Тогда: ???
    • Добавление нескольких версий в дистрибутив увеличивает нагрузку на мейнтейнера
    • Потеря возможности использовать версию с зависимостями увеличивает нагрузку на разработчика
    • Потеря возможности использовать версию с зависимостями увеличивает нагрузку на разработчика

Потеря свободы в обоих случаях приводит к значительной потере свободы.

И вот тут появляются оснастки: они позволяют устройству включать версию X, а упаковочной системе управлять обновлениями. Кто платит за это? Пользователь:

  • требуя больше места.
  • подвергая их риску из-за небрежного девчонки, которая не перестраивает свои снапы при исправлении зависимости.

Какие преимущества я получаю взамен?

  • Помимо безопасности с помощью обновлений (о которых, честно говоря, не достаточно людей заботятся), мне не нужно беспокоиться о зависимостях с снапами. Слово в основном теряет смысл.
  • Помимо обновлений безопасности, разработчику программного обеспечения не нужно беспокоиться о том, чтобы заставить пользователей установить правильные зависимости.
18
ответ дан 16 June 2016 в 08:10

Одна из особенностей снимков, которая может быть полезна, - это возможность выбирать канал для разработчиков, которые предоставляют более одного канала, например релиз , кандидат , мастер и т. д.

Например, при нажатии кнопки Канал для nextcloud отобразится диалоговое окно на скриншоте ниже.

Другими сильными сторонами являются изоляция, неизменяемость и изолированность, которые контролируются контекстом политики безопасности , который позволяет определять разрешения для каждого приложения, также называемые «плагинами». например:

  • места чтения / записи
  • доступ к съемному хранилищу
  • страны, где снимок внесен в белый / черный список
  • доступ к сети
  • камера, принтер, джойстик, местоположение GPS
  • системные настройки
  • ... полный список интерфейсов привязки

Подход в некоторой степени имитирует пакеты приложений MacOS и изолированную программную среду приложений Android g с разрешениями и поставщиками / получателями контента.

ubuntu snap packages select channel

Теперь представьте, что вам нужно запустить дюжину приложений, каждое со своей собственной версией определенных библиотек, собственной версией среды выполнения Python / Ruby / NodeJS, и вы не хотите запускать в ад зависимостей и испортить или загрязнить ваши системные библиотеки, ваши системные модули Python / Node / Perl / Ruby и т. д.

Real-жизненные варианты использования

  • На raspberry pi 4 последняя версия PHP, доступная в репозиториях, - 7.3, и если вам случайно нужно запустить что-то, для чего требуется более высокая версия (например, более новая версия nextcloud ) тогда вам нужно будет найти способ сделать это в обход диспетчера пакетов ootb, который, в свою очередь, может нарушить работу других пакетов или вызвать нестабильность. Запуск nextcloud в качестве оснастки позволяет запускать нужную версию независимо от того, какие зависимости вы установили по умолчанию через системный менеджер пакетов. Кроме того, у оснастки есть возможность автообновления, что также может пригодиться.

  • вам необходимо одновременно запускать разные версии одного и того же веб-сервера, например, apache2, nginx или caddy, потому что у вас есть несколько приложений, каждое из которых требует наличия конкретная версия.

4
ответ дан 23 November 2019 в 03:57

Другие вопросы по тегам:

Похожие вопросы: