Мне нравится идея Snap и я играл с ней на виртуальной машине Ubuntu.
Обзор Snapcraft
Snapcraft - это инструмент для сборки и упаковки, который поможет вам упаковать ваше программное обеспечение в одно мгновение. Это позволяет легко включать компоненты из разных источников и создавать технологии или решения. Ключевые идеи
Пакет .snap для системы Ubuntu Core содержит все ее зависимости. Это имеет несколько преимуществ по сравнению с традиционной обработкой зависимостей на основе deb или rpm, наиболее важным из которых является то, что разработчик всегда может быть уверен, что нет никаких регрессий, вызванных изменениями в системе под их приложением.
Snapcraft упрощает связывание этих зависимостей, позволяя указывать их как «части» в файле snapcraft.yaml. кусачий
Snappy Ubuntu Core - это новая версия Ubuntu с обновлениями транзакций - минимальный образ сервера с теми же библиотеками, что и в сегодняшней Ubuntu, но приложения предоставляются с помощью более простого механизма.
Приложения Snappy и само Ubuntu Core можно обновлять атомарно и при необходимости откатывать. Приложения также строго ограничены и помещены в «песочницу» для защиты ваших данных и системы.
На каких технологиях основана оснастка? Как выглядят архитектура и инструментарий? Зависит ли привязка от особенностей ядра Linux?
Я спрашиваю, потому что мне интересно, смогу ли я в будущем использовать такие же пакеты моментальных снимков также на macOS?
Пояснение после первого комментария:
Я знаю, что macOS и Ubuntu не совместимы в двоичном формате. Перекомпиляция необходима. Уже есть практически любой открытый исходный код для MacOS с Homebrew . Разработчик может разрабатывать на macOS и развертывать на Ubuntu, когда оснастка будет (в будущем) доступна для macOS.
источник
Ответы:
Да, благодаря стабильности интерфейса системного вызова Linux это возможно.
Одно из больших обязательств Линуса Торвальдса перед пользователями Linux заключается в том, что набор интерфейсов, предлагаемых ядром, стабилен. Многие люди не ценят ценность этого или то, насколько сложно быть лидером открытого проекта для достижения этой цели. Рассмотрим, например, насколько непредсказуемые изменения в API-интерфейсах GNOME! Когда вы слышите о том, что Линус активно участвует в списке рассылки, это происходит почти всегда, потому что некоторые коммиттеры ядра решили изменить такой интерфейс «потому что у них была лучшая идея». Линус говорит, что вы можете активно внедрять инновации ВНУТРИ ядра, но, пожалуйста, не ломайте приложения «пространства пользователя», которые зависят от существующих системных вызовов.
Вследствие этой стабильности другие ядра могут предлагать те же системные вызовы, что позволяет приложениям, созданным на Linux, работать на этих других ядрах.
Одним из примеров этого является проект Joyent Triton, который предлагает совместимые с Linux системные вызовы в контейнерах на SmartOS (потомок IllumOS, потомок Solaris).
Более широко известный пример - новая подсистема Linux в Windows .
Конечно, реальный вопрос состоит в том, сколько системных вызовов предлагается, и насколько они совместимы между собой. По крайней мере, на данный момент не существует другой среды, в которой имеются все необходимые системные вызовы, потому что используемые привязки являются относительно новыми и глубоко в том, как ядро думает о вещах, которыми оно управляет.
Но они обязательно придут со временем, и я думаю, что снимки, таким образом, будут использоваться в широком диапазоне контекстов.
Что очень круто, патчи приветствуются :)
источник
Пока я не могу найти информацию о macOS, это OMG! В статье об Ubuntu есть интересная цитата Марка Шаттлворта:
Если «правдоподобно» запустить его в Windows, я бы сказал, что то же самое для macOS, за исключением того, что Microsoft, похоже, сотрудничает с Canonical, что я не слышал о том, что делает Apple.
Документация по политике безопасности Snapbox и песочнице и записи Arch Wiki на snapd являются информативными:
Из Arch Wiki:
Из политики:
Хотя AppArmor и seccomp предназначены только для Linux, похоже, что ограничение можно сделать необязательным, поэтому мы можем это игнорировать. Затем есть использование devpts, cgroups и пространств имен mount. Если есть какие-либо блокировки, я думаю, что это будет для тех. Я не достаточно знаком с BSD, чтобы сказать, каковы эквиваленты.
Само
snapd
приложение написано на Go, что должно сделать его кросс-платформенным. Действительно, некоторые файлы имеют очень интересные цели сборки :osutil/group_other.go
:osutil/group_linux.go
:Похоже, что кто-то заинтересован в этом.
источник